8 RMANによるOracle ASMのデータ移行の実行
Recovery Manager (RMAN)では、Oracle ASMへのデータ移行およびOracle ASMからのデータ移行用のツールを提供します。
この章では、Recovery Manager(RMAN)を使用したOracle自動ストレージ管理(Oracle ASM)ストレージへのデータの移行方法およびOracle ASMストレージからのデータの移行方法について説明します。
この章の内容は次のとおりです。
この章の手順には、LinuxプラットフォームでのOracle ASMスタンドアロン環境が含まれています。ファイルの場所および手順は、Oracle構成が異なる場合や他のオペレーティング・システム・プラットフォームの場合は、異なる可能性があります。
関連項目:
-
RMANの使用の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
-
特定のプラットフォームでのOracle ASMの内外のデータの移行に関するオペレーティング・システム固有のドキュメント
-
Oracle Cluster Registryと投票ファイルの管理および移行の詳細は、『Oracle Clusterware管理およびデプロイメント・ガイド』を参照してください。
-
Oracle RAC構成におけるOracle ASMの内外のデータの移行の詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。
-
HTML形式などのフォーマット方式でOracle ASMおよびOracle ACFSのメタデータを収集およびバックアップする方法の詳細は、My Oracle Support (
https://support.oracle.com
)の記事を参照してください。
Oracle ASMのデータ移行の概要
Oracle ASMのデータ移行の目的
Oracle ASMストレージに代わるものには、ファイル・システム、RAWディスクおよびSAN構成があります。Oracle ASMには、パフォーマンス最適化、冗長性保護およびロード・バランシングなど、これらの代替ストレージより多くの利点があります。Oracle ASMによりディスクが管理されるため、サード・パーティの論理ボリューム・マネージャは必要ありません。Oracle ASMには既存の共有ストレージがあるため、Oracle Real Application Clusters(Oracle RAC)データベースはOracle ASMの効果を得ることができます。
データベースでOracle ASM以外のストレージ・システムを現在使用している場合、データベースの全体または一部をOracle ASMに移行して、データベース管理を簡略化できます。高速リカバリ領域をOracle ASMに移行することもできます。
ネイティブ・オペレーティング・システム・コマンド(Linux cp
またはWindows COPY
など)では、Oracle ASMストレージでのファイルの書込みまたは読取りはできません。RMANではOracle ASMファイルの読込みおよび書込みができるため、RMANを使用してデータファイルのOracle ASMストレージへのコピー、Oracle ASMストレージからのコピー、Oracle ASMディスク・グループ間でのコピーができます。この方法は、ユーザー管理のディスクにバックアップを格納する必要がある場合に便利です。
Oracle ASMのデータ移行の基本概念
RMANをプライマリ・バックアップ・ツールとして使用していなくても、RMANによりデータをOracle ASMに移行できます。移行にはRMANデータベース・バックアップが1つ必要です。
Oracle ASMと代替ストレージ・システムの両方に、データベース全体を保持するために十分なディスク領域がある場合、データベースをOracle ASMに直接移動できます。十分な記憶域がない場合は、データベースをテープにバックアップし、古いディスク領域を使用するOracle ASMディスク・グループを作成して、テープからOracle ASMにデータベースをリストアできます。
新しいリカバリ領域の場所を設定した後、既存のバックアップが古いリカバリ領域に残り、リカバリ領域の合計ディスク割当てには不利になります。バックアップは、領域が必要な場合、古いリカバリから削除されます。これらのバックアップは、RMANで使用可能です。ディスク領域が必要でないかぎり、レガシー・バックアップを新しいOracle ASMリカバリ領域に移動する必要はありません。古いリカバリ領域でファイルによって消費されている領域を解放するには、ファイルをテープにバックアプするか、Oracle ASMリカバリ領域に移行します。
ノート:
外部アーカイブREDOログは、LogMinerセッション用のロジカル・スタンバイ・データベースで受信されるログです。外部アーカイブREDOログは移行できません。通常のアーカイブ・ログと異なり、外部アーカイブ・ログには異なる内部データベース識別子(DBID)があります。このため、ロジカル・スタンバイ・データベース上ではバックアップまたはリストアできません。
Oracle ASMから代替ストレージ・システムへのデータベースの移行は、代替ストレージ・システムからOracle ASMへの移行に似ています。主な変更点は、代替ストレージ・システムのファイルの場所を参照する各ステップを変更することです。
RMANを使用したOracle ASMへのデータ移行の基本ステップ
この項では、RMANを使用してデータベース全体および高速リカバリ領域を代替ストレージからOracle ASMに移行するプロセスについて説明します。
高速リカバリ領域は、リカバリ関連のファイル(制御ファイルおよびオンラインREDOログのコピー、アーカイブREDOログ・ファイル、フラッシュバック・ログおよびRMANバックアップ)の格納に使用できる任意のディスクの場所です。高速リカバリ領域内のファイルは、Oracle DatabaseおよびRMANによって自動的に管理されます。高速リカバリ領域のユーザー指定の最大サイズである、ディスク割当てを指定できます。ディスク割当て制限に達すると、Oracleによって不要なファイルが自動的に削除されます。
フラッシュバック・ログは、フラッシュバック・データベース操作の実行に使用されるOracle生成ログです。データベースでは、高速リカバリ領域へのフラッシュバック・ログの書込みのみを実行できます。フラッシュバック・ログは、順次書き込まれ、アーカイブは行われません。また、ディスクへのバックアップはできません。
データベース全体および高速リカバリ領域を代替ストレージからOracle ASMに移行するには、次のステップを実行します。
-
データベースおよびサーバー・パラメータ・ファイルをバックアップし、Oracle Flashback Databaseを無効にします。
Oracle Flashback Databaseオプションは、RMANまたはSQLでの
FLASHBACK
DATABASE
コマンドによってデータベース全体を前の一貫性のあるシステム変更番号(SCN)に戻します。データベース・フラッシュバックは、従来のメディア・リカバリとは異なります。これは、物理ファイルのリストアを必要とせず、かわりに変更されたデータ・ブロックの保存イメージを使用して現在のデータファイルを過去の状態にリストアするためです。この機能では、フラッシュバック・ログとアーカイブREDOログを使用します。このステップの詳細は、RMANを使用してOracle ASMにデータベースを移行するための準備を参照してください。
-
ファイルをOracle ASMにリストアしてデータベースをリカバリし、必要に応じて高速リカバリ領域をOracle ASMに移行します。
このステップの詳細は、RMANを使用したOracle ASMへのデータベースの移行を参照してください。
Oracle ASMから代替ストレージにファイルを移行するには、Oracle ASMから代替ストレージへのデータベースの移行を参照してください。
RMANを使用してOracle ASMにデータベースを移行するための準備
この項では、データベースを移行するための準備の方法について説明します。この項では、次のことを想定しています。
-
データベースを2つのOracle ASMディスク・グループ、すなわちデータベース用の
+DATA
と高速リカバリ領域用の+FRA
に移行します。 -
Oracle ASMストレージに移行するデータベースの名前は
mydb
です。
Oracle ASMへの移行のためにデータベースの準備をするには:
-
データベースの
COMPATIBLE
初期化パラメータ設定が11.0.0
未満の場合、読取り専用のトランスポータブル表領域を読取り/書込み用にします。読取り専用トランスポータブル表領域は、RMANでバックアップできないために移行できません。
-
データベースは物理スタンバイ・データベースで、管理リカバリが開始されている場合、管理リカバリを停止します。
物理スタンバイ・データベースは、障害保護用に使用できる本番データベースのコピーです。
たとえば、SQL*Plusを(
SYSDBA
権限ではなく)SYSBACKUP
権限でデータベースに接続して、義務のセキュリティ・モデルの分離を強制し、次の文を実行して管理リカバリを停止します。SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
このターミナル・ウィンドウを開いたままにします。
-
サーバー・パラメータ・ファイルまたは初期化パラメータ・ファイルを一時的な保存場所にコピーします。
次の例では、オペレーティング・システム・ユーティリティを使用して、サーバー・パラメータ・ファイルをコピーします。
$ cp spfileMYDB.ora orig_spfileMYDB.ora
-
新しいターミナル・ウィンドウで、RMANセッションを開始し、
TARGET
として移行するデータベースに接続します。必要に応じて、リカバリ・カタログに接続します。SYSBACKUP
権限で接続して、義務のセキュリティ・モデルの分離を強制します。 -
データファイルをOracle ASMディスク・グループにバックアップします。
次の例では、
RUN
コマンドを使用して、レベル0増分バックアップを作成し、4チャネルを割り当ててバックアップ速度を速めます。レベル0増分バックアップは、バックアップ対象のデータファイルのすべてのデータ・ブロックをバックアップするRMAN増分バックアップです。レベル0の増分バックアップは、内容は全体バックアップと同じですが、全体バックアップとは異なり、増分バックアップ計画の一部とみなされます。増分バックアップは、変更されたブロックのみをバックアップするRMANバックアップです。増分バックアップはレベルによって分類されます。レベル0増分バックアップは全体バックアップと同じ機能で、どちらも使用されたことがあるすべてのブロックをバックアップします。全体バックアップでは後続の増分バックアップでバックアップされたブロックに影響がないのに対し、増分バックアップでは影響がある点で異なります。
全体バックアップは、非増分RMANバックアップです。全体は、データベースのどれだけがバックアップされるかではなく、バックアップが増分ではないということを指しています。したがって、1つのデータファイルの全体バックアップを作成できます。
この数値は適宜増減します。FORMAT句は、データベースの格納に使用されるOracle ASMディスク・グループの名前である
+DATA
を指定しています。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'; }
-
ブロック変更トラッキングがデータベースに対して有効である場合、任意でレベル1増分バックアップを作成します。これは後からデータベース・コピーのリカバリに使用できます。
ブロック変更トラッキングは、各データベース更新の影響を受けたデータファイル・ブロックをOracleに追跡させるデータベース・オプションです。追跡情報は、ブロック・チェンジ・トラッキング・ファイルに格納されます。ブロック変更トラッキングを有効にすると、RMANでは変更トラッキング・ファイルから変更されたブロックの記録を使用して、データファイル全体を読み取るのではなく、変更されたブロックのみを読み取ることで、増分バックアップのパフォーマンスを向上させます。
次の例では、前のステップで作成したレベル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";
-
フラッシュバック・データベースが有効な場合、無効にして、保証付きリストア・ポイントを削除します。
ノート:
高速リカバリ領域を移行しない場合は、このステップを省略してください。
フラッシュバック・ログをOracle ASMに移行できないため、Oracle Flashback Databaseを無効にする必要があります。次のコマンドでフラッシュバック・データベースを無効にします。
RMAN> SQL "ALTER DATABASE FLASHBACK OFF";
次のコマンドにより、
Q106
という保証付きリストア・ポイントが削除されます。RMAN> SQL "DROP RESTORE POINT Q106";
-
一貫性のある状態でデータベースを停止します。
次のコマンドにより、データベースを停止します。
RMAN> SHUTDOWN IMMEDIATE;
RMANを使用したOracle ASMへのデータベースの移行
次の手順は、データベースの停止時間を最小限にするためのものです。移行の対象がプライマリ・データベースかスタンバイ・データベースによって、ステップがわずかに異なります。この手順では、「RMANを使用してOracle ASMにデータベースを移行するための準備」で説明したのと同じことを前提とします。リカバリ領域をOracle ASMに移行しない場合は、示されているステップの一部を変更する必要があります。
ノート:
次の手順は、SQL*PlusとRMANの間で切り替わるため、それぞれのユーティリティに1つのターミナル・ウィンドウを開いたままにします。
Oracle ASMにデータベースを移行するには:
-
「RMANを使用してOracle ASMにデータベースを移行するための準備」のステップに従います。
-
Oracle ASMストレージでサーバー・パラメータ・ファイルをリストアまたは作成します。
データベースでサーバー・パラメータ・ファイルが使用されているかどうかによって、ステップが異なります。
-
データベースでサーバー・パラメータ・ファイルが使用されている場合、次のコマンドでOracle ASMディスク・グループにリストアします。
sid
はインスタンスのSIDです。RMAN> STARTUP MOUNT; RMAN> RESTORE SPFILE TO '+DATA/spfilesid.ora'; RMAN> SHUTDOWN IMMEDIATE;
-
データベースでサーバー・パラメータ・ファイルが使用されていない場合、Oracle ASMで1つ作成します。SQL*Plusで
CREATE SPFILE
コマンドを次のように実行します(sid
はデータベースのSIDです)。SQL> CREATE SPFILE='+DATA/spfilesid.ora' FROM PFILE='?/dbs/initsid.ora';
-
-
Oracle Managed Files初期化パラメータをOracle ASMの場所に設定します。
ノート:
高速リカバリ領域を移行しない場合、
DB_RECOVERY_FILE_DEST
およびDB_RECOVERY_FILE_DEST_SIZE
初期化パラメータの設定を変更しないでください。ただし、オンラインREDOログの移行の場合は、DB_CREATE_ONLINE_LOG_DEST_
n
パラメータをOracle ASMの場所に設定する必要があります。DB_CREATE_FILE_DEST
およびオプションのDB_CREATE_ONLINE_LOG_DEST_
n
初期化パラメータをOracle ASMディスク・グループに設定します。データベースでリカバリ領域を使用する場合、リカバリ領域の場所をOracle 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
初期化パラメータをOracle 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='*';
-
制御ファイルをOracle ASMに移行し、制御ファイルをマウントします。
制御ファイルをリストアするためにRMANターミナルに切り替えます。次の例で、
original_cf_name
は、移行前の初期化パラメータ・ファイル内の制御ファイル名です。RMAN> STARTUP FORCE NOMOUNT; RMAN> RESTORE CONTROLFILE FROM 'original_cf_name'; RMAN> ALTER DATABASE MOUNT;
-
データファイルをOracle ASMに移行します。
RMANを使用して、「RMANを使用してOracle ASMにデータベースを移行するための準備」のステップ「データファイルをOracle ASMディスク・グループにバックアップします」で作成したデータベース・コピーに切り替えます。切替えにより、すべてのデータファイルはOracle ASMディスク・グループ上のファイルに名前が変更されます。後で、データベースをリカバリします。増分バックアプが取られた場合、RMANではそれらをリカバリ中に適用します。たとえば、RMANプロンプトで次のコマンドを入力します。
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> ALTER DATABASE OPEN;
-
データベースがスタンバイ・データベースの場合は、次のように管理リカバリ・モードを再開します。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;
-
-
一時ファイルを削除し、Oracle ASMに再作成します。
SQL*Plusを使用して、一時ファイルを再作成します。次の例では、元の記憶域にある一時ファイルの名前は
tempfile_name
です。一時表領域の名前はtemp_tbs_name
です。SQL> ALTER DATABASE TEMPFILE 'tempfile_name' DROP; SQL> ALTER TABLESPACE temp_tbs_name ADD TEMPFILE;
-
オンラインREDOログ・ファイルを移行します。
これがプライマリ・データベースである場合、Oracle ASMで新しいログ・グループ・メンバーを追加し、古いメンバーを削除します。次のPL/SQLスクリプトを使用すると、オンラインREDOログ・グループをOracle ASMディスク・グループに移行できます。PL/SQLスクリプトでは、「RMANを使用したOracle ASMへのデータベースの移行」のステップ「Oracle Managed Files初期化パラメータをOracle ASMの場所に設定します」で指定したOracle Managed Files初期化パラメータが設定されていると想定しています。
-
必要に応じて、古い高速リカバリ領域のバックアップおよびコピーを、次のようにOracle ASMに移行します。
-
リカバリ領域に外部アーカイブ・ログが存在する場合、それらをOracle ASMに移行できません。RMANプロンプトで次のコマンドを実行します。
RMAN> DELETE ARCHIVELOG ALL;
-
アーカイブREDOログ・ファイル、バックアップ・セットおよびデータファイル・コピーをOracle ASMにバックアップします。たとえば、RMANプロンプトで次のコマンドを実行します。
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; }
-
例8-1 オンラインREDOログの移行
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; /
Oracle ASMから代替ストレージへのデータベースの移行
Oracle ASMから代替ストレージ・システムへのデータベースの移行は、基本的にOracle ASMへの移行の逆です。RMANを使用してOracle ASMにデータベースを移行するための準備およびRMANを使用したOracle ASMへのデータベースの移行のステップを次のように変更します。
-
手順でOracle Managed Filesの場所を指定する場合、代替ストレージ内の場所を使用するように手順を変更します。
-
BACKUP
コマンドのFORMAT
句でOracle ASMの場所を指定する場合、バックアップ形式を代替ストレージの場所に変更します。 -
SQL文で使用するファイル名がOracle ASMの場所である場合、代替ストレージの場所のファイル名に変更します。
RMANを使用したOracle ASMディスク・グループ間でのデータファイルの移動
ARCHIVELOG
モード・データベースのアクティブ・データファイルをOracle ASMディスク・グループ間で移動できます。RMANのBACKUP
AS
COPY
を使用してデータファイルを新規ディスク・グループにコピーし、SET
NEWNAME
コマンドとSWITCH
コマンドを使用して制御ファイルでデータファイルの名前を変更できます。
ALTER
DATABASE
MOVE
DATAFILE
を使用することもできます。データファイルを移動するためのSQL文です。ALTER
DATABASE
MOVE
DATAFILE
を使用したオンラインでのデータファイルの移動の詳細は、ALTER DATABASEを使用したディスク・グループ間のデータファイルの移動を参照してください。
RMANを使用したこのシナリオでは、ディスク・グループDATA
およびUSERDATA
を使用し、データファイルusers.261.689589837
をディスク・グループUSERDATA
に移動することを前提としています。データファイルの移動手順を始める前に、データベースに対してARCHIVELOG
モードが有効になっていることを確認します。
RMANのBACKUP
AS
COPY
プロシージャをSET
NEWNAME
およびSWITCH
コマンドとともに使用して、あるOracle ASMディスク・グループから別のディスク・グループにデータファイルを移動するには、次のステップを実行します。
-
RMANを起動し、ターゲット・データベースに接続します。
次に例を示します。
$ rman RMAN> CONNECT TARGET SYS@orcl target database Password: XXXXXXXXX connected to target database: ORCL (DBID=1217369048)
-
データファイルの名前を示すレポートを生成します。
RMANをターゲット・データベースに接続した後、次の
REPORT
コマンドを実行します。移動するファイルのデータファイル名を書き留めます。次に例を示します。
RMAN> REPORT SCHEMA; Report of database schema for database with db_unique_name ORCL List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------- ------- ------------------------ 1 740 SYSTEM *** +DATA/orcl/datafile/system.258.689589737 2 570 SYSAUX *** +DATA/orcl/datafile/sysaux.259.689589785 3 55 UNDOTBS1 *** +DATA/orcl/datafile/undotbs1.260.689589831 4 5 USERS *** +DATA/orcl/datafile/users.261.689589837 List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------- ----------- -------------------- 1 20 TEMP 32767 +DATA/orcl/tempfile/temp.262.689589851
-
データファイルを新しいOracle ASMディスク・グループにバックアップします。
BACKUP
AS
COPY
コマンドを実行して、DATA
上のデータファイルをUSERDATA
にバックアップします。次に例を示します。
RMAN> BACKUP AS COPY DATAFILE "+DATA/orcl/datafile/users.261.689589837" FORMAT "+USERDATA"; Starting backup at 16-JUN-09 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=51 device type=DISK channel ORA_DISK_1: starting datafile copy input datafile file number=00004 name=+DATA/orcl/datafile/users.261.689589837 output file name=+USERDATA/orcl/datafile/users.256.689682663 tag=TAG20090616T103101 RECID=13 STAMP=689682663 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 16-JUN-09
データファイル番号およびデータファイル・タイプによってデータファイルを指定することもできます。
次に例を示します。
BACKUP AS COPY DATAFILE 4 FORMAT "+USERDATA";
-
新しいディスク・グループに移動するデータファイルをオフラインにします。
RMANクライアントで次の
SQL
コマンドを実行します。データファイルの名前を、二重引用符ではなく、2つの一重引用符で囲みます。次に例を示します。
RMAN> SQL "ALTER DATABASE DATAFILE ''+DATA/orcl/datafile/users.261.689589837'' OFFLINE"; sql statement: ALTER DATABASE DATAFILE ''+DATA/orcl/datafile/users.261.689589837'' OFFLINE
-
制御ファイルを新規に作成したデータファイルのコピーに指定します。
RMANクライアントで
SWITCH...TO COPY
コマンドを実行します。SWITCH
のTO
COPY
オプションにより、データファイルをその最新コピーに切り替えます。次に例を示します。
RMAN> SWITCH DATAFILE "+DATA/orcl/datafile/users.261.689589837" TO COPY; datafile 4 switched to datafile copy "+USERDATA/orcl/datafile/users.256.689682663"
このコマンドの出力には、データファイルの新しい名前が表示されます。
-
名前を変更したデータファイルをリカバリします。
RMANクライアントで
RECOVER
コマンドを実行します。次に例を示します。
RMAN> RECOVER DATAFILE "+USERDATA/orcl/datafile/users.256.689682663"; Starting recover at 16-JUN-09 using channel ORA_DISK_1 starting media recovery media recovery complete, elapsed time: 00:00:01 Finished recover at 16-JUN-09
-
データファイルをオンラインにします。
RMANクライアントで次の
SQL
コマンドを実行します。データファイルの名前を、二重引用符ではなく、2つの一重引用符で囲みます。次に例を示します。
RMAN> SQL "ALTER DATABASE DATAFILE ''+USERDATA/orcl/datafile/users.256.689682663'' ONLINE"; sql statement: ALTER DATABASE DATAFILE ''+USERDATA/orcl/datafile/users.256.689682663'' ONLINE
-
元のOracle ASMディスク・グループからデータファイル・コピーを削除します。
ここでは、
+DATA/orcl/datafile/users.261.689589837
がDATA
にある元のデータファイルです。このデータファイルに対してSET NEWNAME
コマンドとSWITCH
コマンドを発行したため、元のファイルがRMANリポジトリにデータファイル・コピーとして記録されています。RMANクライアントでDELETE
コマンドを実行し、このファイルを削除します。次に例を示します。
RMAN> DELETE DATAFILECOPY "+DATA/orcl/datafile/users.261.689589837"; released channel: ORA_DISK_1 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=51 device type=DISK List of Datafile Copies ======================= Key File S Completion Time Ckp SCN Ckp Time ------- ---- - --------------- ---------- --------------- 14 4 A 16-JUN-09 864471 16-JUN-09 Name: +DATA/orcl/datafile/users.261.689589837 Tag: TAG20090615T084217 Do you really want to delete the above objects (enter YES or NO)? y deleted datafile copy datafile copy file name=+DATA/orcl/datafile/users.261.689589837 RECID=14 STAMP=689683255 Deleted 1 objects