
ログファイルをサイズ上限を無制限にしておくと、どんどんサイズが大きくなってしまいますよね。かといってサイズの上限を決めておくと、そこに達したらそれ以上データを作成できなくなってしまいます。
ある程度のサイズになったら、または週に一度くらいで自動的にトランザクションログを切り捨てたいんですが、どのような方法がありますでしょうか?
既にかなりのサイズになっており、困ってます。
本にはログのバックアップを取ると良いとあったのですが、バックアップを取るということは領域の解放、ログファイルサイズの縮小にはならないんじゃないかと思い、有識者のみなさまに質問させていただくことにしました。みなさまおすすめの管理方法を教えてください。
P.S.
やはり、物理的にファイルを削除するのは難がありますでしょうか?
No.1ベストアンサー
- 回答日時:
>本にはログのバックアップを取ると良いとあったのですが、
>バックアップを取るということは領域の解放、
>ログファイルサイズの縮小にはならないんじゃないかと思い、
>有識者のみなさまに
>
うーーむ、まるで本の著者が有識者ではないような表現ですね...
ちなみに、私は有識者ではありませんが。
その本に書いてあるとおり、ログの最適な管理方法は
定期的にログをバックアップすることです。
> ログファイルサイズの縮小にはならないんじゃないかと思い
>
ログファイルを縮小することは必ずしもいいこととは限りません。
仮に、ログファイルを小さくしても、大きいトランザクションが
実行されれば、ログは自動拡張するわけです。この自動拡張がくせもの
で、拡張はデフォルトで 10% ずつなので、頻繁な拡張が発生すると、
無茶苦茶おそくなります。
なので、最大トランザクションに耐えられるよう、
あらかじめログを大きめにとっておくというのは、パフォーマンス上
やっておいたほうがよいことになります。
どうしても、小さく保っておきたい場合は、
・復旧モデルを「シンプル」
にし、かつデータベースのオプションで「自動圧縮」をチェックして
おきます。パフォーマンス上の弊害は前述のとおりです。
また、復旧モデルがシンプルの場合の弊害は、以下の堀川さんの記事が
参考になると思います。
特集: バックアップとリカバリの克服
http://www.sqlpassj.org/tokushu/backup/default.a …
また、どうしてもログを手動で縮小したい場合は、
Enterprise Manager で「すべてのタスク」メニューから「データベースの圧縮」
または
DBCC SHRINKFILE コマンドを使います。
以下も参考になると思います。
Re: トランザクションログの切捨て不能-2
http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_i …
松本崇博
Blog: http://blogs.sqlpassj.org/matu_tak/
アドバイスありがとうございます。本の著者の方が有識者ではないとは思っておりません。たぶん、文章の裏に根拠があるのだろう(もしくは私の読み違い)と思ったのですが、如何せん、私の今の知識ではそれがわからなかったため、有識者でご存知の方がいらっしゃれば、それを指摘してもらえるかもと思ったものです。
質問してからさらに調べたのですが、バックアップを取るときに最新のログのみ残して確定済のログを消すことでログファイルの増大を防ぎ、本当にログファイルを切捨て(縮小)するのは別のコマンドが必要のようですね。トランザクションログに関する文章をもっと読む必要を感じておりましたので、いろいろなページを紹介していただき、助かりました。参考のページを拝見してみます。
No.3
- 回答日時:
> バックアップを取るということは領域の解放、ログファイルサイズの縮小にはならないんじゃないか
逆に、バックアップを行わないと解放は行われません。
その本にはバックアップのコマンドとかは書いてないのでしょうか?
とりあえずBooks Onlineで、Backup Logの項目を調べてみるといいのでは?
アドバイスありがとうございます。BACKUPコマンドがあったので実行してみたのですが、物理ファイルのサイズを小さくするものではありませんでした。いろいろ調べた結果、DBCC SHRINKFILEをジョブで実行して定期的にサイズを小さくするのが一番希望に近いようなのですが、イレギュラーな方法をとっているのではないかと不安です。
No.2
- 回答日時:
ログの切り捨ては蓄積した変更履歴を放棄することのため
切捨て後は直ぐにデータベースのフルバックアップを取るようにします。
※自動復旧でロールフォワードされないため(変更履歴が反映されない)
BACKUP TRAN WITH NO_LOG
とかで一発切り捨てもできたような。
※誤字があるかも
>>物理的にファイルを削除
これはサーバが起動しなくなるような。
回答ありがとうございます。データベースは500MB程度なのにログが既に数GBに達していたため、かなり困っておりました。コマンド試してみます。物理的にファイルを削除は前任者の方がやられていたようで、なぜか無事だったようです。とはいえ今後データベースを預かる身としてはそれを続けていくのはかなり怖いので、きちんとしたコマンドを探しておりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLServerのトランザクションロ...
-
トランザクションログの切り捨...
-
トランザクションログファイル...
-
WindowsFirewallのログの保存先...
-
ログ ファイルはいっぱいです。...
-
一つのテーブルだけを復元(リス...
-
復旧中のデータベースについて
-
復元に異常に時間がかかる
-
ファイル内の文字を置きかえた...
-
videopad 無料版 アンインストール
-
複数データベースでのテーブル共有
-
Accessdでの「トランザクション...
-
postgresql についてです
-
SQL*Loaderのコミットポイント...
-
警察はスマホに保存した動画や...
-
【DB】同じトランザクション内...
-
エクセルのフィルタ抽出が固まる
-
PHPとSQLの連携に関する質問
-
SQL Server 2005のbcpについて
-
OUTLOOK2007でのデータ削除につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
期限切れのバックアップの削除
-
SQLServerのトランザクションロ...
-
ログファイルの圧縮がされずに...
-
ログ ファイルはいっぱいです。...
-
バックアップの容量と時間の見積り
-
トランザクションログの切り捨...
-
BACKUP DATABASE とINSERTが同...
-
XamppでインストールしたMySQL...
-
トランザクションログバックア...
-
LinuxでPHPからMysqlを...
-
以下のVBAについて
-
トランザクションログファイル...
-
バックアップ・・
-
バックアップについて
-
SQLサーバーのDBをArc...
-
AccessからMSDEへの移行
-
WindowsFirewallのログの保存先...
-
Oracle9i(Win)バックアップすべ...
-
ロリポップ
-
SQL-Server トランザクションロ...
おすすめ情報