web-dev-qa-db-ja.com

WindowsからLinuxへのOracleデータベースの複製

ECLSという名前の通常のOracle 12cデータベースがすでに作成されています。私はこのデータベースからではなく、.BKPファイルの山を与えられており、ECLSのすべてをこれらのファイルの内容で置き換えるように言われました。

これが私がこれまでにこれを試みた方法です:

$ sqlplus / as sysdba
SQL> shutdown immediate;
SQL> startup pfile='/u01/app/Oracle/product/12.1.0/db_1/dbs/initECLS.ora' nomount;
SQL> exit
$ rman auxiliary /
RMAN> duplicate database to ECLS backup location '/u01/dumpfilesgohere' NOFILENAMECHECK;

Pfile内で、次の行を設定しています。

*.enable_pluggable_database=true

2.5時間実行した後、次のエラーメッセージで失敗します。

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 02/02/2017 14:05:04
RMAN-05501: aborting duplication of target database
RMAN-03015: error occurred in stored script Memory Script
RMAN-11003: failure during parse/execution of SQL statement: alter database recover logfile '/u01/app/Oracle/fast_recovery_area/ECLS/archivelog/2017_02_02/o1_mf_1_73358_d970psod_.arc'
ORA-10562: Error occurred while applying redo to data block (file# 66, block# 799698)
ORA-10564: tablespace NCDS_TS
ORA-01110: data file 66: '/u01/app/Oracle/product/12.1.0/db_1/dbs/D:ORADATAFUUVZPD152204CC3CA44789537C2BE3F39041EDATAFILEO1_MF_NCDS_TS_CQ476L1O_.DBF'
ORA-10561: block type 'TRANSACTION MANAGED DATA BLOCK', data object# 106975
ORA-00600: internal error code, arguments: [ktbrcl:NOOP incompat_opt], [212], [], [], [], [], [], [], [], [], [], [] 

/u01/app/Oracle/diag/rdbms/ecls/ECLS/alert/log.xmlのログに次のメッセージが表示されます:

<msg time='2017-02-02T14:05:03.614-05:00' org_id='Oracle' comp_id='rdbms' type='UNKNOWN' level='16' Host_addr='127.0.0.1' pid='5138'>
 <txt>Errors in file /u01/app/Oracle/diag/rdbms/ecls/ECLS/trace/ECLS_pr07_5138.trc:
ORA-00308: cannot open archived log &apos;D:\ORADATA\FUUVZP\ONLINELOG\O1_MF_1_CQ39NGLV_.LOG&apos;
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-00600: internal error code, arguments: [ktbrcl:NOOP incompat_opt], [67], [], [], [], [], [], [], [], [], [], []
 </txt>
</msg>
<msg time='2017-02-02T14:05:03.614-05:00' org_id='Oracle' comp_id='rdbms' type='UNKNOWN' level='16' Host_addr='127.0.0.1' pid='5138'>
 <txt>Slave exiting with ORA-10562 exception
 </txt>
</msg>
<msg time='2017-02-02T14:05:03.614-05:00' org_id='Oracle' comp_id='rdbms' type='UNKNOWN' level='16' Host_addr='127.0.0.1' pid='5138'>
 <txt>Errors in file /u01/app/Oracle/diag/rdbms/ecls/ECLS/trace/ECLS_pr07_5138.trc:
ORA-10562: Error occurred while applying redo to data block (file# 66, block# 1200147)
ORA-10564: tablespace NCDS_TS
ORA-01110: data file 66: &apos;/u01/app/Oracle/product/12.1.0/db_1/dbs/D:ORADATAFUUVZPD152204CC3CA44789537C2BE3F39041EDATAFILEO1_MF_NCDS_TS_CQ476L1O_.DBF&apos;
ORA-10561: block type &apos;TRANSACTION MANAGED DATA BLOCK&apos;, data object# 106975
ORA-00600: internal error code, arguments: [ktbrcl:NOOP incompat_opt], [67], [], [], [], [], [], [], [], [], [], []
 </txt>
</msg>

見つからないファイルとWindowsファイルパスに関するLinuxエラーが表示されるという事実は、.BKPファイルがWindowsマシンで使用されているときにBKKファイルが生成されたという事実に何らかの関係があることを示唆しています。 Linuxマシン。

これをどのように説明できますか? pfileで変更する必要があるstartupの設定はありますか?または、duplicateコマンドでRMANに渡す必要がある別の引数がありますか?

1
ArtOfWarfare

Oracleの従業員から、REDOログはプラットフォームに依存しないと言われました。 Windowsデータベースをシャットダウンして、REDOログなしでデータベースのコールドバックアップを行うか、Windowsで実行されている別のOracleデータベースにすでに持っているファイルを復元する必要があると言われました。

最終的に、データベースを復元する新しいWindowsマシンをセットアップしました。

0
ArtOfWarfare

LinuxとWindowsは同じファイルパスを持つことができないので、ファイルを新しいホームに移動するように復元をセットアップします。

次のようなものを使用します( Oracle docs から):

RMAN> RUN
{
  #  If you need to restore the files to new locations,
  #  use SET NEWNAME commands:
  SET NEWNAME FOR DATAFILE 1 TO '/dev/vgd_1_0/rlvt5_500M_1';
  SET NEWNAME FOR DATAFILE 2 TO '/dev/vgd_1_0/rlvt5_500M_2';
  SET NEWNAME FOR DATAFILE 3 TO '/dev/vgd_1_0/rlvt5_500M_3';
  ALLOCATE CHANNEL t1 DEVICE TYPE sbt;
  RESTORE CONTROLFILE FROM AUTOBACKUP;
  ALTER DATABASE MOUNT;
  SET UNTIL SEQUENCE 124 THREAD 1;
  RESTORE DATABASE;
  SWITCH DATAFILE ALL; # Update control file with new location of datafiles.
  RECOVER DATABASE;
}

どのOracleデータファイル番号がバックアップ内のどの実際のファイルに対応するかを知る必要があることに注意してください。

このコマンドを使用して、バックアップファイル番号とその元のファイル名のリストを取得できます。

RMAN> list backup of datafile 1;

このドキュメント の下部にあるような出力が得られます。

  List of Datafiles in backup set 2
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 175337     21-OCT-03 /Oracle/dbs/tbs_01.f
0
CaM

通常、RMANを使用したデータベースの複製中は、次の手順に従います。

  1. 私たちはプラットフォームA、あなたの場合はLinuxに行きます。
  2. 別のプラットフォームBからデータベースのバックアップを復元します。あなたの場合はWindowsです。
  3. Bで作成されたデータファイル/アーカイブログを復元します。
  4. プラットフォームAで復元されたバックアップを回復します。

クロスプラットフォームREDOアプリケーションは フィジカルスタンバイ に対してのみサポートされますが、RMANを使用してデータベースを複製する際に伴う一般的なメディアリカバリに対してはサポートされません。

したがって、コールドRMANバックアップがあった場合、複製中にデータベースをリカバリする必要はなく、先に進むことができます。

参考:

  • RMANを使用したWindowsからLinuxへの復元が失敗する(Doc ID 2003327.1)(MOS IDが必要です)
  • 0
    JSapkota

    私はこのエラーボットに精通していません、問題はrmanがアーカイブログを適用したいということです

    D:\ORADATA\FUUVZP\ONLINELOG\O1_MF_1_CQ39NGLV_.LOG
    

    このアーカイブログは見つかりませんでした。これはエラーメッセージから続きます

    ORA-00308: cannot open archived log  D:\ORADATA\FUUVZP\ONLINELOG\O1_MF_1_CQ39NGLV_.LOG
    

    それに続くLinuxエラーから。

    そのため、複製には、バックアップファイルに含まれていないアーカイブログが必要なようです。

    これが発生する理由を明確にする必要があります。

    バックアップのプロバイダーに次の質問をする必要があります。

    • バックアップが取られたときに、ソースデータベースはマウントされていたか、開いていましたか?
    • バックアップを取るときに、ソースデータベースがアーカイブモードで実行されていましたか?
    • このバックアップは、一貫性のあるバックアップですか、それとも一貫性のないバックアップですか。
    • (開いているデータベースまたはクラッシュしたデータベースから作成された)一貫性のないバックアップであり、必要なアーカイブログが含まれていますか?

    これは、実行中のデータベースから取得されたバックアップであり、データベースファイルのコピーのみが含まれ、アーカイブログのバックアップは取得されなかったと思います。

    NOREDOオプションを使用してDUPLICATEコマンドを実行できますが、バックアップに一貫性がない場合、データベースを開くことができません。

    解決策:NOREDOオプションを指定して複製コマンドを実行します。これが機能しない場合は、必要なアーカイブログでバックアップを取得するか、一貫性のあるバックアップを取得して、NOREDOオプションで複製します。

    データベースバックアップおよびリカバリリファレンス12.2

    **バックアップベースの複製 '' [...] ARCHIVELOGモードのデータベースのバックアップベースの複製の場合、RMANはデフォルトで、コマンドが実行されたときに生成された最後のアーカイブREDOログまで、またはSET UNTIL句。

    ターゲットデータベースに接続しないデータベースのバックアップベースの複製の場合、RMANはソースデータベースがNOARCHIVELOGモードであったかどうかを判別できません。したがって、バックアップの作成時にソースデータベースがNOARCHIVELOGモードであった場合は、NOREDOオプションを使用する必要があります。アーカイブされたREDOログファイルを一貫したバックアップに適用したくない場合は、NOREDOオプションを使用することもできます。

    編集:

    WindowsのアーカイブログはLinuxと互換性がないようです( OPの回答 )。したがって、上記のようにアーカイブログを回避する方法を使用します。

    • マウントされた状態(開いていない)のデータベースのバックアップを作成します
    • 複製にはNOREDO句を使用します
    0
    miracle173