ノート:

V4クロス・プラットフォーム・トランスポータブル表領域を使用してOracle DatabaseをOCIに移行し、12cから19cにアップグレード

イントロダクション

このチュートリアルでは、Oracle Recovery Manager (RMAN)増分バックアップとともにV4クロス・プラットフォーム・トランスポータブル表領域(XTTS)を使用して、異なるエンディアン形式を持つシステム間で、アプリケーションの停止時間が最小限でデータを移行するために必要なステップについて説明します。

最初のステップは、完全バックアップをソースから宛先にコピーすることです。次に、一連の増分バックアップ(それぞれが前より小さい)を使用すると、停止時間が必要になる前に、宛先システムのデータをソース・システムでほぼ最新にできます。この手順では、最終的な増分バックアップおよびメタデータのエクスポートまたはインポート中にのみ停止時間が必要です。

このチュートリアルでは、11.2.0.3以上で使用できるクロス・プラットフォーム増分バックアップのV4プロシージャについて説明します。

環境詳細

目的

前提条件

タスク1: ソース・データベースの準備

  1. 次の問合せを実行して、ソース・データベースのエンディアン形式を確認します。

    col PLATFORM_NAME for a50
    select platform_name,platform_id, endian_format from v$transportable_platform;
    
  2. 転送されるソース・データベース内の表領域を識別します。すべての表領域を移行する場合は、次の問合せを実行します。

    select tablespace_name from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
    
  3. transport_set_violationsビューをソース・データベースに作成します。

    exec dbms_tts.transport_set_check('<list of tablespaces with comma saperated>');
    SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;
    
  4. (オプション)ソース・データベースでブロック・チェンジ・トラッキングを有効にして、増分バックアップのパフォーマンスを向上させます。

  5. ソース・データベースですべての表領域がオンラインであることを確認します。

  6. 索引パラメータ空間索引の再構築を削除し、使用できない空間索引を変更します。

    • このステップでは、空間索引に索引再作成パラメータがないことを確認します。マルチテナント環境の場合は、最初に次のコマンドを実行して、データベースSIDフィールドをOracleデータベース(PDB NAME)のプラガブル・データベース名に設定します。

      export ORACLE_PDB_SID=[PDB NAME]
      
    • ソース・データベース・サーバー・ノードで、ソース・データベース・サーバーのファイル・システムおよびデータベース・インスタンスの所有者として索引パラメータを再構築しているかどうかを確認するには、SQL*Plusを使用してsysdbaとしてソース・データベースに接続し、次の問合せを実行します。

      select owner,index_name from dba_indexes where index_type='DOMAIN' and upper(parameters) like '%REBUILD%';
      
    • 索引の再構築パラメータを削除するには、SQL*Plusを使用して索引の所有者としてソース・データベースに接続し、次の問合せを実行します。

      alter index [index name] rebuild parameters [parameters]
      
  7. テキスト索引の同期化SQL*Plusを使用してSYSDBAとしてソース・データベースに接続し、次の問合せを実行して、同期保留中のすべての索引を検索します。

    select pnd_index_owner,pnd_index_name,count(*) from ctxsys.ctx_pending group by pnd_index_owner,pnd_index_name;
    

    索引を同期するには、次の問合せを実行します。

    exec ctx_ddl.sync_index('[index owner].[index name]');
    

タスク2: ターゲット・データベースの準備

  1. 一時的な新規ユーザー表領域を作成します。ターゲット・データベースがマルチテナント環境の場合は、PDBに接続します。

    alter session set container=[PDB NAME]
    select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS_OCI';
    select TABLESPACE_NAME from dba_tablespaces order by 1;
    set long 99999
    SELECT DBMS_METADATA.GET_DDL ('TABLESPACE','USERS') from dual;
    

    前述のデータ定義言語(DDL)出力を使用して、次のようにディスク・グループ名を置き換え、新しいユーザー表領域を作成します。

    CREATE BIGFILE TABLESPACE USERS_OCI DATAFILE '+DATAC2'
    SIZE 1073741824
    AUTOEXTEND ON NEXT 17179869184 MAXSIZE 33554431M
    LOGGING ONLINE PERMANENT BLOCKSIZE 8192
    EXTENT MANAGEMENT LOCAL AUTOALLOCATE
    ENCRYPTION USING 'AES256' ENCRYPT DEFAULT
    NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
    

    次の問合せを使用して、新しいユーザー表領域USERS_OCIを、デフォルトの表領域USERSを持つすべてのデータベース・ユーザーに割り当てます。

    select 'alter user '||username||' default tablespace users_OCI;' from dba_users where default_tablespace='USERS';
    

    問合せの出力は、0を返す必要があります。

    select count(*) from dba_users where default_tablespace='USERS';
    ALTER DATABASE DEFAULT TABLESPACE USERS_OCI;
    drop tablespace users including contents and datafiles;
    select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS';
    
  2. ターゲット・データベースに一時表領域を作成します。ソースに対して次の問合せを実行し、表領域の詳細を収集します。

    select TABLESPACE_NAME from dba_tablespaces where CONTENTS='TEMPORARY';
    Create temp tablespaces on target database like below example.
    create bigfile temporary tablespace USER_TEMP tempfile size 672m autoextend on next 672m extent management local;
    
  3. Oracle E-Business Suiteアプリケーションのnls/data/9idataディレクトリを作成します。

    srvctl getenv database -d $ORACLE_UNQNAME
    perl $ORACLE_HOME/nls/data/old/cr9idata.pl  --> on all the nodes of the cluster
    srvctl setenv database -d $ORACLE_UNQNAME -t ORA_NLS10=$ORACLE_HOME/nls/data/9idata
    srvctl getenv database -d $ORACLE_UNQNAME
    
  4. Oracle E-Business Suiteアプリケーションの$ORACLE_HOME/appsutil/jreを作成します。appsutilフォルダを、パス$ORACLE_HOMEのソース・データベースからパス$ORACLE_HOMEのターゲット・データベース・サーバーにコピーします。フォルダをコピーしたら、ターゲット・データベース・サーバーのすべてのノードで次のコマンドを実行します。

    cd $ORACLE_HOME/appsutil
    ln -s $ORACLE_HOME/jdk/jre
    cd $ORACLE_HOME/jdk/jre/lib/ext
    cp $ORACLE_HOME/jlib/orai18n.jar .
    
  5. Oracle E-Business Suiteアプリケーションのsysスキーマを設定します。

    export ORACLE_PDB_SID=[PDB_NAME]
    sqlplus / as sysdba
    show con_name
    @audb19c.sql
    
  6. Oracle E-Business Suiteアプリケーションのシステム・スキーマを設定します。

    export ORACLE_PDB_SID=[PDB_NAME]
    sqlplus / as sysdba
    show con_name
    @ausy19c.sql
    
  7. Oracle E-Business SuiteアプリケーションのCTXSYSパラメータを設定します。

    export ORACLE_PDB_SID=[PDB_NAME]
    sqlplus / as sysdba
    show con_name
    exec ctxsys.ctx_adm.set_parameter('file_access_role', 'public');
    
  8. Oracle E-Business Suiteアプリケーションの統計を自動的に収集します。

    export ORACLE_PDB_SID=[PDB_NAME]
    sqlplus / as sysdba
    show con_name
    alter system enable restricted session;
    @adstats.sql
    alter system disable restricted session;
    

タスク3: 増分V4 XTTSステップ

タスク3.1: 初期フェーズ

  1. 最新のv4 perlスクリプトをダウンロードし、V4 Cross Platform Incremental Backupを使用したトランスポータブル表領域の停止時間の短縮(ドキュメントID 2471245.1)から解凍します。スクリプトおよび一時ディレクトリを解凍するディレクトリを作成します。

    例:

    mkdir -p <Backup_location>/XTTS_Migration
    mkdir -p <Backup_location>/XTTS_Migration/XTTS_TEMP
    
  2. サイト固有の構成を使用して、ソース・システムのxtt.propertiesファイルを編集します。xtt.propertiesファイルのパラメータの詳細は、V4 Cross Platform Incremental Backupを使用したトランスポータブル表領域の停止時間の短縮(ドキュメントID 2471245.1)の構成ファイルのxtt.propertiesセクションのパラメータの説明を参照してください。この手順では、次のパラメータのみが必須です。その他はオプションであり、使用可能です。

    tablespaces=<list of tablespaces that are migrated with comma saperated>
    platformid= <obtained from the query select platform_name,platform_id, endian_format from v$transportable_platform>
    src_scratch_location= <Backup location on source database server>
    dest_scratch_location= <Backup location on target database server>
    dest_datafile_location= <path for the datafile location of PDB >
    destconnstr=sys/<password>>@<Target PDB Connect String>
    usermantransport=1 - It is recommended this be set if the source database is running 12c or higher. This causes new 12c (and higher)
    parallel=1
    

