各トランザクションログをデータベースに適用して、統合データベースをリカバリします。
前提条件
BACKUP DATABASE システム権限が必要です。
データベースとトランザクションログファイルのコピーを作成します。この手順では、データベースファイルは事前にバックアップされており、テープなどに保存されていることを想定しています。
テンポラリディレクトリを作成します。
データベース (.db) ファイルの最新のバックアップをテープからテンポラリディレクトリにリストアします。トランザクションログファイルはリストアしません。
テンポラリディレクトリで、次の処理を実行します。
データベースのバックアップコピーを開始します。
-a オプションを使用して、古いトランザクションログを適用します。
データベースを停止します。
現在のトランザクションログと -a オプションを使用してデータベースを起動し、トランザクションを適用してデータベースファイルを最新の状態に更新します。
データベースを停止します。
データベースをバックアップします。
データベースを運用ディレクトリにコピーします。
データベースを起動します。
新しいアクティビティは、すべて現行のトランザクションログに追加されます。
例
c:\dbdir\cons.db という名前の統合データベースファイル、トランザクションログファイル c:\dbdir\cons.log、トランザクションログミラーファイル d:\mirdir\cons.mlg があると想定します。
毎週実行するフルバックアップに加え、次のコマンドを使用してインクリメンタルバックアップを毎日実行しているものとします。
dbbackup -c "UID=DBA;PWD=sql" -r -n -t e:\backdir |
このコマンドは、トランザクションログ cons.log をディレクトリ e:\backdir にバックアップします。トランザクションログの名前は datexx.log (date はそのときの日付、xx はアルファベット順の次の英字) に変更され、新しいトランザクションログが作成されます。その後、ディレクトリ e:\backdir がサードパーティユーティリティを使用してバックアップされます。
ここでは、名前を変更したトランザクションログファイルを示すディレクトリを任意で指定して SQL Remote Message Agent (dbremote) を実行します。次に例を示します。
dbremote -c "UID=DBA;PWD=sql" c:\dbdir |
毎週実行しているバックアップの 3 日後に、ディスクブロック破損のためにデータベースファイルが破壊されてしまったと想定します。次の手順を実行します。
トランザクションログミラーファイル d:\mirdir\cons.mlg をバックアップします。
リカバリを実行するテンポラリディレクトリを作成します。この例では c:\recover というディレクトリを作成します。
データベースファイル cons.db の最新バックアップを c:\recover\cons.db にリストアします。
dbeng16 -a c:\dbdir\dateAA.log c:\recover\cons.db dbeng16 -a c:\dbdir\dateAB.log c:\recover\cons.db |
名前を変更したトランザクションログを、次の順序で適用します。
現在のトランザクションログ d:\mirdir\cons.log を、リカバリディレクトリにコピーし、c:\recover\cons.log を作成します。
dbeng16 c:\recover\cons.db |
次のコマンドを使用してデータベースを起動します。
データベースサーバを停止します。
リカバリされたデータベースとトランザクションログを c:\recover からバックアップします。
c:\recover から実際に使用する適切なディレクトリに、ファイルをコピーします。
c:\recover\cons.db を c:\dbdir\cons.db にコピーします。
c:\recover\cons.log を c:\dbdir\cons.log と d:\mirdir\cons.mlg にコピーします。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |