トランザクションログへの出力を停止したり開始したり
0.改訂履歴
- 2002.07.17 新規作成
1.はじめに
このドキュメントでは,Sybase SQL ServerおよびAdaptive Serverにおいて,トランザクションダンプを停止する手順を説明する.
2.トランザクションログの出力を停止する意味は?
- まず,トランザクションログの仕組みについて,理解する必要がある.
- SQL Serverでは,データ更新が行われると,トランザクションログに更新内容が書き込まれる.
- 書き込まれるエリアは,logsegmentというセグメント上になる.
- 「トランザクションログのダンプ」を行わない限り,logsegmentには更新ログデータが溜まっていく.
- logsegmentの領域が無くなったら,更新処理が出来なくなる.
- たとえば,大量のデータをbcpツールなどで等で挿入する場合,logsegmentの領域が不足し,データベースで更新処理が出来なくなることがある.
- よって,一時的にトランザクションログを取得しないモードに変更して,そのような問題を回避することが出来る.
3.トランザクションログの設定の条件
- トランザクションログの設定を行えるのは,次の権限のある人となる.
- saアカウント(システム管理者)
- dbo(データベース所有者)
- また,このオプションは「データベース」の状態の変更であり,サーバに影響しないため,SQL Serverの再起動は必要ない.
4.トランザクションログを切り捨てる設定にする
- isqlで接続し,ログを切り捨てる設定とする.
1> sp_dboption "user_db","trunc log on chkpt",true 2> go 'user_db' データベースに対してデータベース・オプション 'trunc log on chkpt' が OFF になりました。 変更されたデータベースで CHECKPOINT コマンドを実行してください。 (return status = 0) 1> checkpoint 2> go 1> |
- この設定を行うことで,チェックポイントが行われる都度,logsegmentに溜まったトランザクションログが消去される.
- ログを切り捨て(トランケート)すると,トランザクションダンプを行えなくなる.
- 詳細については「Sybaseのバックアップ」を参照のこと.
5.トランザクションログを切り捨てないように設定する
- 前述のパラメータと同様で,これをfalseに設定する.
1> sp_dboption "user_db","trunc log on chkpt",false 2> go 'user_db' データベースに対してデータベース・オプション 'trunc log on chkpt' が OFF になりました。 変更されたデータベースで CHECKPOINT コマンドを実行してください。 (return status = 0) 1> checkpoint 2> go 1> |