タスク3.2: 準備フェーズ

  1. ソース・システムでバックアップを実行します。ソース・システムで、ソース・データベースを指す環境(ORACLE_HOMEおよびORACLE_SID環境変数)を使用してOracleユーザーとしてログインし、次のようにバックアップを実行します。

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3 &
    
  2. 次のファイルをターゲット・データベース・サーバーに転送します。

    • ソースsrc_scratch_locationから宛先dest_scratch_locationに作成されたバックアップ。

    • ソース$TMPDIRから宛先$TMPDIRへのres.txtファイル。

    次の例では、前のステップで作成したレベル=0のバックアップをソース・システムから宛先システムに転送するためにscpが使用されています。

    [oracle@source]$ scp /src_scratch_location/* oracle@dest:/dest_scratch
    [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
    
  3. 宛先システムでデータファイルをリストアします。

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    cp nohup.out nohup.out_L0
    nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3 &
    

タスク3.3: ロールフォワード・フェーズ

このフェーズでは、ソース・データベースから増分バックアップが作成され、宛先システムに転送され、宛先システム・エンディアン形式に変換されてから、変換された宛先データファイル・コピーに適用されてロール・フォワードされます。このフェーズは複数回実行できます。連続する各増分バックアップには、前の増分バックアップより時間がかかりません。また、ソース・データベースで宛先データファイルのコピーがより最新になります。このフェーズでは、転送されるデータ(ソース)に完全にアクセスできます。

ノート:宛先に適用せずに、ソースに対して複数のバックアップを実行できます。バックアップ・ファイルおよびres.txtは、宛先で'-restore'コマンドを実行する前にコピーする必要があります。

  1. ソース・システムで転送される表領域の増分バックアップを作成します。

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    cp nohup.out nohup.out_1
    nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3 &
    

    このステップでは、xtt.propertiesファイルにリストされているすべての表領域の増分バックアップを作成します。

  2. 増分バックアップおよびres.txtを宛先システムに転送します。増分バックアップ(src_scratch_locationdest_scratch_locationの間)およびres.txt($TMPDIRsの間)をソースから宛先に転送します。現在のバックアップからの増分バックアップ・ファイルのリストは、ソース・システムのincrbackups.txtファイルにあります。

    例:

    [oracle@source]$ scp `cat incrbackups.txt` oracle@dest:/dest_scratch_location
    [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
    
  3. 増分バックアップを宛先システム上のデータファイル・コピーに適用します。宛先システムで、宛先データベースを指す環境(ORACLE_HOMEおよびORACLE_SID環境変数)を使用してOracleユーザーとしてログインし、次のようにデータファイルのロールフォワード・ステップを実行します。

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    cp nohup.out nohup.out_3
    $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3
    

    ロールフォワード・ステップは宛先データベースに接続し、転送される表領域ごとに表領域のデータファイルに増分バックアップを適用します。

    ノート:宛先に適用せずにソースに対して複数のバックアップを実行できますが、res.txtファイルは最後のバックアップの後、および--restoreが宛先で実行される前にコピーする必要があります。

    データベースのカットオーバー・ウィンドウまで、ロール・フォワード・フェーズを繰り返します。

タスク3.4: 最終増分バックアップ・フェーズ

  1. ソース・データベースでソース表領域をREAD ONLYに変更します。すべての表領域がターゲット・データベースに転送される場合は、次の問合せを実行します。

    set lines 300
    select 'alter tablespace "'||tablespace_name||'" read only;' from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
    
  2. ソース・システムで転送される表領域の最終増分バックアップを作成します。

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    cp nohup.out nohup.out_4
    nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3 &
    
  3. 増分バックアップおよびres.txtを宛先システムに転送します。

    例:

    [oracle@source]$ scp 'cat incrbackups.txt' oracle@dest:/dest_scratch_location
    [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
    
  4. 最終増分バックアップを宛先データファイルに適用します。

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    cp nohup.out nohup.out_5
    nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3 &
    

タスク3.5: トランスポート・フェーズ- 宛先データベースへのメタデータおよびプラグイン表領域のエクスポート

  1. エクスポート・バックアップ・ファイルを格納するディレクトリを作成します。

    例:

    mkdir -p <Backup_location>/XTTS_DPUMP
    

    次の問合せを実行して、ソース・データベースにディレクトリを作成します。

    create or replace directory XTTS_DUMP as '<Backup_location>/XTTS_DUMP';
    grant read,write on directory XTTS_DUMP to system;
    
  2. エクスポート・パーファイルを準備します。

    vi xtts_expdp.par
    
    directory=XTTS*DUMP
    metrics=y
    dumpfile=xttsfulltts*%U.dmp
    filesize=1048576000
    full=y
    exclude=STATISTICS
    logfile=expfulltts.log
    parallel=4
    transportable=always
    EXCLUDE=NORMAL_OPTIONS
    
  3. ソース・データベースでデータポンプ・エクスポートを実行します。

    nohup expdp system/<password>@<source_db_name> parfile= xtts_expdp.par &
    
  4. インポート用のサンプルparfileを生成するターゲット・データベース・サーバーで次のコマンドを実行します。

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    $ORACLE_HOME/perl/bin/perl xttdriver.pl -e
    

    前のステップで生成された次のparfile行を更新します。

    impdp directory=<DATA_PUMP_DIR> logfile=<tts_imp.log> \
    network_link=<ttslink> transport_full_check=no \ replace these parameters
    transport_tablespaces=<tablespace list> \ delete this line from parfile
    

    最終的なインポートparfileは次のようになります。

    directory=XTTS*DUMP logfile=impdpfulltts.log \
    metrics=y dumpfile=xttsfulltts*%U.dmp parallel=6 full=y logtime=all exclude=STATISTICS \
    transport_datafiles=<list of datafile path generated from above parfile>
    
  5. 前述のようにインポートが完了するまで、次の監査関連パラメータを無効にします。インポートが完了したら、再度有効にします。

    show parameter audit_sys_operations
    show parameter audit_trail
    alter system set audit_trail=none scope=spfile sid='_';
    alter system set audit_sys_operations=FALSE scope=spfile sid='_';
    srvctl stop database -d ${ORACLE_UNQNAME}
    srvctl start database -d ${ORACLE_UNQNAME}
    show parameter audit_sys_operations
    show parameter audit_trail
    
  6. ターゲット・データベースでデータポンプ・インポートを実行します。

    1. エクスポート・バックアップ・ファイルをコピーするディレクトリを作成します。

      例:

      mkdir -p <Backup_location>/XTTS_DPUMP
      
    2. ソース・データベースにディレクトリを作成するには、次のコマンドを実行します。

      create or replace directory XTTS_DUMP as '<Backup_location>/XTTS_DUMP';
      grant read,write on directory XTTS_DUMP to system;
      
      nohup impdp system/<password>@<>target_db_name> parfile=<parfile_name> &
      
  7. インポートの完了後に、次の監査関連パラメータを有効にします。

    show parameter audit_sys_operations
    show parameter audit_trail
    alter system set audit_trail=DB scope=spfile sid='_';
    alter system set audit_sys_operations=TRUE scope=spfile sid='_';
    srvctl stop database -d ${ORACLE_UNQNAME}
    srvctl start database -d ${ORACLE_UNQNAME}
    show parameter audit_sys_operations
    show parameter audit_trail
    
  8. 転送されたデータを検証します。

    rman target sys/<password>@<>target_db_name> trace=rman_trace.trc log=<backup_location>/tablespace_validate.log
    
    validate tablespace <list of tablespaces transported with comma saperated> check logical;
    
  9. ターゲット・データベースの準備で行われた変更を元に戻すには、ユーザー表領域を割り当てます。

    select 'alter user '||username||' default tablespace users;' from dba_users where default_tablespace='USERS_OCI';
    

    ソース・データベースおよびターゲット・データベースでデータを検証します。

承認

その他の学習リソース

docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。