Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド 11g リリース1(11.1) E05700-03 |
|
この章では、Recovery Managerを使用して、自動ストレージ管理ストレージへのデータの移行およびASMストレージからのデータの移行を行う方法について説明します。この章の内容は、次のとおりです。
この項では、ASMにデータを移行する場合およびASMからデータを移行する場合の基本的な概念およびタスクについて説明します。
ASMストレージの代替には、ファイル・システム、RAWディスクおよびSAN構成があります。ASMには、これらの代替ストレージを上回る多くのメリット(パフォーマンスの最適化、冗長性保護、ロード・バランシングなど)があります。ASMによってディスクが管理されるため、サード・パーティの論理ボリューム・マネージャを入手する必要はありません。ASMには既製の共有ストレージが用意されているため、Oracle Real Application Clusters(Oracle RAC)データベースでASMを使用すると有効です。
データベースで現在ASM以外のストレージ・システムが使用されている場合は、データベースのすべてまたは一部をASMに移行すると、データベースの管理が簡単になります。また、フラッシュ・リカバリ領域もASMに移行できます。
Linuxのcp
、WindowsのCOPY
などのオペレーティング・システム固有のコマンドでは、ASMストレージ内のファイルに対して書込みまたは読取りを行うことはできません。Recovery ManagerではASMファイルに対して読取りおよび書込みを行うことができるため、Recovery Managerを使用して、ASMストレージへのデータファイルのコピーおよびASMストレージからのデータファイルのコピーまたはASMディスク・グループ間でのデータファイルのコピーを実行できます。この方法は、バックアップをユーザー管理ディスクに格納する必要がある場合に有効です。
Recovery Managerを主なバックアップ・ツールとして使用していない場合でも、Recovery Managerを使用してASMにデータを移行できます。移行には、Recovery Managerデータベース・バックアップが1つ必要です。
ASMと代替ストレージ・システムの両方にデータベース全体を保持するための十分なディスク領域がある場合は、データベースをASMに直接移動できます。十分なストレージがない場合は、データベースをテープにバックアップし、古いディスク領域を使用するASMディスク・グループを作成して、テープからASMにデータベースをリストアできます。
新しいリカバリ領域の場所を設定した後も、既存のバックアップは古いリカバリ領域に存在したままとなり、リカバリ領域のディスク割当て制限の合計の負担になります。領域が必要になると、バックアップが古いリカバリ領域から削除されます。これらのバックアップは、Recovery Managerで使用できます。古いバックアップは、ディスク領域が必要にならないかぎり、新しいASMリカバリ領域に移動する必要はありません。古いリカバリ領域でファイルによって消費されている領域を解放するには、それらのファイルをテープにバックアップするか、またはASMリカバリ領域に移行します。
ASMから代替ストレージ・システムへのデータベースの移行は、代替ストレージ・システムからASMへの移行と類似しています。主な違いは、代替ストレージ・システムのファイルの場所を参照するように各手順を変更する点です。
データベース全体およびフラッシュ・リカバリ領域を代替ストレージからASMに移行する基本手順は、次のとおりです。
この手順については、「ASMへのデータベースの移行の準備」を参照してください。
この手順については、「ASMへのデータベースの移行」を参照してください。
ファイルを代替ストレージからASMに移行するには、「ASMから代替ストレージへのデータベースの移行」を参照してください。
この項では、移行のためにデータベースを準備する方法について説明します。この項では、次のことを想定しています。
COMPATIBLE
設定が11.0.0よりも小さい場合は、読取り専用のトランスポータブル表領域を読取り/書込みにします。読取り専用トランスポータブル表領域は、Recovery Managerではバックアップできないため、移行できません。
たとえば、SYSDBA
権限を使用してSQL*Plusをデータベースに接続し、次の文を実行して管理リカバリを停止します。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
この端末ウィンドウを開いたままにします。
次の例では、オペレーティング・システム・ユーティリティを使用してサーバー・パラメータ・ファイルをコピーします。
% cp spfileMYDB.ora orig_spfileMYDB.ora
TARGET
として接続します。必要に応じて、リカバリ・カタログに接続します。
次の例では、RUN
コマンドを使用してレベル0の増分バックアップを作成し、4つのチャネルを割り当ててバックアップの速度を上げます。この数は、必要に応じて増減させます。FORMAT句では+DATA
を指定します。これは、データベースの格納に使用されるASMディスク・グループの名前です。
RUN { ALLOCATE CHANNEL dev1 DEVICE TYPE DISK; ALLOCATE CHANNEL dev2 DEVICE TYPE DISK; ALLOCATE CHANNEL dev3 DEVICE TYPE DISK; ALLOCATE CHANNEL dev4 DEVICE TYPE DISK; BACKUP AS COPY INCREMENTAL LEVEL 0 DATABASE FORMAT '+DATA' TAG 'ORA_ASM_MIGRATION'; }
次の例では、前の手順で作成されたレベル0のバックアップの増分レベル1のコピーを作成します。
RUN { ALLOCATE CHANNEL dev1 DEVICE TYPE DISK; ALLOCATE CHANNEL dev2 DEVICE TYPE DISK; ALLOCATE CHANNEL dev3 DEVICE TYPE DISK; ALLOCATE CHANNEL dev4 DEVICE TYPE DISK; BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'ORA_ASM_MIGRATION' DATABASE; }
ARCHIVELOG
モードであり、オープンしている場合は、オンライン・ログをアーカイブします。次の例では、SQL
コマンドを使用して、現行のREDOログをアーカイブします。
RMAN> SQL "ALTER SYSTEM ARCHIVE LOG CURRENT";
次の例では、サーバー・パラメータ・ファイルをバックアップします。
RMAN> BACKUP AS BACKUPSET SPFILE;
次のコマンドを使用して、ブロック・チェンジ・トラッキングを無効にします。
RMAN> SQL "ALTER DATABASE DISABLE BLOCK CHANGE TRACKING";
フラッシュバック・ログはASMに移行できないため、フラッシュバック・データベースを無効にする必要があります。次のコマンドを使用して、フラッシュバック・データベースを無効にします。
RMAN> SQL "ALTER DATABASE FLASHBACK OFF";
次のコマンドでは、Q106
という名前の保証付きリストア・ポイントが削除されます。
RMAN> SQL "DROP RESTORE POINT Q106";
次のコマンドは、データベースを停止します。
RMAN> SHUTDOWN IMMEDIATE;
次の手順の目的は、データベースの停止時間を最小限にすることです。移行するデータベースがプライマリまたはスタンバイかどうかによって、手順がわずかに異なることに注意してください。この手順では、「ASMへのデータベースの移行の準備」と同じことを想定しています。リカバリ領域をASMに移行しない場合は、手順の一部を変更する必要があることに注意してください。
データベースがサーバー・パラメータ・ファイルを使用しているかどうかによって、手順が異なります。
sid
はインスタンスのSIDです。
RMAN> STARTUP MOUNT; RMAN> RESTORE SPFILE TO '+DATA/spfilesid.ora'; RMAN> SHUTDOWN IMMEDIATE;
CREATE SPFILE
コマンドを実行します。ここで、sid
はデータベースのSIDです(コマンドは2行にわたります)。
SQL> CREATE SPFILE='+DATA/spfilesid.ora' FROM PFILE='?/dbs/initsid.ora';
その後、?/dbs
ディレクトリからspfile
sid
.ora
およびinit
sid
.ora
を削除し、次の内容の行を含むinit
sid
.ora
を新しく作成します。
SPFILE='+DATA/spfilesid.ora'
DB_CREATE_FILE_DEST
と、オプションのDB_CREATE_ONLINE_LOG_DEST_
n
初期化パラメータをASMディスク・グループに設定します。データベースでリカバリ領域を使用する場合は、リカバリ領域の場所をASMディスク・グループに変更します。また、リカバリ領域のサイズも変更します。
次の例に示すように、SQL*Plusでコマンドを実行します。この例では、フラッシュ・リカバリ領域のサイズが100GBと想定され、フラッシュ・リカバリ領域に+FRA
ディスク・グループが指定されています。
SQL> STARTUP FORCE NOMOUNT; SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='+DATA' SID='*'; SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=100G SID='*'; SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='+FRA' SID='*';
CONTROL_FILES
初期化パラメータをASMの場所に設定します。フラッシュ・リカバリ領域を移行する場合は、SQL*Plusで次のコマンドを入力してデータベース・インスタンスを再起動し、制御ファイルの場所をディスク・グループ+DATA
および+FRA
に設定します。
SQL> STARTUP FORCE NOMOUNT; SQL> ALTER SYSTEM SET CONTROL_FILES='+DATA','+FRA' SCOPE=SPFILE SID='*';
フラッシュ・リカバリ領域を移行しない場合は、SQL*Plusで次のコマンドを入力してデータベース・インスタンスを再起動し、制御ファイルの場所をディスク・グループ+DATA
に設定します。
SQL> STARTUP FORCE NOMOUNT; SQL> ALTER SYSTEM SET CONTROL_FILES='+DATA','+DATA' SCOPE=SPFILE SID='*';
Recovery Manager端末に切り替えて、制御ファイルをリストアします。次の例では、original_cf_name
は移行前の初期化パラメータ・ファイル内の制御ファイル名です。
RMAN> STARTUP FORCE NOMOUNT; RMAN> RESTORE CONTROLFILE FROM 'original_cf_name'; RMAN> ALTER DATABASE MOUNT;
Recovery Managerを使用して、「ASMへのデータベースの移行の準備」の手順5で作成したデータベース・コピーに切り替えます。切替えによって、すべてのデータファイルの名前がASMディスク・グループ上のファイルに変更されます。その後、データベースをリカバリします。増分バックアップが行われた場合、Recovery Managerはリカバリ時にこれを適用します。たとえば、Recovery Managerプロンプトで次のコマンドを入力します。
SWITCH DATABASE TO COPY; RUN { ALLOCATE CHANNEL dev1 DEVICE TYPE DISK; ALLOCATE CHANNEL dev2 DEVICE TYPE DISK; ALLOCATE CHANNEL dev3 DEVICE TYPE DISK; ALLOCATE CHANNEL dev4 DEVICE TYPE DISK; RECOVER DATABASE; }
たとえば、SQL*Plusで次の文を入力します。
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '+DATA'; SQL> ALTER DATABASE FLASHBACK ON;
通常の操作モードは、データベースがプライマリまたはスタンバイかどうかによって異なります。
SQL*Plusを使用して、一時ファイルを再作成します。次の例では、元のストレージの一時ファイルの名前はtempfile_name
です。一時表領域の名前は、temp_tbs_name
です。
SQL> ALTER DATABASE TEMPFILE 'tempfile_name' DROP; SQL> ALTER TABLESPACE temp_tbs_name ADD TEMPFILE;
これがプライマリ・データベースの場合は、ASMに新しいログ・グループ・メンバーを追加して古いメンバーを削除します。次のPL/SQLスクリプトを使用すると、オンラインREDOログ・グループをASMディスク・グループに移行できます。このPL/SQLスクリプトでは、手順3で指定したOracle Managed Files初期化パラメータが設定されていることを想定しています。
SET SERVEROUTPUT ON; DECLARE CURSOR rlc IS SELECT GROUP# GRP, THREAD# THR, BYTES, 'NO' SRL FROM V$LOG UNION SELECT GROUP# GRP, THREAD# THR, BYTES, 'YES' SRL FROM V$STANDBY_LOG ORDER BY 1; stmt VARCHAR2(2048); BEGIN FOR rlcRec IN rlc LOOP IF (rlcRec.srl = 'YES') THEN stmt := 'ALTER DATABASE ADD STANDBY LOGFILE THREAD ' || rlcRec.thr || ' SIZE ' || rlcRec.bytes; EXECUTE IMMEDIATE stmt; stmt := 'ALTER DATABASE DROP STANDBY LOGFILE GROUP ' || rlcRec.grp; EXECUTE IMMEDIATE stmt; ELSE stmt := 'ALTER DATABASE ADD LOGFILE THREAD ' || rlcRec.thr || ' SIZE ' || rlcRec.bytes; EXECUTE IMMEDIATE stmt; BEGIN stmt := 'ALTER DATABASE DROP LOGFILE GROUP ' || rlcRec.grp; DBMS_OUTPUT.PUT_LINE(stmt); EXECUTE IMMEDIATE stmt; EXCEPTION WHEN OTHERS THEN EXECUTE IMMEDIATE 'ALTER SYSTEM SWITCH LOGFILE'; EXECUTE IMMEDIATE 'ALTER SYSTEM CHECKPOINT GLOBAL'; EXECUTE IMMEDIATE stmt; END; END IF; END LOOP; END; /
RMAN> DELETE REMOTE ARCHIVELOG ALL;
RUN { ALLOCATE CHANNEL dev1 DEVICE TYPE DISK; ALLOCATE CHANNEL dev2 DEVICE TYPE DISK; ALLOCATE CHANNEL dev3 DEVICE TYPE DISK; ALLOCATE CHANNEL dev4 DEVICE TYPE DISK; BACKUP AS COPY ARCHIVELOG ALL DELETE INPUT; BACKUP BACKUPSET ALL DELETE INPUT; BACKUP AS COPY DATAFILECOPY ALL DELETE INPUT; }
ASMから代替ストレージ・システムへのデータベースの移行は、基本的にASMへの移行の逆です。次のように、「ASMへのデータベースの移行の準備」および「ASMへのデータベースの移行」の手順を変更します。
BACKUP
コマンドのFORMAT
句でASMの場所を指定する場合は、バックアップの書式を代替ストレージの場所に変更します。
ARCHIVELOG
モードのデータベースで、アクティブなデータファイルをASMディスク・グループ間で移動する必要がある場合があります。この場合は、BACKUP AS COPY
を使用してデータファイルを新しいディスク・グループにコピーし、SET NEWNAME
およびSWITCH
コマンドを使用して制御ファイル内のデータファイルの名前を変更します。
この例では、ASMディスク・グループASMDSK2
およびASMDSK1
を使用することを想定しています。データファイル+ASMDSK2/rdbms/datafile/tbs_5.256.565313879
を、ディスク・グループASMDSK1
に移動します。
たとえば、Recovery Managerをターゲット・データベースに接続した後、次のREPORT
コマンドを実行します。移動するファイルのデータファイル番号およびデータファイル名の両方を書き留めます。
REPORT SCHEMA;
たとえば、次のBACKUP AS COPY
コマンドを発行して、ASMDSK2
上のデータファイルをASMDSK1
にバックアップします。
BACKUP AS COPY DATAFILE "+ASMDSK2/rdbms/datafile/tbs_5.256.565313879" FORMAT "+ASMDSK1";
次の例に示すように、データファイル番号でデータファイルを指定することもできます。
BACKUP AS COPY DATAFILE 23 FORMAT "+ASMDSK1";
たとえば、Recovery Managerクライアントで次のSQL
コマンドを実行します。データファイルの名前を2つの一重引用符で囲むことに注意してください。
SQL "ALTER DATABASE DATAFILE ' ' +ASMDSK2/rdbms/datafile/tbs_5.256.565313879 ' ' OFFLINE";
たとえば、Recovery ManagerクライアントでSWITCH ... TO COPY
コマンドを次のように実行します。SWITCH
のTO COPY
オプションは、データファイルをデータファイルの最新コピーに切り替えます。データファイルは、名前または番号で指定できます。
SWITCH DATAFILE "+ASMDSK2/rdbms/datafile/tbs_5.256.565313879" TO COPY;
このコマンドの出力には、データファイルの新しい名前が表示されます。
たとえば、Recovery ManagerクライアントでRECOVER
コマンドを次のように実行します。データファイルは、名前または番号で指定できます。
RECOVER DATAFILE "+ASMDSK1/rdbms/datafile/tbs_5.256.603733209";
たとえば、Recovery ManagerクライアントでSQL
コマンドを次のように実行します。
SQL "ALTER DATABASE DATAFILE ' ' +ASMDSK1/rdbms/datafile/tbs_5.256.603733209 ' ' ONLINE";
この例では、+ASMDSK2/rdbms/datafile/tbs_5.256.565313879
がASMDSK2
内の元のデータファイルです。このデータファイルに対してSET NEWNAME
およびSWITCH
コマンドを発行したため、元のファイルは現在Recovery Managerにデータファイル・コピーとして記録されています。このファイルは、Recovery ManagerクライアントでDELETE
コマンドを次のように実行すると削除できます。
DELETE DATAFILECOPY "+ASMDSK2/rdbms/datafile/tbs_5.256.603733209";
|
![]() Copyright © 2003, 2008, Oracle Corporation. All Rights Reserved. |
|