この項では、データベース全体のバックアップおよびリストアと、個別のスキーマ・オブジェクトからのデータのリカバリについて説明します。次のトピックが含まれています。
この項の内容は次のとおりです。
Oracle Database XEのバックアップとリストアは、データベースを構成する物理ファイル(データファイル、制御ファイルおよびサーバー・パラメータ・ファイル(SPFILE
)、さらにARCHIVELOG
モードの場合はREDOログ・ファイル)を保護することに基づいています。
Oracle Database XEでは、データベースのバックアップおよびリカバリ機能は、データベースに統合されているRecovery Manager (RMAN
)ユーティリティに基づきます。SQLコマンドラインに類似したRMAN
コマンドライン・クライアントがありますが、データベースをバックアップまたはリストアするために、直接このクライアントを操作する必要はありません。Oracle Database XEには、バックアップおよびリストアのスクリプトが含まれており、デスクトップのメニュー選択を使用して、これらのスクリプトにアクセスできます。これらのスクリプトは、データベース全体の完全なバックアップおよびリストアを実行し、バックアップ・ファイルをフラッシュ・リカバリ領域に保存します。
Oracle Database XEでは、データベースに対して冗長保護のレベルを提供するために、データベースの完全なバックアップを2つ保持する必要があることを要求するバックアップ保存ポリシーが実装されます。ARCHIVELOG
モードの場合は、いずれかのバックアップからのメディア・リカバリに必要となるすべてのアーカイブ・ログも保持されます。データベースでは、フラッシュ・リカバリ領域のバックアップおよびアーカイブ・ログは自動的に管理され、新しいファイル用に領域が必要になると、古いもの(保存ポリシーに一致しなくなったもの)は削除されます。また、Oracle Database XEに付属しているバックアップ・スクリプトでも、各バックアップ・ジョブの最後で、不要なバックアップとアーカイブ・ログが削除されます。
提供されているバックアップ・スクリプトでは、ARCHIVELOG
モードの場合はデータベースのオンライン・バックアップが、NOARCHIVELOG
モードの場合はデータベースのオフライン・バックアップが実行されます。オンライン・バックアップは、データベースの実行中に実行可能なバックアップです。オフライン・バックアップは、データベースがマウントされた状態(ただしオープンされていない状態)のときに実行するバックアップです。オフライン・バックアップの場合は、バックアップ・スクリプトによって、データベースは自動的に適切な状態に変更されます。オフライン・バックアップの実行中は、アプリケーションはデータベースを使用できません。
バックアップ・スクリプトを実行するには、デスクトップから、データベースのバックアップ・コマンドを実行します。
提供されているリストア・スクリプトでは、データベースのリストアが実行されますが、ログのアーカイブがオンとオフのどちらであるかによって、リストアの仕様は異なります。
ログのアーカイブがオン(ARCHIVELOG
モード): リストア・スクリプトでは、バックアップされたデータベース・ファイルがリストアされ、続いて、オンラインREDOログ・ファイルおよびアーカイブREDOログ・ファイルが使用されて、ソフトウェア障害またはメディア障害が発生する前の状態にデータベースがリカバリされます。最後のバックアップより後に実行されたすべてのコミット済のトランザクションはリカバリされ、障害発生時に処理中でコミットされていなかったすべてのトランザクションは(リストアされたUNDO表領域のUNDOデータを使用して)ロールバックされます。
ログのアーカイブがオフ(NOARCHIVELOG
モード): リストア・スクリプトでは、データベースは、最後のバックアップ時の状態にリストアされます。最後のバックアップの後に実行されたすべてのトランザクションは失われます。
リストア・スクリプトを実行するには、デスクトップから、データベースのリストア・コマンドを実行します。
関連項目:
|
この項では、オペレーティング・システム障害とOracleインスタンス障害からだけでなく、メディア(ディスク)障害からもデータベースが完全に保護されるように、ARCHIVELOG
モードをオンにする方法について説明します。この付録は、次の項で構成されています。
現在のARCHIVELOG
モード設定を表示する手順は、次のとおりです。
「SYSDBAでのデータベースへのログインと接続」の説明に従って、SQLコマンドラインを使用して、データベースにログインしてSYSDBA
で接続します。
次のコマンドを入力します。
SELECT log_mode FROM v$database;
LOG_MODEの値は、ARCHIVELOG
(つまりオン)またはNOARCHIVELOG
(つまりオフ)のいずれかになります。
ARCHIVELOG
モードをオンにする操作は、1回かぎりの操作です。オンにすると、その状態は、ユーザーがオフにするまで続きます。データベースを再起動しても、ARCHIVELOG
モードの設定は変更されません。
注意: ARCHIVELOG モードをオンにする場合は、フラッシュ・リカバリ領域が完全にいっぱいにならないように、データベースのバックアップを定期的に実行する必要があります。フラッシュ・リカバリ領域が完全にいっぱいになると、データベース障害が発生する可能性があります。 |
ARCHIVELOG
モードをオンにする手順は、次のとおりです。
「SYSDBAでのデータベースへのログインと接続」の説明に従って、SQLコマンドラインを使用して、データベースにログインしてSYSDBA
で接続します。
SQLコマンドラインのプロンプトで、次のコマンドを入力します。
SHUTDOWN IMMEDIATE
コマンドが成功した場合は、次の出力が表示されます。
Database closed. Database dismounted. ORACLE instance shut down.
SQLコマンドラインのプロンプトで、次のコマンドを入力します。
STARTUP MOUNT
コマンドが成功した場合は、次の出力が表示されます。(システム・グローバル領域のサイズは、Oracle Database XEのホスト・コンピュータの物理メモリー容量によって異なります。)
ORACLE instance started. Total System Global Area 803500032 bytes Fixed Size 1386556 bytes Variable Size 222300100 bytes Database Buffers 574619648 bytes Redo Buffers 5193728 bytes Database mounted.
次のコマンドを入力します。
ALTER DATABASE ARCHIVELOG;
コマンドが成功した場合は、次の出力が表示されます。
Database altered.
次のコマンドを入力します。
ALTER DATABASE OPEN;
コマンドが成功した場合は、次の出力が表示されます。
Database altered.
これで、データベースは、新しいARCHIVELOG
モード設定で実行されます。
アーカイブ・ログ・ファイル用に必要な追加の領域を考慮して、フラッシュ・リカバリ領域のサイズを最低でも15 GBに変更します。
たとえば、フラッシュ・リカバリ領域のサイズを20 GBに設定するには、次のコマンドを入力します。
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 20G;
詳細は、「フラッシュ・リカバリ領域のサイズの変更」を参照してください。
注意: データベースのARCHIVELOG モード設定を変更すると、既存のすべてのバックアップは使用できなくなります。ARCHIVELOG モードを変更した後は、「データベースのバックアップ」の説明に従って、ただちにバックアップを実行する必要があります。 |
注意: ARCHIVELOG モードがオンの場合、スクリプトでは、オンライン・バックアップが実行されます。バックアップ中もデータベースは使用できます。
|
次の操作を1つ実行します。
Windowsの場合: Oracle Database XEのホスト・コンピュータに、ORA_DBA
ユーザー・グループのメンバーであるユーザーでログインします。通常、これは、Oracle Database XEをインストールしたユーザーです。
Linuxの場合: Oracle Database XEのホスト・コンピュータに、dba
ユーザー・グループのメンバーであるユーザーでログインします。通常、これは、oracle
というユーザーです。
詳細は、「オペレーティング・システム認証」を参照してください。
次の操作を1つ実行します。
Windowsの場合: 「スタート」をクリックし、「プログラム」(または「すべてのプログラム」)、「Oracle Database 11g Express Edition」の順にポイントし、「データベースのバックアップ」を選択します。
Linux (Gnome)の場合: 「アプリケーション」メニューで、「Oracle Database 11g Express Edition」をポイントし、「データベースのバックアップ」を選択します。
Linux (KDE)の場合: 「K」メニューのアイコンをクリックし、「Oracle Database 11g Express Edition」をポイントし、「データベースのバックアップ」を選択します。
コンソール・ウィンドウが開くので、それによりバックアップ・スクリプトを操作できます。
ARCHIVELOG
モードで実行中の場合は、スクリプトによって次の出力が表示されます。
Doing online backup of the database.
NOARCHIVELOG
モードで実行中の場合は、スクリプトによって次の出力が表示されます。
Warning: Log archiving (ARCHIVELOG mode) is currently disabled. If you restore the database from this backup, any transactions that take place between this backup and the next backup will be lost. It is recommended that you enable ARCHIVELOG mode before proceeding so that all transactions can be recovered upon restore. See the section 'Enabling ARCHIVELOG Mode...' in the online help for instructions. Backup with log archiving disabled will shut down and restart the database. Are you sure [Y/N]?
プロンプトが表示された場合は、y
を入力して[Enter]を押し、データベースの停止を確認してバックアップを開始します。
バックアップが完了すると、次の出力が表示されます。
Backup of the database succeeded.
Log file is at location
Press ENTER key to exit
ここで、location
はログ・ファイルの場所です。
[Enter]を押して、「データベースのバックアップ」ウィンドウを閉じます。
最後の2つのバックアップからの出力が含まれるログは、表11-1に示す場所に保存されます。
表11-1 バックアップ・スクリプトの出力ログの場所
プラットフォーム | 場所 |
---|---|
Linux |
|
Windows |
|
OXE_BACKUP_CURRENT.LOG
ファイルおよびOXE_BACKUP_PREVIOUS.LOG
ファイルで、最新の2つのバックアップ試行の出力を確認できます。
自動バックアップをスケジュールするには、オペレーティング・システムまたはサード・パーティのタスク・スケジューリング・ソフトウェアを使用して、提供されている使用プラットフォーム用のバックアップ・スクリプトを実行します。表11-2に、各プラットフォーム用のこのスクリプトの名前とパスを示します。
データベースのリストアおよびリカバリを実行するには、提供されているリストア・スクリプトを使用します。この項の手順は、次の前提条件に基づいています。
ソフトウェア障害、メディア(ディスク)障害、またはオペレータ・エラーによって、1つ以上のデータベース・ファイルの喪失または破損が発生し、データベースが使用できなくなりました。
フラッシュ・リカバリ領域のバックアップ・セット、およびARCHIVELOG
モードの場合はアーカイブ・ログが無事で使用可能です。
ARCHIVELOG
モードの場合は、オンラインREDOログが無事で使用可能です。
注意: それらが使用できない場合、データベースは、アーカイブ・ログに含まれている最後のトランザクションの時点にリストアされます。詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |
Oracle Database XEのホスト・コンピュータおよびオペレーティング・システムが使用可能である。
Oracle Database XEインストール・ソフトウェア(バイナリ)が無事で使用可能である。
これらの前提条件がすべて当てはまる状況でない場合は、次の手順に進んでデータベースをリストアおよびリカバリする前に、まずは、コンピュータ・ハードウェアの修理または交換、オペレーティング・システム・ソフトウェアの再インストール、またはOracle Database XEの再インストールの1つ以上の作業を完了する必要がある場合があります。Oracle Database XEを再インストールした後に、以前のフラッシュ・リカバリ領域がOracle Database XEのインストール先と別のディスクに存在していて、今も使用可能である場合は、リストア・スクリプトが必要なファイルを見つけられるように、フラッシュ・リカバリ領域の場所を指定する必要があります。手順については、「フラッシュ・リカバリ領域の場所とサイズの設定」を参照してください。
データベースをリストアする手順は、次のとおりです。
次の操作を1つ実行します。
Windowsの場合: Oracle Database XEのホスト・コンピュータに、ORA_DBA
ユーザー・グループのメンバーであるユーザーでログインします。通常、これは、Oracle Database XEをインストールしたユーザーです。
Linuxの場合: Oracle Database XEのホスト・コンピュータに、dba
ユーザー・グループのメンバーであるユーザーでログインします。通常、これは、oracle
というユーザーです。
詳細は、「オペレーティング・システム認証」を参照してください。
次の操作を1つ実行します。
Windowsの場合: 「スタート」をクリックし、「プログラム」(または「すべてのプログラム」)、「Oracle Database 11g Express Edition」の順にポイントし、「データベースのリストア」を選択します。
Linux (Gnome)の場合: 「アプリケーション」メニューで、「Oracle Database 11g Express Edition」をポイントし、「データベースのリストア」を選択します。
Linux (KDE)の場合: 「K」メニューのアイコンをクリックし、「Oracle Database 11g Express Edition」をポイントし、「データベースのリストア」を選択します。
コンソール・ウィンドウが開くので、それによりリストア・スクリプトを操作できます。スクリプトにより、次の出力が表示されます。
This operation will shut down and restore the database. Are you sure [Y/N]?
y
を入力して[Enter]を押し、データベースのリストアを確認します。
データベースが停止され、スクリプトによって、RMAN
が実行されてデータベースがリストアされ、さらにARCHIVELOG
モードで実行中の場合は、最後のバックアップ以降のすべての変更がリカバリされます。
注意: 状況によっては(たとえば、新しいOracle Database XEのインストールでバックアップを実行する前にデータベースのリストア・コマンドを実行した場合など)、リストア・スクリプトでフラッシュ・リカバリ領域の場所を入力するように要求されることがあります。Enter the flash recovery area location: そのように要求された場合は、フラッシュ・リカバリ領域の場所の完全なパスを入力します。(各プラットフォームのデフォルトの場所は、表6-2に示しています。)そうすると、リストア・スクリプトによって、この場所のバックアップ・ファイルからデータベースがリストアされます。 |
リストアおよびリカバリ・プロセスが正常に完了した場合は、データベースが再度オープンされます。すると、スクリプトによって、次の出力が表示されます。
Restore of the database succeeded.
Log file is at location
Press any key to continue . . .
ここで、location
はログ・ファイルの場所です。
リストアおよびリカバリ・プロセスが失敗した場合は、エラーを示すメッセージが表示されます。
==================== ERROR =============================
Restore of the database Failed.
RMAN Error - See log for details
Log file is at location
==================== ERROR =============================
エラーの原因の詳細は、ログ・ファイルを参照してください。
[Enter]を押して、「データベースのリストア」ウィンドウを閉じます。
Oracle Database Express Edition (Oracle Database XE)のフラッシュバック問合せ機能を使用すると、過去のある時点のデータを表示できます。さらに、間違って削除または変更された損失データを復元できます。
この項の内容は次のとおりです。
フラッシュバック問合せを記述する場合は、SELECT
文に、時刻または変更番号(SCN)を指定する句を追加します。そうすると、問合せは、一致する時刻のコミット済のデータを使用します。フラッシュバック問合せ機能は、データを変更せずに問合せのみを行います。履歴データを分析して、データをリストアするデータ操作言語(DML)文を作成および発行するかどうかは、個々の判断になります。
フラッシュバック問合せ機能は、必要に応じてUNDOデータを適用することで、履歴データを取得します。したがって、フラッシュバック可能な時間の長さは、使用可能なUNDOデータの量によって決まります。フラッシュバック問合せ機能の詳細は、『Oracle Database SQL言語リファレンス』のSELECT
文のflashback_query_clauseの説明(AS
OF
句など)を参照してください。
この例では、フラッシュバック問合せを使用して、前回の表の状態を調べます。たとえば、午後12時30分に、employees
表から従業員Chungの行が削除されていることに気が付いたとします。また、午前9時30分の時点では、Chungのデータはデータベースに正常に保存されていたことがわかっています。フラッシュバック問合せを使用して午前9時30分の表の内容を調べ、失われたデータを見つけることができます。さらに、必要に応じて、失われたデータを再挿入できます。
例11-1では、2005年4月4日午前9時30分におけるChung
のレコードの状態を取得します。
例11-1 フラッシュバック問合せを使用した行の取得
SELECT * FROM employees AS OF TIMESTAMP TO_TIMESTAMP('2005-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS') WHERE last_name = 'Chung';
例11-2の更新では、Chungの情報をemployees
表にリストアします。
例11-2 フラッシュバック問合せの後の行の再挿入
INSERT INTO employees (SELECT * FROM employees AS OF TIMESTAMP TO_TIMESTAMP('2005-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS') WHERE last_name = 'Chung');
フラッシュバック問合せ(SELECT
... AS OF
)を使用する場合は、次のことを覚えておいてください。
問合せ内の各表に対してAS OF
句を指定または省略したり、異なる表に異なる時間を指定できます。問合せでAS OF
句を使用すると、問合せと同じセッションでデータ定義言語(DDL)の操作(表の作成、切捨てなど)やDML操作(挿入、削除など)を実行できます。
フラッシュバック問合せの結果を、データベースの現在の状態に影響するDDL文またはDML文内で使用するには、INSERT
文またはCREATE TABLE AS SELECT
文内でAS OF
句を使用します。
表を削除した場合、その表に関連付けられている領域はデータベースによってすぐには削除されません。かわりに、データベースによってこの表の名前が変更され、すべての依存オブジェクトとともにごみ箱へ入れられますが、表が誤って削除された場合は、後で復元できます。
この項で説明する項目は、次のとおりです。
ごみ箱とは、削除されたオブジェクトに関する情報を含んでいるデータ・ディクショナリ表です。削除されたオブジェクトとすべての依存オブジェクト(索引、制約、ネストした表など)は、実際には削除されずにそのまま領域を占有しており、ユーザーがごみ箱からそれらをパージするか、使用可能な領域が少なくなったときにデータベースによって自動的にパージされるまで、この状態が続きます。
ごみ箱からオブジェクトをリストアできます(削除の取消しに相当)。オブジェクトをリストアすると、そのオブジェクトは削除操作前の状態に戻ります。表をリストアした場合は、表のすべての依存オブジェクトも自動的にリストアされます。
SQL Developerを使用して、ごみ箱の中身を表示したり、削除されたオブジェクトをリストアしたり、ごみ箱からオブジェクトをパージできます。特定のユーザーが所有するオブジェクトを表示、パージまたはリストアするには、そのユーザーでログインする必要があります。
注意: SQLコマンドライン(SQL*Plus)を使用してSYSDBA でログインして接続すると、他のユーザーが所有するオブジェクトを表示、リストアおよびパージできます。詳細は、『Oracle Database管理者ガイド』を参照してください。 |
SQL Developerで、対象のスキーマへのデータベース接続をオープンします。
「接続」ナビゲータで、接続を展開して「ごみ箱」ノードを選択します。
(オプション) 表名をクリックして、プロパティを確認します。
たとえば、HRスキーマのJOB_HISTORY
表を削除し、その後にこの表をリカバリすることにします。この表は、ごみ箱からリストアすることで、リカバリ(削除を取り消し)できます。
JOB_HISTORY
表を削除して、ごみ箱からリストアする手順は、次のとおりです。
SQL Developerで、HR
ユーザーに接続します。
「接続」ナビゲータで、HR
の下の「表」を展開します。
JOB_HISTORY
を右クリックして、「削除」を選択します。
「削除」ダイアログ・ボックスで、「適用」をクリックします。
「接続」ナビゲータで、「ごみ箱」を右クリックして「リフレッシュ」を選択します。
「ごみ箱」にJOB_HISTORY
表が表示されます。これで、引き続き、それのリストア(削除の取消し)またはパージ(完全な削除)を実行できます。
この表をリストアするには、「ごみ箱」の(他のオブジェクトは選択せずに) JOB_HISTORY
を右クリックして、「削除前にフラッシュバック」を選択します。
「削除前にフラッシュバック」ダイアログ・ボックスの「オブジェクト名にフラッシュバック」に、リストアする表の任意の名前(JOB_HISTORY)を指定します。
「適用」をクリックします。
表に混ざって表示されるようになったJOB_HISTORYを表示するには、「表」ノードを右クリックして「リフレッシュ」を選択します。