ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
V4クロス・プラットフォーム・トランスポータブル表領域を使用してOracle DatabaseをOCIに移行し、12cから19cにアップグレード
イントロダクション
このチュートリアルでは、Oracle Recovery Manager (RMAN)増分バックアップとともにV4クロス・プラットフォーム・トランスポータブル表領域(XTTS)を使用して、異なるエンディアン形式を持つシステム間で、アプリケーションの停止時間が最小限でデータを移行するために必要なステップについて説明します。
最初のステップは、完全バックアップをソースから宛先にコピーすることです。次に、一連の増分バックアップ(それぞれが前より小さい)を使用すると、停止時間が必要になる前に、宛先システムのデータをソース・システムでほぼ最新にできます。この手順では、最終的な増分バックアップおよびメタデータのエクスポートまたはインポート中にのみ停止時間が必要です。
このチュートリアルでは、11.2.0.3以上で使用できるクロス・プラットフォーム増分バックアップのV4プロシージャについて説明します。
環境詳細
-
ソース・データベース:
-
データベース・バージョン: 12.1.0.2
-
オペレーティング・システム: AIX
-
-
ターゲット・データベース:
-
データベース・バージョン: 19.18.0.0 (OCI)
-
オペレーティング・システム: Oracle Linux
-
目的
- RMAN増分バックアップとともにクロス・プラットフォーム・トランスポータブル表領域(XTTS)を使用して、アプリケーションの停止時間が最小限で、エンディアン形式が異なるシステム間でデータを移行します。
前提条件
-
現在のバージョンでは、Windowsをソースまたは宛先としてサポートしていません。
-
クロス・プラットフォームは、Enterprise Editionでのみ使用できます。この手順は、Standard Editionでは使用できません。
-
ソース・データベースの
COMPATIBLE
パラメータは、宛先データベースのCOMPATIBLE
パラメータより大きくできません。 -
ソース・データベースはARCHIVELOGモードである必要があります。
-
XTTSスクリプトを実行する前に、
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
を設定します。その他のNLS_LANG
設定では、エラーが発生する可能性があります。 -
ソース・システム上のRMANには、次のものを含めないでください。
-
COMPRESSEDで構成されたデバイス・タイプ・ディスク。
-
コピーするバックアップ・タイプ。ソースにはBACKUP TYPE TO BACKUPSETが必要です。
-
SBTを入力するように構成されたデフォルト・チャネルです。つまり、この手順はディスクチャネルでのみ使用できます。
-
チャネル構成の制限。たとえば、MAXSETSIZE、MAXPIECESIZEなどです。
-
-
移動される表領域のセットはすべてオンラインである必要があり、オフラインのデータファイルは含まれません。表領域はREAD WRITEである必要があります。
-
READ ONLYの表領域は、通常のXTTSメソッドで移動できます。常にREAD ONLYの表領域を移動するために、クロス・プラットフォーム増分バックアップを組み込む必要はありません。
-
優先宛先システムはLinux (64ビットOracle Linuxまたは動作保証されたバージョンのRedHat Linux)ですが、この手順は他のUnixベースのオペレーティング・システムで使用できます。ただし、Linux以外のオペレーティング・システムでは、宛先とソースの両方で12.1.0.1以上が実行されている必要があります。
-
Oracleバージョンのソースは宛先以前である必要があります。したがって、この手順はアップグレード方法として使用できます。
-
ソースおよび宛先の最小バージョンは11.2.0.3です。以前の11.2バージョンはおそらく同じように機能しますが、テストされませんでした。
-
提案されているように、本番環境に依存する前に手順をテストします。
-
自動ストレージ管理(ASM)は、宛先のデータファイルの最終的な場所にのみ使用できます。このバージョンでは、バックアップをASMに配置できません。
-
宛先のバックアップ場所は、読取り/書込み権限を持つデバイスである必要があります。READ ONLYデバイスにはできません。これにより、バックアップセットの変換時にORA-19624が発生する可能性があります。
-
ソース・データベースとターゲット・データベースで、互換性のある文字セットおよび各国語文字セットを使用する必要があります。
-
表領域は、最初のバックアップ(レベル0)でREAD WRITEである必要があります。
-
ソース・データベースとターゲット・データベースの要件:
-
互換性のあるタイムゾーン・バージョンを使用します。
-
最新のパッチ・バージョンがある。
-
-
次のスクリプトをOracle E-Business Suiteアプリケーション・ノードからターゲット・データベース・サーバーにコピーします(Oracle E-Business Suiteアプリケーションの場合のみ)。
audb19c.sql ausy19c.sql adstats.sql auque2.sql
タスク1: ソース・データベースの準備
-
次の問合せを実行して、ソース・データベースのエンディアン形式を確認します。
col PLATFORM_NAME for a50 select platform_name,platform_id, endian_format from v$transportable_platform;
-
転送されるソース・データベース内の表領域を識別します。すべての表領域を移行する場合は、次の問合せを実行します。
select tablespace_name from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
-
transport_set_violations
ビューをソース・データベースに作成します。exec dbms_tts.transport_set_check('<list of tablespaces with comma saperated>'); SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;
-
(オプション)ソース・データベースでブロック・チェンジ・トラッキングを有効にして、増分バックアップのパフォーマンスを向上させます。
-
ソース・データベースですべての表領域がオンラインであることを確認します。
-
索引パラメータ空間索引の再構築を削除し、使用できない空間索引を変更します。
-
このステップでは、空間索引に索引再作成パラメータがないことを確認します。マルチテナント環境の場合は、最初に次のコマンドを実行して、データベース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]
-
-
テキスト索引の同期化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: ターゲット・データベースの準備
-
一時的な新規ユーザー表領域を作成します。ターゲット・データベースがマルチテナント環境の場合は、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';
-
ターゲット・データベースに一時表領域を作成します。ソースに対して次の問合せを実行し、表領域の詳細を収集します。
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;
-
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
-
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 .
-
Oracle E-Business Suiteアプリケーションのsysスキーマを設定します。
export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name @audb19c.sql
-
Oracle E-Business Suiteアプリケーションのシステム・スキーマを設定します。
export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name @ausy19c.sql
-
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');
-
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: 初期フェーズ
-
最新のv4 perlスクリプトをダウンロードし、V4 Cross Platform Incremental Backupを使用したトランスポータブル表領域の停止時間の短縮(ドキュメントID 2471245.1)から解凍します。スクリプトおよび一時ディレクトリを解凍するディレクトリを作成します。
例:
mkdir -p <Backup_location>/XTTS_Migration mkdir -p <Backup_location>/XTTS_Migration/XTTS_TEMP
-
サイト固有の構成を使用して、ソース・システムの
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: 準備フェーズ
-
ソース・システムでバックアップを実行します。ソース・システムで、ソース・データベースを指す環境(
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 &
-
次のファイルをターゲット・データベース・サーバーに転送します。
-
ソース
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
-
-
宛先システムでデータファイルをリストアします。
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'コマンドを実行する前にコピーする必要があります。
-
ソース・システムで転送される表領域の増分バックアップを作成します。
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
ファイルにリストされているすべての表領域の増分バックアップを作成します。 -
増分バックアップおよび
res.txt
を宛先システムに転送します。増分バックアップ(src_scratch_location
とdest_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
-
増分バックアップを宛先システム上のデータファイル・コピーに適用します。宛先システムで、宛先データベースを指す環境(
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: 最終増分バックアップ・フェーズ
-
ソース・データベースでソース表領域を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');
-
ソース・システムで転送される表領域の最終増分バックアップを作成します。
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 &
-
増分バックアップおよび
res.txt
を宛先システムに転送します。例:
[oracle@source]$ scp 'cat incrbackups.txt' oracle@dest:/dest_scratch_location [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
最終増分バックアップを宛先データファイルに適用します。
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: トランスポート・フェーズ- 宛先データベースへのメタデータおよびプラグイン表領域のエクスポート
-
エクスポート・バックアップ・ファイルを格納するディレクトリを作成します。
例:
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;
-
エクスポート・パーファイルを準備します。
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
-
ソース・データベースでデータポンプ・エクスポートを実行します。
nohup expdp system/<password>@<source_db_name> parfile= xtts_expdp.par &
-
インポート用のサンプル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>
-
前述のようにインポートが完了するまで、次の監査関連パラメータを無効にします。インポートが完了したら、再度有効にします。
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
-
ターゲット・データベースでデータポンプ・インポートを実行します。
-
エクスポート・バックアップ・ファイルをコピーするディレクトリを作成します。
例:
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;
nohup impdp system/<password>@<>target_db_name> parfile=<parfile_name> &
-
-
インポートの完了後に、次の監査関連パラメータを有効にします。
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
-
転送されたデータを検証します。
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;
-
ターゲット・データベースの準備で行われた変更を元に戻すには、ユーザー表領域を割り当てます。
select 'alter user '||username||' default tablespace users;' from dba_users where default_tablespace='USERS_OCI';
ソース・データベースおよびターゲット・データベースでデータを検証します。
関連リンク
-
V4クロス・プラットフォーム増分バックアップを使用したトランスポータブル表領域の停止時間の短縮(ドキュメントID 2471245.1)
-
トランスポータブル表領域(TTS)の制限事項: 詳細、参照および適用可能なバージョン(ドキュメントID 1454872.1)
-
Oracle Cloud InfrastructureでのOracle E-Business Suiteスタート・ガイド(ドキュメントID 2517025.1)
-
Oracle Cloud Infrastructureバージョン20.1.1のOracle E-Business Suiteの要件。X (ドキュメントID 2438928.1)
-
相互運用性に関するノート: Oracle E-Business Suiteリリース12.1とOracle Database 19c (ドキュメントID 2580629.1)
-
Oracle E-Business Suiteリリース12.xでの夏時間(DST)およびタイムゾーン・ルールの変更への準拠(ドキュメントID 563019.1)
承認
- 著者 - Pavan Yennampelli (Oracle North America Cloud Services、シニア・クラウド・エンジニア- NACIE)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Migrate Oracle Database to OCI using V4 Cross Platform Transportable Tablespaces and Upgrade from 12c to 19c
G17528-01
October 2024