この文は、データベースとトランザクション・ログをバックアップするために使用します。
BACKUP DATABASE DIRECTORY backup-directory [ WAIT BEFORE START ] [ WAIT AFTER END ] [ DBFILE ONLY ] [ TRANSACTION LOG ONLY ] [ TRANSACTION LOG RENAME [ MATCH ] ] [ TRANSACTION LOG TRUNCATE ] [ ON EXISTING ERROR ] [ WITH COMMENT comment string ] [ HISTORY { ON | OFF } ] [ AUTO TUNE WRITERS { ON | OFF } ] [ WITH CHECKPOINT LOG { AUTO | COPY | NO COPY | RECOVER } ]
backup-directory : { string | variable }
BACKUP DATABASE TO archive-root [ WAIT BEFORE START ] [ WAIT AFTER END ] [ DBFILE ONLY ] [ TRANSACTION LOG ONLY ] [ TRANSACTION LOG RENAME [ MATCH ] ] [ TRANSACTION LOG TRUNCATE ] [ ATTENDED { ON | OFF } ] [ WITH COMMENT comment string ] [ HISTORY { ON | OFF } ] [ WITH CHECKPOINT LOG [ NO ] COPY ] [ MAX WRITE { number-of-writers | AUTO } ]
archive-root : { string | variable }
comment-string : string
number-of-writers : integer
DIRECTORY 句 バックアップ・ファイルを作成するディスク上のロケーション。データベース・サーバ起動時の現在のディレクトリを基準に指定します。このディレクトリが存在しない場合は作成されます。ディレクトリとして空の文字列を指定して、ログをコピーせずに名前を変更したり、トランケートすることができます。データベース・ミラーリングを使用している場合は、この句を使用しないでください。データベース・ミラーリングとトランザクション・ログ・ファイルを参照してください。
WAIT BEFORE START 句 この句を指定すると、データベースのバックアップ・コピーにはリカバリに必要な情報は含まれません。特に、各接続のロールバック・ログが空になります。
この句を指定してバックアップを実行すると、データベースのバックアップ・コピーを読み込み専用で開始し、検証できます。バックアップ・データベースの検証を有効にすることにより、ユーザがデータベースの追加コピーを作成することを防止できます。
WAIT AFTER END 句 この句は、トランザクション・ログの名前変更またはトランケートを行う場合に使用します。この句を指定すると、すべてのトランザクションが完了してから、ログの名前変更またはトランケートが行われます。この句が使用されている場合、バックアップは、開いているトランザクションを他の接続がコミットまたはロールバックするまで待機します。
DBFILE ONLY 句 この句は、メイン・データベース・ファイルと関連する DB 領域のバックアップ・コピーを作成するのに使用されます。トランザクション・ログはコピーされません。DBFILE ONLY 句は、TRANSACTION LOG RENAME 句または TRANSACTION LOG TRUNCATE 句と同時に使用できません。
TRANSACTION LOG ONLY 句 この句は、トランザクション・ログのバックアップ・コピーを作成するのに使用します。他のデータベース・ファイルはコピーされません。
TRANSACTION LOG RENAME [MATCH] 句 この句を指定すると、サーバによって、バックアップの完了時に現在のトランザクション・ログの名前が変更されます。MATCH キーワードを省略すると、ログのバックアップ・コピーの名前はデータベースの現在のトランザクション・ログと同じになります。MATCH キーワードを指定すると、トランザクション・ログのバックアップ・コピーの名前は、YYMMDDnn.log 形式になり、現在のトランザクション・ログのコピーの変更名と一致します。MATCH キーワードを指定すると、古いデータを上書きしないで同じ文を 2 度以上実行できます。
TRANSACTION LOG TRUNCATE 句 この句を指定すると、バックアップの完了時に現在のトランザクション・ログはトランケートされて再起動します。データベース・ミラーリングを使用している場合は、この句を使用しないでください。データベース・ミラーリングとトランザクション・ログ・ファイルを参照してください。
archive-root アーカイブ・ファイルのファイル名またはテープ・ドライブ・デバイス名
テープ上にバックアップを作成する場合は、そのテープ・ドライブのデバイス名を指定します。たとえば、NetWare では、最初のテープ・ドライブは \\.\tape0 となります。アーカイブ・ファイル名の末尾に自動的に付加される番号は、アーカイブ・バックアップを実行するごとに増分します。
円記号 (\) は、SQL 文字列のエスケープ文字であるため、2 つ重ねます。エスケープ文字と文字列の詳細については、文字列を参照してください。
ON EXISTING ERROR この句は、イメージ・バックアップにだけ適用されます。デフォルトでは、既存のファイルは BACKUP DATABASE 文を実行したときに上書きされます。この句が使用されている場合は、バックアップによって作成されるファイルのいずれかがすでに存在するとエラーが発生します。
ATTENDED 句 この句は、テープ・デバイスにバックアップを作成する場合にのみ適用されます。ATTENDED ON (デフォルト) は、テープ・ドライブの状況を監視し、必要に応じてテープを交換する担当者がいることを示します。テープ・ドライブに介入が必要な場合には、BACKUP DATABASE 文を発行したアプリケーションにメッセージが送信されます。データベース・サーバはドライブが使用可能になるのを待ちます。このような状態が発生するのは、テープの交換が必要な場合などです。
ATTENDED OFF を指定すると、テープの交換が必要な場合やドライブが使用できない場合、メッセージは送信されず、エラーとなります。
WITH COMMENT 句 この句は、バックアップ履歴ファイルにコメントを記録するときに使用します。アーカイブ・バックアップの場合、コメントはアーカイブ・ファイルにも記録されます。
HISTORY 句 デフォルトでは、各バックアップ操作は backup.syb ファイルに行を追加します。HISTORY OFF を指定して、backup.syb ファイルが更新されないようにすることができます。次のすべての条件があてはまる場合は、ファイルが更新されないようにしたい場合があります。
AUTO TUNE WRITERS 句 バックアップが始まると、バックアップ・ディレクトリにバックアップ・ファイルを書き込む専用の 1 スレッドが割り当てられます。ただし、バックアップ・ディレクトリが増加したライタの負荷を処理できるデバイス上にある場合 (RAID アレイなど)、ライタとして動作するスレッド数を増やすことで全体のバックアップ・パフォーマンスを改善できます。この句を ON にすると (デフォルト)、データベース・サーバは、バックアップに参加しているすべてのデバイスについて、読み込みと書き込みのパフォーマンスを検証します。追加のライタを作成することで全体のバックアップ速度を改善できる場合、データベース・サーバで追加のライタを作成します。
WITH CHECKPOINT LOG 句 この句では、バックアップ先のディレクトリに書き込む前にバックアップでデータベース・ファイルに対してどのような処理を実行するかを指定します。バックアップ中に更新前イメージを適用するか、チェックポイント・ログをバックアップとしてコピーするかを選択します。どちらを選択するかによって、パフォーマンスに違いが生じます。デフォルト設定は、イメージ・バックアップの場合は AUTO で、アーカイブ・バックアップの場合は COPY です。
COPY 句 このオプションを BACKUP 文で WAIT BEFORE START 句と併用することはできません。
COPY を指定すると、データベース・ファイルのバックアップ中に、変更されたページは適用されません。チェックポイント・ログ全体とシステム DB 領域がバックアップ・ディレクトリにコピーされます。このデータベース・サーバを次回起動すると、データベースは自動的にバックアップ開始時のチェックポイントの状態にリカバリされます。
このオプションを使用すると、ページをテンポラリ・ファイルに書き込む必要がないため、バックアップ・パフォーマンスが向上し、バックアップ中に動作中の他の接続との内部サーバ競合が減少します。ただし、チェックポイント・ログには修正したページの元のイメージが含まれるため、データベースが更新されるとサイズが増えます。コピーを指定すると、データベース・ファイルのバックアップ・コピーによって、バックアップの開始時よりもデータベース・ファイルのサイズが大きくなる可能性があります。COPY オプションは、バックアップ先ディレクトリのディスク領域が十分である場合に使用してください。
NO COPY 句 NO COPY を指定すると、チェックポイント・ログがバックアップとしてコピーされません。この場合、変更されたページはテンポラリ・ファイルに保存され、バックアップの実行中、バックアップに適用されます。データベース・ファイルのバックアップ・コピーは、バックアップを開始した時点のデータベースと同じサイズになります。
このオプションを指定すると、データベース・ファイルのバックアップは小さくなりますが、バックアップの速度が遅くなり、データベース・サーバで実行される他の操作のパフォーマンスが低下することがあります。バックアップ先のドライブの空き領域が少ない場合に、このオプションが役に立ちます。
RECOVER 句 RECOVER を指定すると、(COPY オプションを指定した場合と同じように) チェックポイント・ログがコピーされますが、このチェックポイント・ログはバックアップの完了時にデータベースに適用されます。したがって、データベース・ファイルのバックアップは、バックアップ操作を開始した時点と同じ状態 (および同じサイズ) となります。このオプションが役に立つのは、バックアップ・ドライブの空き領域が少ない場合です (チェックポイント・ログをバックアップする COPY オプションの場合と同じ量の空き領域が必要ですが、バックアップ・ファイルのサイズは copy オプションを指定した場合より小さくなります)。
AUTO 句 AUTO を指定すると、データベース・サーバはバックアップ・ディレクトリがあるボリュームの空きディスク領域サイズをチェックします。バックアップを開始する時点でデータベース・サイズの 2 倍以上の空きディスク領域がある場合は、COPY を指定した場合と同様にオプションが動作します。それ以外の場合、NO COPY の場合と同様に動作します。AUTO がデフォルトの動作です。
MAX WRITE 句 アーカイブ・バックアップの場合、デフォルトで、バックアップ・ファイルの書き込み専用にスレッドが 1 つ割り当てられます。バックアップ・ディレクトリが、増加したライタの負荷を処理できるデバイス (RAID アレイなど) 上にある場合、ライタとして動作するスレッド数を増やすことで全体のバックアップ・パフォーマンスを向上させることができます。
AUTO を指定すると、各リーダ・スレッドに出力ストリームが 1 つ作成されます。値 n は、出力ストリームの作成可能な最大数を、リーダ・スレッド数を上限として指定します。この句のデフォルト値は 1 です。バックアップ先がテープの場合、使用できるライタは 1 つだけです。
最初のストリームであるストリーム 0 が myarchive.X という名前のファイルを生成します。X は 1 から始まる番号で、必要なファイルの数まで 1 ずつ増えていきます。それ以外のすべてのストリームは myarchive.Y.Z という名前のファイルを生成します。Y は 1 から始まるストリーム番号です。Z は 1 から始まる番号で、必要なファイル数まで 1 ずつ増えていきます。
BACKUP 文は、サーバ側のバックアップを実行します。クライアント側のバックアップを実行するには、dbbackup ユーティリティを使用します。バックアップ・ユーティリティ (dbbackup)を参照してください。
バックアップ操作では、イメージかアーカイブかに関係なく、履歴ファイル backup.syb が更新されます。backup.syb ファイルには、特定のデータベース・サーバで実行された BACKUP 操作と RESTORE 操作が記録されます。backup.syb ファイルのロケーションを指定する方法については、SALOGDIR 環境変数を参照してください。
リカバリを実行せずに読み込み専用データベース・サーバで開始できるバックアップを作成するには、WAIT BEFORE START 句と WITH CHECKPOINT LOG NO COPY 句を両方とも使用する必要があります。WAIT BEFORE START 句はロールバック・ログを空にし、WITH CHECKPOINT LOG NO COPY 句はチェックポイント・ログを空にします。どちらのファイルが欠けても、リカバリが必要になります。
構文 1 (イメージのバックアップ) イメージのバックアップでは、各データベース・ファイルのコピーが、バックアップ・ユーティリティ (dbbackup) の場合と同じ方法で作成されます。デフォルトでは、バックアップ・ユーティリティはクライアント・コンピュータにバックアップを作成しますが、-s オプションを使用すると、バックアップ・ユーティリティの使用時にデータベース・サーバ上にバックアップを作成することもできます。一方、BACKUP DATABASE 文の場合、バックアップはデータベース・サーバ上にのみ作成できます。
オプションで、データベース・ファイルまたはトランザクション・ログのどちらかだけを保存できます。ログは、バックアップの完了後に名前を変更するか、またはトランケートすることもできます。
または、ディレクトリとして空の文字列を指定して、ログをコピーせずに名前を変更したり、トランケートすることができます。これは、スペースが問題となるレプリケーション環境で便利です。この機能をトランザクション・ログ・サイズのイベント・ハンドラと一緒に使用して、ログが所定のサイズに達したときに名前を変更したり、delete_old_logs オプションと一緒に使用して、ログが必要なくなったときに削除したりすることができます。
イメージ・バックアップからリストアを行うには、保存されたファイルを元のロケーションにコピーして、複数のトランザクション・ログがあるデータベースのリカバリの説明に従ってトランザクション・ログを再度適用します。
構文 2 (アーカイブのバックアップ) アーカイブのバックアップでは、必要なバックアップ情報をすべて保持する 1 つのファイルが作成されます。送信先には、ファイル名またはテープ・ドライブ・デバイス名のどちらかを指定できます。
1 つのテープに 1 つのバックアップしか保存できません。バックアップ処理が終了すると、テープが排出されます。
1 つのテープに 1 つのアーカイブしか作成できませんが、1 つのアーカイブを複数のテープに保存することは可能です。アーカイブのバックアップからデータベースをリストアするには、RESTORE DATABASE 文を使用してください。
RESTORE DATABASE 文が、トランザクション・ログのみ含むアーカイブ・ファイルを参照している場合、復元されたデータベース・ファイルの場所にファイルが存在しない場合でも、文ではそのファイル名を指定します。たとえば、ログのみを含むアーカイブからディレクトリ C:\MYNEWDB に復元する場合、RESTORE DATABASE 文は次のようになります。
RESTORE DATABASE 'c:\mynewdb\my.db' FROM archive-root |
データベースとトランザクション・ログのバックアップ・コピーには、どのような変更でも加えるべきではありません。バックアップ中に処理中のトランザクションがなかった場合、または BACKUP DATABASE WITH CHECKPOINT LOG RECOVER か WITH CHECKPOINT LOG NO COPY を指定した場合は、読み込み専用モードを使用するか、バックアップ・データベースのコピーを検証することによって、バックアップ・データベースの妥当性をチェックできます。
一方、トランザクションの処理中だった場合、または BACKUP DATABASE WITH CHECKPOINT LOG COPY を指定した場合は、検証の開始時にデータベース・サーバがデータベースのリカバリを実行する必要が生じます。リカバリを実行するとバックアップ・コピーに変更が加えられますが、これは望ましいことではありません。
DBA、REMOTE DBA、または BACKUP の権限が必要です。
チェックポイントを発生させます。
SQL/2003 ベンダ拡張。
Windows Mobile Windows Mobile では、BACKUP DATABASE DIRECTORY 構文 (上記の構文 1) だけがサポートされます。
現在のデータベースとトランザクション・ログをそれぞれ別のファイルにバックアップし、既存のトランザクション・ログ名を変更します。イメージのバックアップが作成されます。
BACKUP DATABASE DIRECTORY 'd:\\temp\\backup' TRANSACTION LOG RENAME; |
トランザクション・ログの名前を変更するオプションは、古いトランザクション・ログが引き続き必要になるレプリケーション環境で特に役立ちます。
現在のデータベースとトランザクション・ログをテープにバックアップします。
BACKUP DATABASE TO '\\\\.\\tape0'; |
コピーを作成せずにログの名前を変更します。
BACKUP DATABASE DIRECTORY ' ' TRANSACTION LOG ONLY TRANSACTION LOG RENAME; |
動的に構成されたディレクトリ名を指定して、BACKUP DATABASE 文を実行します。
CREATE EVENT NightlyBackup SCHEDULE START TIME '23:00' EVERY 24 HOURS HANDLER BEGIN DECLARE dest LONG VARCHAR; DECLARE day_name CHAR(20); SET day_name = DATENAME( WEEKDAY, CURRENT DATE ); SET dest = 'd:\\backups\\' || day_name; BACKUP DATABASE DIRECTORY dest TRANSACTION LOG RENAME; END; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |