Oracle 19cデータベース環境でのE-Business Suite R12.2クローン作成完全ガイド
本記事では、Red Hat® Enterprise Linux®サーバー上で、Recovery Manager(RMAN)のホットバックアップを使用し、バージョン19cのデータベースと組み合わせたオンプレミスのOracle® E-Business Suite®(EBS)R12.2を段階的にクローン作成する手順について解説します。ここで紹介する手順は、他のオペレーティングシステムにも同様に適用できます。
EBSクローン作成の全体像
EBSのクローン作成を実施するには、以下の大まかなステップを完了させる必要があります。
- ソース側のデータベースノードおよびアプリケーションノードでPre-Cloneユーティリティを実行する。
- RMANホットバックアップを使用してアーカイブログを含むコンテナデータベース(CDB)全体をバックアップし、ターゲットノードへコピーする。
- ターゲットのデータベースノードおよびアプリケーションノードをクリーンアップする。
- ソースのアプリケーションバイナリとデータベースバイナリをターゲットノードへコピーする。
- ターゲットのデータベースノードで$ORACLE_HOMEを構成する。
- データベースのリストアおよびリカバリを実行する。
- ターゲットのデータベースノードでリストア後の処理を行う。
- ターゲットのアプリケーションノードでアプリケーションを構成する。
- アプリケーションノードでクローン後の処理を行う。
- ターゲットのアプリケーションサービスを起動する。
以下、各ステップを詳しく見ていきましょう。
1. Pre-Cloneユーティリティの実行
まず、ソース側のデータベースノードとアプリケーションノードでPre-Cloneユーティリティを実行し、ドライバや構成ファイルを作成します。このユーティリティは、データベースおよびアプリケーションのバイナリをターゲットノードへコピーする前に、それらを適切に構成するための準備作業です。
a. データベースノードの$ORACLE_HOMEで、プラガブルデータベース(PDB)の環境ファイルを読み込むために、以下のコマンドを実行します。
cd $ORACLE_HOME
. <PDB_NAME>_hostname.env
cd $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME
perl adpreclone.pl dbTier
b. アプリケーションノードでは、以下のコマンドを実行します。
. EBSApps run (Source RUN FS)
cd $ADMIN_SCRIPTS_HOME
perl adpreclone.pl appsTier
2. CDBのバックアップ
RMANホットバックアップを使用して、アーカイブログを含むCDB全体をバックアップし、ターゲットノードへコピーします。
a. $ORACLE_HOMEでCDBの環境ファイルを読み込むために、以下のコマンドを実行します。
cd $ORACLE_HOME
. <CDB_NAME>_hostname.env
connect target /
b. 続いて、以下のコマンドでバックアップを実行します。
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
allocate channel d4 type disk;
BACKUP as compressed backupset FULL FILESPERSET 10 FORMAT '<Backup location>/<SID>_bk_%s_%p_%t.bak' DATABASE;
BACKUP as compressed backupset filesperset 10 FORMAT '<Backup location>/<SID>_arch_%s_%p_%t.bak' ARCHIVELOG ALL skip inaccessible;
BACKUP FORMAT '<Backup location>/<SID>_cntrl_%s_%p_%t.bak' CURRENT CONTROLFILE;
RELEASE CHANNEL d1;
RELEASE CHANNEL d2;
RELEASE CHANNEL d3;
RELEASE CHANNEL d4;
}
バックアップ完了後は、バックアップファイルをターゲットの場所へ移動するか、ネットワークファイルシステム(NFS)でバックアップのマウントポイントをターゲットノードと共有すると、時間を節約できます。
3. クリーンアップ
ターゲットのデータベースノードとアプリケーションノードをクリーンアップします。
データベースノードでは、以下の手順を実行します。
a. クリーンアップの前に、以下の重要な構成ファイルおよびディレクトリのバックアップを取得しておきます。
- $CONTEXT_FILE
- 環境ファイル
- dbsディレクトリ
- $TNS_ADMINディレクトリ
b. ターゲットのORACLE_HOMEを削除し、データベースをドロップします。
c. oraInventoryの内容を削除します。
なお、UTLディレクトリにはシンボリックリンクが存在してはいけません。シンボリックリンクがある場合は削除し、物理的なディレクトリ構造を作成してください。
アプリケーションノードでは、以下の手順を実行します。
a. RUNおよびPATCHの$CONTEXT_FILEと、RUN FSの$TNS_ADMINディレクトリのバックアップを取得します。
b. アプリケーションノードをクリーンアップする前に、ターゲットノードのRUN FSの内容を記録しておきます。
c. FS1、FS2、FS_NE、oraInventoryの各ディレクトリをクリアします。
4. バイナリのコピー
以下の手順で、ソースのアプリケーションバイナリとデータベースバイナリをターゲットノードへコピーします。
a. データベースノードでは、バージョン19.0.0(19c)のバイナリをコピーし、ターゲットのデータベースサーバーへ転送します。
b. アプリケーションノードでは、ソースのRUN FSからEBSappsディレクトリのみを転送し、ターゲットノードのRUN FS配下に配置します。
5. $ORACLE_HOMEの構成
ターゲットのデータベースノードで$ORACLE_HOMEを構成します。
adcfgclone.plを実行して$ORACLE_HOMEを構成する前に、oraInventoryディレクトリをクリーンアップしてください。新しいサーバーで初めてクローンを作成する場合は、以下の手順のみを実行し、すべての入力項目に値を指定します。
a. コンテキストファイルを作成します。
cd $ORACLE_HOME/appsutil/clone/bin
perl adclonectx.pl contextfile=<Source database context file> template=$ORACLE_HOME/appsutil/template/adxdbctx.tmp [pairsfile=<Pairs file Path>]
perl adcfgclone.pl dbTechStack <Full Path of CONTEXT_FILE>
b. listener.oraとtnsnames.oraを作成します。
cd $ORACLE_HOME/appsutil
./txkSetCfgCDB.env -dboraclehome=<ORACLE_HOME>
cd $ORACLE_HOME/appsutil/bin
perl txkGenCDBTnsAdmin.pl -dboraclehome=$ORACLE_HOME -cdbname=<target CDB NAME> \
-cdbsid=<SID> -dbport=<Target DB port> -outdir=$ORACLE_HOME/appsutil/log \
-israc=<yes/no> [-virtualhostname=<virtual hostname>]
c. 繰り返しクローンを作成するインスタンスの場合は、CONTEXT_FILEのバックアップを使用してターゲットのデータベースバイナリを構成できます。
cd <RDBMS ORACLE_HOME>/appsutil/clone/bin
perl adcfgclone.pl dbTechStack <Full Path of CONTEXT_FILE backup location>
d. 繰り返しクローンを作成するインスタンスの場合は、dbsおよびTNSファイルを元に戻し、構成後にすべての構成ファイルと初期化パラメータが保持されるようにします。
e. リスナーを起動します。
6. データベースのリストアとリカバリ
$ORACLE_HOMEの構成が完了したら、事前に取得したバックアップを使用してターゲットデータベースのリストアを開始します。
a. リストアの前に、ターゲットノードで以下のパラメータが正しく設定されていることを確認します。
- db_file_name_convert
- log_file_name_convert
b. ターゲットデータベースをnomount状態で起動し、以下のRMANコマンドを実行してデータベースをリストアします。
Rman auxiliary /
run
{
allocate auxiliary channel d1 device type disk;
allocate auxiliary channel d2 device type disk;
allocate auxiliary channel d3 device type disk;
duplicate database to '<CDB NAME>' backup location '<RMAN backup location>' nofilenamecheck;
release channel d1;
release channel d2;
release channel d3;
}
7. ターゲット側のリストア後の処理
ターゲットのデータベースノードで、リストア後の処理を実行します。
CDBデータベースのリストアが完了し、CDBインスタンスをオープンしたら、以下の手順を実行します。
a. CDBの環境ファイルを読み込み、PDB名を変更します。リストア直後はソースのPDB名になっているため、以下のコマンドでターゲットのPDB名に変更します。
sqlplus / as sysdba
SQL> alter pluggable database "<Source PDB Name>" close;
SQL> alter pluggable database "<Source PDB Name>" unplug into '<ORACLE_HOME>/dbs/<Source PDB Name>_PDBDesc.xml';
SQL> drop pluggable database "<Source PDB Name>";
SQL> create pluggable database "<Target PDB Name>" using '<ORACLE_HOME>/dbs/<PDB Name>_PDBDesc.xml' NOCOPY SERVICE_NAME_CONVERT=('ebs_<Source PDB Name>','ebs_<Target PDB Name>','<Source PDB Name>_ebs_patch','<Target PDB Name>_ebs_patch');
SQL> alter pluggable database "<Target PDB Name>" open read write;
SQL> alter pluggable database all save state instances=all;
SQL> sho pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
------ ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
4 <PDB Name> READ WRITE NO
b. PDBの環境ファイルを読み込み、以下のコマンドを実行して、Oracle Database内にターゲットのUTL_FILE_DIR値を設定します。
perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=getUtlFileDir
c. 以下のコマンドを実行して、Oracle_Home/dbs配下の<PDB Name>_utlfiledir.txtファイルを編集し、UTLパスを適宜変更します。
perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=setUtlFileDir
d. <PDB Name>_utlfiledir.txt内の各パスに対して、以下のスクリプトを実行します。
perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=createDirObject
perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -mode=syncUtlFileDir -skipautoconfig=yes
cd $ORACLE_HOME/appsutil/install/$CONTEXT_NAME
sqlplus / as sysdba @adupdlib.sql <libext>
clean FND_NODE table
sqlplus apps/<Source Apps password>
EXEC FND_CONC_CLONE.SETUP_CLEAN;
Commit;
e. 以下のコマンドでadautocfg.shを実行します。
cd <$ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME>
sh adautocfg.sh
8. ターゲットアプリケーションの構成
ターゲットのアプリケーションノードでアプリケーションを構成します。
a. adcfgclone.plを開始する前に、PATCH FS、FS_NE、oraInventoryの各ディレクトリをクリーンアップします。
b. 以下のコマンドを実行して、アプリケーションを構成します。
cd <COMMON_TOP>/clone/bin
export TIMEDPROCESS_TIMEOUT=-1
export T2P_JAVA_OPTIONS="-Djava.io.tmpdir=<Temp directory location>"
perl ./adcfgclone.pl appsTier dualfs
c. ここで必要な入力項目すべてに値を指定します。
d. 繰り返しクローンを作成するインスタンスの場合は、CONTEXT_FILEのバックアップを使用することもできます。その場合は以下のコマンドを実行します。
perl ./adcfgclone.pl appsTier <location of CONTEXT_FILE backup> dualfs
9. アプリケーションのクローン後の処理
アプリケーションノードで、クローン後の処理を実行します。
a. アプリケーションの構成後、FNDCPASSコマンドを使用して、appsスキーマ、sysadmin、およびカスタムスキーマ(存在する場合)のパスワードを変更します。
b. appsパスワードの変更後、データベースノードとアプリケーションノードの両方でAutoconfigを実行します。
c. クローンインスタンス向けのその他のカスタム手順があれば、実施します。
10. ターゲットアプリケーションサービスの起動
これで、ターゲットのクローンインスタンスのすべてのアプリケーションサービスを起動できる状態になりました。起動後は、クローンインスタンスに対してすべてのサニティチェック(正常性確認)を実施してください。
まとめ
以上の手順に従うことで、マルチテナント・アーキテクチャを採用した19cデータベースを使用して、PRODインスタンスを非本番サーバーへクローン作成またはリフレッシュすることができます。
ご意見やご質問がある場合は、フィードバックタブをご利用ください。また、私たちとの対話も歓迎します。
-
Oracle 19cのDBCAコマンドでデータベースをクローンする方法【サイレントモード完全ガイド】
本記事では、Oracle Database 19cの新機能であるDatabase Configuration Assistant(DBCA)を使用して、ソースデータベースのバックアップを作成することなく、リモートのプラガブル・データベース(PDB)をコンテナ・データベース(CDB)へクローンする手順をご紹介します。 DBCAによるクローンの最大の特長は、ソースからターゲットへの複製にかかる時間が最小限に抑えられる点です。 ソースDBの構成 CDB:LCONCDB PDB:LCON 以下は、ソース側の各コンテナ(CDBおよびPDB)に存在するDBFファイルの総数です。クローン作成後は、ター
-
データベース管理者必見!Oracle Database 19cの新機能徹底解説
Oracle® Database 19cは、数多くの新機能と改善された機能を搭載して登場しました。本記事では、データベース管理者(DBA)の業務を効率化する主要な新機能について詳しく解説します。 はじめに Oracle 19cは、Oracle Database 12cリリース2製品ファミリーにおいて長期サポートが提供される最終リリースです。Linux®、Windows®、Solaris®、HP/UX®、AIX®などの各プラットフォームに加え、Oracle Cloud上でも利用可能です。Oracle 19cは、あらゆる運用系および分析系ワークロードに対して、最高レベルのパフォーマンス、スケーラビ