Oracle Serverが提供する「スタンバイ・データベース」は、障害によるデータベース破損を防止する機能です。具体的には、本番で使用するデータベース(プライマリ・データベース)に障害が発生した場合に、プライマリ・データベースのコピーであるスタンバイ・データベースに直ちに切り替え、業務を継続できるようにします。プライマリとスタンバイの同期化は、プライマリから生成されるアーカイブ・ログ・ファイルにより行われます。 SQL Serverでは、「ログ配布」によってスタンバイ・データベースと同様の機能が提供されています。Oracle Serverのプライマリ・データベースに該当するソースデータベースの、トランザクションログのバックアップを、スタンバイ・データベースに該当する配布先データベースにコピーし、適用することで同期をとります。 ☆さらに詳細はこちら→
ファイル破損などのメディア障害が発生したときに、障害が発生した直前の状態に復旧する場合、Oracle Serverでは障害のあったデータファイルに対するバックアップを復元し、そのバックアップファイルに対するアーカイブ・ログ・ファイルおよびREDOログ・ファイルを使って復旧します。 一方、SQL Serverでは、ファイルの復元を行う前に現在のトランザクションログをバックアップします。この手順を怠ると、最後にバックアップを取得したところまでしか復旧できません。現在のトランザクションログのバックアップを取得後、データファイルおよびトランザクションログのバックアップを復元および復旧します。SQL Server Enterprise Managerから復元を実行する場合は、どのファイルを復元するのかは自動選択されます。
Oracle Serverでのバックアップは、RMANやOSのユーティリティ、Exportユーティリティを使用して実行します。バックアップの単位としては「データベース全体」、「増分」、「表領域」、「データファイル」、「制御ファイル」、「ARCHIVELOGファイル」があります。 SQL Serverでは、Enterprise Manager、BACKUPステートメントなどを使用してバックアップを実行します。単位は「データベース全体」、「差分」、「ファイルグループおよびファイル」、「トランザクションログ」があります。 Oracle Serverとの大きな違いは「トランザクショログ」のバックアップです。 これを実行するとログが切り捨てられ、その切り捨てられた部分を再利用できます(「ログ・モード」参照)。また、Oracle Server、SQL Serverともにオンライン/オフラインでバックアップできますが、オフラインではバックアップ時点にしか戻せません。
Oracle Serverのバックグラウンド・プロセスの1つである「LGWR」は、REDOログ・バッファの内容をREDOログ・ファイルに書き込みます。Oracle Serverでは、REDOログ・ファイルは2つ以上のグループで運用しますが、1つがいっぱいになると、書き込み先のグループが切り替わります。これを「ログ・スイッチ」といいます。 SQL Serverでは、トランザクションログファイルは1つ以上で運用します。1つのファイル内は「仮想ログ」という複数のブロックに自動的に分割されます。 2つめの仮想ログがいっぱいになるとログファイルが拡張されるか、または1つめのログファイルがバックアップされていれば1つめの仮想ログを再利用します。これが、Oracle Serverのログ・スイッチに相当する動きです。
Oracle Serverの「ARCHIVELOGモード」では、1つのREDOログ・ファイルが一杯になったときに自動でコピーを作成(アーカイブ)することで、上書きして循環使用できるようになっています。 SQL Serverも、ログ領域を再利用するしくみは似ています。Oracle Serverでログをアーカイブするように、SQL Serverでもログの一部をバックアップすることで、1つまたは複数のトランザクションログファイルを循環して使用できます。ただし、SQL Serverのログバックアップは手動ですので、自動化するためにはスケジューリングをします。Oracle Serverの「NOARCHIVELOGモード」のように、ログのコピー(アーカイブ)を取ることなくログ領域を再利用する場合、SQL Serverではデータベースの「復旧モード」オプションを「単純(シングル)」モードにします。
「チェックポイント」は、変更したデータをメモリからディスクに反映するイベントです。Oracle Serverのチェックポイントはログスイッチのタイミングなどで発生します。初期化パラメータファイルのFAST_START_MTTR_TARGETパラメータで復旧時間を指定することで、定期的なチェックポイントを発生させることもできます。 SQL Serverでも既定で約1分に1回、チェックポイントが発生しますが、Enterprise Managerでインスタンスのプロパティを表示し、[データベースの設定]タブでOracle Serverと同じく復旧間隔を指定できます。たとえばSQL Server起動時に短時間で復旧するために復旧時間を短く設定した場合、メモリからディスクに書き込まれていない部分を少なくする必要がありますので、チェックポイントの間隔が短くなるわけです。