• 締切済み

トランザクションログファイルが肥大化

トランザクションファイルが20Gに肥大化して、サーバのディスク容量を圧迫しています。 適正なログ容量で管理したいのですが方法がいまいちわかりません。ログ切捨てとか、ログ領域をデフォルテの自動拡張から容量指定にしたいと思っています。DBのメンテンスに関するサイトがあったら教えてください。

みんなの回答

回答No.1

 サイトはわかりませんが、自分はこうしているという説明でよければできます。  1.【データベースのバックアップ】でトランザクションログを選択し、「アクティブでないエントリをトランザクションログから削除」のオプションにチェックを入れて実行する。    2.【データベースの圧縮】の「ファイル圧縮」でログファイルを選択し、圧縮操作で「ページを圧縮後、ファイルから空き領域を切り詰める」を選択して実行する。  1.⇒2.の順で行う必要がありますが、どちらもスケジュール化できるので、ログの切捨てを自動化することも可能です。

関連するQ&A

  • トランザクションの肥大化

    Windows2003+SQL-Server2005でシステムを構築しておりますが、トランザクションログの肥大化に悩んでおります。 ファイルサイズが80Gb(空き容量88%)のDataBseを完全Backupすると300Gbを超えるサイズとなってしまいます。 トランザクションファイルのサイズが300Gbを超えておりますので、これが原因だと考えておりますが、定期的にトランザクションのBackupを実施しても全く(トランザクションFの)空き容量が減りません。 復旧モードを単純に変更してみたのですが、状況は変わらずトランザクションファイルがじりじり肥大化しています。 他のDBとのレプリケーションを実施しており、パブリッシャ側でDBの再構築を実施すると一気にトランザクションのサイズが増加するので、レプリケーションの設定を見直しておりますが、問題点を発見する事ができない状態です。 レプリケーションを含めDB動作には全く問題がないのですが、このままの状態では遠からずDisk容量不足が発生してしまいます。 何かお心当たりがございましたら是非ご教授頂きたく、よろしくお願い致します。

  • トランザクションログバックアップでTRNが肥大化します

    【環境】 OS:Windows2003Server Standard SP2 DB:SQLserver2000 8.0 ASPと連動したWEBシステムを構築していますが、保守計画のトランザクションバックアップで取ったTRNファイルが肥大化してしまいます。 よって トランザクションログバックアップジョブに時間が多大に掛かってしまい、その間トランザクション使用領域の切り捨てがされないので、領域が圧迫されてしまいます。 ※自動拡張は5%で設定してますが、自動拡張タイムアウトが頻発します トランザクションバックアップジョブは2分に1回ほどの割合で実行しています。毎時起きるわけではないのですが、1日に数回そのような現象が発生してしまい、その間トランザクションバックアップジョブは稼動し続け、かつ自動拡張タイムアウトでシステム負荷が異常に高くなります。 大変困っております。。 なにか対策がある方は是非教えていただきたいと思います。 また、同様の事例がある方がいらっしゃいましたら教えてください。 些細な情報、対策でも良いのでどうぞ宜しくお願い致します。

  • logファイルのファイル名と拡張子について・・・

    皆さんにお聞きしたいことがあるのですが。 よくサーバーなどの仕様によって、logファイルなどを直接指定するとそのまま閲覧が出来てしまうことがあるのですが、これらを防ぐ方法としてよく耳にするのが、分かりにくいファイル名にするとか、拡張子を.cgiなどに変えることによって閲覧は出来なくなるとの事ですが本当でしょうか? また、ファイル名と拡張子の変更で、どのくらいのセキュリティーがあるのでしょうか? やはり最善は、非公開領域にlogが来るようにするのがベストなのでしょうか?更に更にで申し訳ないのですが、非公開領域においた場合と、ファイル名拡張子を変更した場合と、公開領域のlogフォルダに認証を書けた場合と何が一番望ましいのですか? 変な質問で申し訳ないのですが、詳しい方おられましたら、教えていただけたら幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • Oracle8での表領域の開放について

    DWHで使用しているDB(Oracle8)についての質問です。 ユーザーオブジェクトを格納している非SYSTEM表領域が自動拡張の末がDisk容量を圧迫してきています。サーバーのDisk容量に余裕がなくデータファイルを追加することでの対策は打てません。 大容量のTABLEの作成や削除をしていたので実際に使用している容量は多くないはずなので、一度リフレッシュ(使っていない表領域を開放)したいのですが、Oracle8で可能でしょうか? 可能であれば手順についてもご教授いただきたく、宜しくお願い致します。

  • オフライン中のトランザクションについて

    表領域をオフラインにした場合、オフライン前に開始されたトランザクションは有効ですが、オフラインのまま、コミット、または、ロールバックして、表領域をオンラインにしても、整合がとれるのはなぜなのでしょうか。 コミットするか、ロールバックするかの情報はどこに保持してるのか疑問です。 (オフラインにしてから、ファイルをリネームし、 トランザクションをロールバックして、 ログをアーカイブし、DB再起動後に、ファイル名を戻して、 オンラインにすると、ちゃんとロールバックされています。 同じ操作で、コミットするとちゃんとコミットされています。 知っている方には当然なのでしょうが、私にとっては、不思議です) 詳しい方がみえましたらご教授お願いいたします。

  • REDOログファイルを移動したいのですが?

    Oracle8.1.6です。 増設アレイディスクの導入に伴い、オンラインREDOログファイルを、本体のディスクから増設アレイディスクに移動したいのですが(ドライブEとか)、どのようにしたらいいでしょうか? SQL Serverだと、デタッチ・アタッチとかで、トランザクションログファイルの 移動が出来るようですが、Oracleはどのようにしたらいいですか? よろしくお願いします。

  • SQLServer2000:データベース復元失敗

    SQLServer2000を使用しております。 別環境のデータベースのバックアップファイルを当該環境へ復元させたいと考えているのですが、 バックアップデータファイルを指定して復元を行ったところ、以下のダイアログが表示され、復元に失敗します。 "物理ファイルを拡張しようとした時に MODIFY FILEでオペレーティングエラー112(ディスクに十分な空き容量がありません。)が"発生しました RESTORE DATABASEが以上終了しました" 別環境のデータファイルは230M、トランザクションログファイルは11Gでした。 復元先のドライブの空き容量は17Gです。 十分に空き容量があると思われるのですが、なぜ上記のようなダイアログが出るのでしょうか。また、データファイルのみの復元ということは不可能なのでしょうか。 ※ トランザクションログファイルが肥大化している件につきましては、   ログの切捨て、ファイルの最大サイズの指定、及び復旧モデルも"シンプル"と修正する様対応する予定です。 上記の件につきまして、原因、または対応方法がお分かりになる方がいらっしゃいましたら、 ご教示のほど、何卒よろしくお願いいたします。

  • MovableTypeのlog.dbファイルの容量を小さくしたい

    現在「MovableType」でブログを運営しています。 先日レンタルサーバーより「log.db」の容量が500MBほどあり、全体のファイル制限を越えていると警告がありました。 技術も知識もない私としては、 現サーバのままで容量を少なくすべくどうすればよいか困惑中です。 取り急ぎ「log.db」の容量を小さくしたいのですが、 テキストエディッタでも開けません。 どのようにすれば容量を少なくできますでしょうか?

  • SQLServer2008R2 自動拡張について

    SQLServer2008R2で、DBとログに自動拡張の設定をした場合の パフォーマンス劣化について、質問いたします。 自動拡張すると、元の領域と拡張した領域がディスクの別々の場所に作成され、 ファイルが断片化した状態になると思うのですが、 これはデフラグを行うことで解消する、と考えてよいでしょうか。 また、データの追加・削除を繰り返すと、DBの中に 無駄な領域が増えると思いますが、これはSHRINKFILEを実行することで 解消しますか? 下記のような認識で、合っているでしょうか。 (1)データの追加・削除を繰り返し、DB領域が不足すると 自動拡張が行われる。 (2)自動拡張されたDBは、ファイルが断片化している。 また、DBをしばらく使うと、DB領域内でデータがまばらに入った状態になり、 パフォーマンスが劣化する。 (3)SHRINKFILEを実行することで、まばらになったデータを DB内の1箇所に集めて、無駄な領域を開放する。 (4)さらに、DBの物理ファイルがディスク上で断片化しているのを、 デフラグで解消する。 初心者のため、用語の使い方がおかしいかもしれず、申し訳ありませんが、 よろしくお願いいたします。

  • 分散トランザクションを開始できなかった

    [OSのVER]:2003server 同士 [SQLServerのVER]:SQLServer2000 StandardEdition SP3 はじめまして! 前のログ(http://www7.big.or.jp/~pinball/discus/sqls/26278.html)で でていたエラーメッセージ サーバー : メッセージ 7391、レベル 16、状態 1、プロシージャ [Microsoft][ODBC SQL Server Driver][SQL Server]OLE DB プロバイダ 'SQLOLEDB' は分散トランザクションを開始できなかったので、要求した操作は実行されませんでした。 [OLE/DB provider returned message: 指定されたトランザクション コーディネータに、新規トランザクションを参加できませんでした。] OLE DB エラー トレース [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。 と表示されます ビューや、MSDTC(http://support.microsoft.com/?scid=kb;ja;329332&spid=2852&sid=global) などすべてやってみましたがだめでした Enterprise Managerでリンクサーバーを設定して中身を確認する事もできました ビューでその別サーバーのDBを覗くこともできます ストアドでカーソルを使用しています DECLARE M_USER_CSR CURSOR FOR SELECT INPDATE FROM [別サーバ名].DB.dbo.xxxxxx WHERE INPDATE = @COMP_DATE -- システム更新日付比較 と、定義して FETCH NEXT FROM M_USER_CSR としたところで、エラーが表示されます 最初のフェッチではエラーがでず(一件目は正常に内容を取得してます) 二件目のフェッチでエラーがでます どのような解決方法がございますか? どうか教えてください よろしくお願いします ps:サーバー同士はドメイン管理されていません    ワークグループ管理のもと互いに信頼関係は結んでおります