ヘッダーをスキップ
Oracle® Database Express Edition 2日でデータベース管理者
11g リリース2 (11.2)
B66471-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

11 バックアップおよびリカバリ

この項では、データベース全体のバックアップおよびリストアと、個別のスキーマ・オブジェクトからのデータのリカバリについて説明します。次のトピックが含まれています。

データベースのバックアップおよびリストア

この項の内容は次のとおりです。

データベースのバックアップおよびリストアについて

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モード): リストア・スクリプトでは、データベースは、最後のバックアップ時の状態にリストアされます。最後のバックアップの後に実行されたすべてのトランザクションは失われます。

リストア・スクリプトを実行するには、デスクトップから、データベースのリストア・コマンドを実行します。


関連項目:

  • RMANを使用したOracleデータベースのバックアップおよびリカバリの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

  • 「アーカイブREDOログ・ファイル」


メディア障害の保護のためにARCHIVELOGモードを有効化

この項では、オペレーティング・システム障害とOracleインスタンス障害からだけでなく、メディア(ディスク)障害からもデータベースが完全に保護されるように、ARCHIVELOGモードをオンにする方法について説明します。この付録は、次の項で構成されています。

現在のARCHIVELOGモード設定の表示

現在のARCHIVELOGモード設定を表示する手順は、次のとおりです。

  1. 「SYSDBAでのデータベースへのログインと接続」の説明に従って、SQLコマンドラインを使用して、データベースにログインしてSYSDBAで接続します。

  2. 次のコマンドを入力します。

    SELECT log_mode FROM v$database;
    

    LOG_MODEの値は、ARCHIVELOG (つまりオン)またはNOARCHIVELOG (つまりオフ)のいずれかになります。

ARCHIVELOGモードをオンにする

ARCHIVELOGモードをオンにする操作は、1回かぎりの操作です。オンにすると、その状態は、ユーザーがオフにするまで続きます。データベースを再起動しても、ARCHIVELOGモードの設定は変更されません。


注意:

ARCHIVELOGモードをオンにする場合は、フラッシュ・リカバリ領域が完全にいっぱいにならないように、データベースのバックアップを定期的に実行する必要があります。フラッシュ・リカバリ領域が完全にいっぱいになると、データベース障害が発生する可能性があります。

ARCHIVELOGモードをオンにする手順は、次のとおりです。

  1. 「SYSDBAでのデータベースへのログインと接続」の説明に従って、SQLコマンドラインを使用して、データベースにログインしてSYSDBAで接続します。

  2. SQLコマンドラインのプロンプトで、次のコマンドを入力します。

    SHUTDOWN IMMEDIATE
    

    コマンドが成功した場合は、次の出力が表示されます。

    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    
  3. 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.
    
  4. 次のコマンドを入力します。

    ALTER DATABASE ARCHIVELOG;
    

    コマンドが成功した場合は、次の出力が表示されます。

    Database altered.
    
  5. 次のコマンドを入力します。

    ALTER DATABASE OPEN;
    

    コマンドが成功した場合は、次の出力が表示されます。

    Database altered.
    

    これで、データベースは、新しいARCHIVELOGモード設定で実行されます。

  6. アーカイブ・ログ・ファイル用に必要な追加の領域を考慮して、フラッシュ・リカバリ領域のサイズを最低でも15 GBに変更します。

    たとえば、フラッシュ・リカバリ領域のサイズを20 GBに設定するには、次のコマンドを入力します。

    ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 20G;
    

    詳細は、「フラッシュ・リカバリ領域のサイズの変更」を参照してください。


注意:

ARCHIVELOGモードをオフにする(つまり、NOARCHIVELOGモードに設定する)には、前述の手順1から5に従いますが、手順4では次のコマンドを入力します。
ALTER DATABASE NOARCHIVELOG;


注意:

データベースのARCHIVELOGモード設定を変更すると、既存のすべてのバックアップは使用できなくなります。ARCHIVELOGモードを変更した後は、「データベースのバックアップ」の説明に従って、ただちにバックアップを実行する必要があります。


関連項目:

SHUTDOWN IMMEDIATEコマンドが失敗した場合の対応方法については、「SQLコマンドラインを使用したデータベースの停止」を参照してください。

データベースのバックアップ


注意:

ARCHIVELOGモードがオンの場合、スクリプトでは、オンライン・バックアップが実行されます。バックアップ中もデータベースは使用できます。

ARCHIVELOGモードがオフの場合、スクリプトでは、オフライン・バックアップが実行されます。バックアップ中はデータベースは停止され、その後に再起動されます。バックアップ中はアプリケーションを使用できません。


データベースをバックアップする手順

  1. 次の操作を1つ実行します。

    • Windowsの場合: Oracle Database XEのホスト・コンピュータに、ORA_DBAユーザー・グループのメンバーであるユーザーでログインします。通常、これは、Oracle Database XEをインストールしたユーザーです。

    • Linuxの場合: Oracle Database XEのホスト・コンピュータに、dbaユーザー・グループのメンバーであるユーザーでログインします。通常、これは、oracleというユーザーです。

    詳細は、「オペレーティング・システム認証」を参照してください。

  2. 次の操作を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]?
    
  3. プロンプトが表示された場合は、yを入力して[Enter]を押し、データベースの停止を確認してバックアップを開始します。

    バックアップが完了すると、次の出力が表示されます。

    Backup of the database succeeded.
    Log file is at location
    Press ENTER key to exit
    

    ここで、locationはログ・ファイルの場所です。

  4. [Enter]を押して、「データベースのバックアップ」ウィンドウを閉じます。

最後の2つのバックアップからの出力が含まれるログは、表11-1に示す場所に保存されます。

表11-1 バックアップ・スクリプトの出力ログの場所

プラットフォーム 場所

Linux

$HOME/oxe_backup_current.log

$HOME/oxe_backup_previous.log

Windows

C:\oraclexe\app\oracle\product\11.2.0\server\database\OXE_BACKUP_CURRENT.LOG.

C:\oraclexe\app\oracle\product\11.2.0\server\database\OXE_BACKUP_PREVIOUS.LOG.


OXE_BACKUP_CURRENT.LOGファイルおよびOXE_BACKUP_PREVIOUS.LOGファイルで、最新の2つのバックアップ試行の出力を確認できます。

自動バックアップのスケジュール

自動バックアップをスケジュールするには、オペレーティング・システムまたはサード・パーティのタスク・スケジューリング・ソフトウェアを使用して、提供されている使用プラットフォーム用のバックアップ・スクリプトを実行します。表11-2に、各プラットフォーム用のこのスクリプトの名前とパスを示します。

表11-2 各プラットフォーム用のバックアップ・スクリプトの名前とパス

プラットフォーム バックアップ・スクリプトの名前とパス

Linux

/usr/lib/oracle/xe/app/oracle/product/11.2.0/server/config/scripts/backup.sh

Windows

C:\oraclexe\app\oracle\product\11.2.0\server\bin\Backup.bat


データベースのリストアおよびリカバリ

データベースのリストアおよびリカバリを実行するには、提供されているリストア・スクリプトを使用します。この項の手順は、次の前提条件に基づいています。

  • ソフトウェア障害、メディア(ディスク)障害、またはオペレータ・エラーによって、1つ以上のデータベース・ファイルの喪失または破損が発生し、データベースが使用できなくなりました。

  • フラッシュ・リカバリ領域のバックアップ・セット、およびARCHIVELOGモードの場合はアーカイブ・ログが無事で使用可能です。

  • ARCHIVELOGモードの場合は、オンラインREDOログが無事で使用可能です。


    注意:

    それらが使用できない場合、データベースは、アーカイブ・ログに含まれている最後のトランザクションの時点にリストアされます。詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

  • Oracle Database XEのホスト・コンピュータおよびオペレーティング・システムが使用可能である。

  • Oracle Database XEインストール・ソフトウェア(バイナリ)が無事で使用可能である。

これらの前提条件がすべて当てはまる状況でない場合は、次の手順に進んでデータベースをリストアおよびリカバリする前に、まずは、コンピュータ・ハードウェアの修理または交換、オペレーティング・システム・ソフトウェアの再インストール、またはOracle Database XEの再インストールの1つ以上の作業を完了する必要がある場合があります。Oracle Database XEを再インストールした後に、以前のフラッシュ・リカバリ領域がOracle Database XEのインストール先と別のディスクに存在していて、今も使用可能である場合は、リストア・スクリプトが必要なファイルを見つけられるように、フラッシュ・リカバリ領域の場所を指定する必要があります。手順については、「フラッシュ・リカバリ領域の場所とサイズの設定」を参照してください。

データベースをリストアする手順は、次のとおりです。

  1. 次の操作を1つ実行します。

    • Windowsの場合: Oracle Database XEのホスト・コンピュータに、ORA_DBAユーザー・グループのメンバーであるユーザーでログインします。通常、これは、Oracle Database XEをインストールしたユーザーです。

    • Linuxの場合: Oracle Database XEのホスト・コンピュータに、dbaユーザー・グループのメンバーであるユーザーでログインします。通常、これは、oracleというユーザーです。

    詳細は、「オペレーティング・システム認証」を参照してください。

  2. 次の操作を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]?
    
  3. 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 =============================
    

    エラーの原因の詳細は、ログ・ファイルを参照してください。

  4. [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管理者ガイド』を参照してください。

ごみ箱の中身の表示

ごみ箱の中身を表示する手順は、次のとおりです。

  1. SQL Developerで、対象のスキーマへのデータベース接続をオープンします。

  2. 「接続」ナビゲータで、接続を展開して「ごみ箱」ノードを選択します。

  3. (オプション) 表名をクリックして、プロパティを確認します。


関連項目:


例: ごみ箱からの表のリストア

たとえば、HRスキーマのJOB_HISTORY表を削除し、その後にこの表をリカバリすることにします。この表は、ごみ箱からリストアすることで、リカバリ(削除を取り消し)できます。

JOB_HISTORY表を削除して、ごみ箱からリストアする手順は、次のとおりです。

  1. SQL Developerで、HRユーザーに接続します。


    注意:

    あらかじめHRアカウントのロックを解除し、パスワードを割り当てておく必要があります。詳細は、「ユーザーの変更」および「ユーザー・アカウントのロックおよびロック解除」を参照してください。

  2. 「接続」ナビゲータで、HRの下の「表」を展開します。

  3. JOB_HISTORYを右クリックして、「削除」を選択します。

  4. 「削除」ダイアログ・ボックスで、「適用」をクリックします。

  5. 「接続」ナビゲータで、「ごみ箱」を右クリックして「リフレッシュ」を選択します。

    「ごみ箱」にJOB_HISTORY表が表示されます。これで、引き続き、それのリストア(削除の取消し)またはパージ(完全な削除)を実行できます。

  6. この表をリストアするには、「ごみ箱」の(他のオブジェクトは選択せずに) JOB_HISTORYを右クリックして、「削除前にフラッシュバック」を選択します。

  7. 「削除前にフラッシュバック」ダイアログ・ボックスの「オブジェクト名にフラッシュバック」に、リストアする表の任意の名前(JOB_HISTORY)を指定します。

  8. 「適用」をクリックします。

  9. 表に混ざって表示されるようになったJOB_HISTORYを表示するには、「表」ノードを右クリックして「リフレッシュ」を選択します。

ごみ箱のパージ

オブジェクトを削除しても、ユーザーがごみ箱をパージするか、データベースによって領域不足の状態が検出されて自動的にごみ箱がパージされるまで、領域は解放されません。ごみ箱からオブジェクトをパージできます。

ごみ箱からのオブジェクトのパージ

ごみ箱からオブジェクトをパージする手順は、次のとおりです。

  1. SQL Developerで、そのオブジェクトを所有するデータベース・ユーザーに接続します。

  2. 「接続」ナビゲータで、該当の接続の下の「ごみ箱」を展開します。

  3. パージするオブジェクトを右クリックして、「パージ」を選択します。

  4. 「パージ」確認ボックスで、「適用」をクリックします。