データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

Oracle 19cのDBCAコマンドでデータベースをクローンする方法【サイレントモード完全ガイド】

本記事では、Oracle Database 19cの新機能であるDatabase Configuration Assistant(DBCA)を使用して、ソースデータベースのバックアップを作成することなく、リモートのプラガブル・データベース(PDB)をコンテナ・データベース(CDB)へクローンする手順をご紹介します。

DBCAによるクローンの最大の特長は、ソースからターゲットへの複製にかかる時間が最小限に抑えられる点です。

ソースDBの構成

  • CDB:LCONCDB
  • PDB:LCON

Oracle 19cのDBCAコマンドでデータベースをクローンする方法【サイレントモード完全ガイド】

以下は、ソース側の各コンテナ(CDBおよびPDB)に存在するDBFファイルの総数です。クローン作成後は、ターゲット側でこれらのファイル数を検証する必要があります。

上記のソースDBをもとに、ターゲットホスト上にCDBとPDBを作成していきます。

ターゲットDBの構成

  • CDB:KCONCDB
  • PDB:KCON

事前に完了しておくべき準備手順

1. Oracle Database 19cのインストール

ターゲットホストにOracle Database 19cをインストールします。あるいは、ソース側でRDBMS 19cのtarファイルを作成し、ターゲットノードで展開する方法でも構いません。さらに、rsyncコマンドを使用してソースからターゲットへ同期させ、同一のRDBMS環境を構築することも可能です。

2. コンテキストファイルの作成(perl adclonectx.pl)

perl adclonectx.pl を実行するためのXMLファイル(コンテキストファイル)を作成し、必要な情報を入力します。19c RDBMSのインストール/作成後には、ターゲットDBノード用のコンテキストファイルを作成する必要があります。以下は、ターゲットDBノードでコンテキストファイルを作成するコマンド例です。

[oraki@nglusnj bin]$ perl adclonectx.pl \
contextfile=/u02/oracle/KCON/product/19.3/appsutil/NYAPP_nglusnj.xml

Copyright (c) 2011, 2015 Oracle Corporation
Redwood Shores, California, USA

Oracle E-Business Suite Rapid Clone
Version 12.2
adclonectx Version 120.30.12020000.22
Running: /u02/oracle/KCON/product/19.3/appsutil/clone/bin/../jre/bin/java -Xmx600M -Doracle.jdbc.autoCommitSpecCompliant=false -classpath /u02/oracle/KCON/product/19.3/appsutil/clone/bin/../jlib/ojdbc8.jar:/u02/oracle/KCON/product/19.3/appsutil/clone/bin/../jlib/xmlparserv2.jar:/u02/oracle/KCON/product/19.3/appsutil/clone/bin/../jlib/java: oracle.apps.ad.context.CloneContext -e /u02/oracle/KCON/product/19.3/appsutil/NYAPP_nglusnj.xml -tmpl /u02/oracle/KCON/product/19.3/appsutil/clone/bin/../context/db/adxdbctx.tmp

APPSパスワードの入力を求められます。

Log file located at /u02/oracle/KCON/product/19.3/appsutil/clone/bin/CloneContext_0227034250.log

続いて、新しいデータベース・コンテキストファイルの作成に必要な値を入力していきます。

Target System Hostname (virtual or normal) [nglusnj] : nglusnj

プログラムによる入力値の検証が推奨されていますが、以下のようなケースでは検証をスキップすることもできます。

  • リモートシステム向けにソースシステム上でコンテキストをクローンする場合
  • ポートが使用中のマシンで、現時点でサービスを停止したくない場合
  • 接続先データベースが利用できない状態でコンテキストをクローンする場合
Do you want the inputs to be validated (y/n) [n] ? : n
Target System Base Directory : /u02/oracle/KCON
Target Instance is RAC (y/n) [n] :
Target System CDB Name : KCONCDB
Target System PDB Name : KCON
Oracle OS User [oraki] :
Oracle OS Group [dba] :
Role separation is supported y/n [n] ? : n
Number of DATA_TOP's on the Target System [2] :
Target System DATA_TOP Directory 1 [/u02/oracle/KCON/NYAPPCDB] : /u02/oracle/KCON/KCONCDB
Target System DATA_TOP Directory 2 [/u02/oracle/KCON/data] :
Specify value for OSBACKUPDBA group [dba] :
Specify value for OSDGDBA group [dba] :
Specify value for OSKMDBA group [dba] :
Specify value for OSRACDBA group [dba] :
Target System RDBMS ORACLE_HOME Directory [/u02/oracle/KCON/19.0.0] : /u02/oracle/KCON/product/19.3
Do you want to preserve the Display [nglusnj:0.0] (y/n)  : y
Target System Port Pool [0-99] : 20 Report file located at /u02/oracle/KCON/product/19.3/appsutil/temp/portpool.lst
New context path and file name [/u02/oracle/KCON/product/19.3/appsutil/KCON_nglusnj.xml] : /u02/oracle/KCON/product/19.3/appsutil/KCON_nglusnj.xml file already exists.
Do you want to overwrite it (y/n) [n] ? : y
Replacing /u02/oracle/KCON/product/19.3/appsutil/KCON_nglusnj.xml file.
The new database context file has been created : /u02/oracle/KCON/product/19.3/appsutil/KCON_nglusnj.xml
Check Clone Context logfile /u02/oracle/KCON/product/19.3/appsutil/clone/bin/CloneContext_0227034250.log for details.

3. adcfgclone.plによるRDBMS構成

ターゲットDBノードでコンテキストファイルを作成したら、adcfgclone.pl を実行して19c RDBMSを構成します。その際、先ほど作成したコンテキストファイルを引数として渡します。以下のコマンド実行例を参考にしてください。

[oraki@nglusnj bin]$ perl adcfgclone.pl dbTechStack /u02/oracle/KCON/product/19.3/appsutil/KCON_nglusnj.xml

Copyright (c) 2002, 2015 Oracle Corporation
Redwood Shores, California, USA

Oracle E-Business Suite Rapid Clone
Version 12.2
adcfgclone Version 120.63.12020000.65

ここでもAPPSパスワードの入力を求められます。

Running Rapid Clone with command:
perl /u02/oracle/KCON/product/19.3/appsutil/clone/bin/adclone.pl java=/u02/oracle/KCON/product/19.3/appsutil/clone/bin/../jre mode=apply stage=/u02/oracle/KCON/product/19.3/appsutil/clone component=dbTechStack method=CUSTOM dbctxtg=/u02/oracle/KCON/product/19.3/appsutil/KCON_nglusnj.xml showProgress contextValidated=false

Beginning rdbms home Apply - Sat Feb 27 04:25:16 2021

Log file located at /u02/oracle/KCON/product/19.3/appsutil/log/KCON_nglusnj/ApplyDBTechStack_02270425.log
|      0% completed

Completed Apply...

4. ソースDBをアーカイブログモードに設定

ソースのCDBとPDBは、アーカイブログモードになっている必要があります。クローン作業を開始する前に、ソースDBがアーカイブログモードで稼働していることを必ず確認してください。

5. DBCAコマンドによるクローン実行

VNC環境でターゲットノードにログインし、DBCAコマンドを実行してCDBとPDBをクローンします。

構文:

./dbca -silent -createDuplicateDB -gdbName {CLONE_DB_NAME} -primaryDBConnectionString <hostname:port/service> -sid {CLONE_DB_SID} -databaseConfigType SINGLE -initParams db_unique_name={CLONE_DB_NAME} -sysPassword {PRIMARY_DB_SYS_PWD} -datafileDestination {CLONE_DATAFILE_LOC}

実行例:

[oraki@nglusnj ~]$ dbca -silent -createDuplicateDB -gdbName KCONCDB -sid KCONCDB -primaryDBConnectionString nglusnj:1551/LCONCDB -databaseConfigType SI -initParams db_unique_name=KCONCDB -sysPassword LCON5yspwd! -datafileDestination /u02/oracle/KCON/product/oradata/KCONCDB

主なパラメータの意味:

  • -gdbName:ターゲットのグローバル・データベース名
  • -sid:ターゲットのSID名
  • -primaryDBConnectionString:ソースへの接続文字列
  • -databaseConfigType:「SI」はシングルインスタンスを意味します
  • -initParams db_unique_name:ターゲットDBの一意の名前
  • -sysPassword:sysユーザーのパスワード
  • -datafileDestination:ターゲット側のDBFファイルの配置場所

以上で、CDBとPDBの両方が作成されます。

6. PDBの名前変更

クローンによって作成されたPDBは、ソースDBと同じ名前を持っています。そこで、以下の手順に従ってPDBの名前を変更します。

SQL> alter session set container=LCON;
Session altered.

SQL> shutdown immediate;
Pluggable Database closed.

SQL> startup open restrict;
Pluggable Database opened.

SQL> alter pluggable database LCON rename global_name to KCON;
Pluggable database altered.

SQL> shutdown immediate;
Pluggable Database closed.

SQL> alter database open;
Database altered.

これでクローン作業は完了です。最後に、ソース側のDBFファイルと照合して検証を行ってください。DBFファイルの数はソースと一致している必要があります。

まとめ

Oracle 19cの新機能であるDBCAを使用したサイレントモードでのPDBクローンは、最小限の時間でデータベースを複製できる最もシンプルな方法です。従来のようにソースデータベースのバックアップを取得し、そのバックアップピースをターゲットホストへコピーする必要がないため、大幅な時間短縮にもつながります。

ご意見やご質問がある場合は、フィードバックタブからお気軽にお寄せください。また、私たちとの対話もぜひ始めてみてください。

  1. Oracle CloudでDBaaSデータベースを作成する方法:コンパートメント作成からDBシステム構築まで完全解説

    この記事では、Oracle® Cloud上にDatabase-as-a-Service(DBaaS)データベースを作成するために必要なすべての手順を、画像付きでわかりやすく解説します。 はじめに このサービスを利用すれば、物理ハードウェアの調達やOSのインストール、Oracle Databaseのインストール前提条件への対応などを一切行うことなく、データベースを構築できます。作成にかかる時間も短く、必要な権限も最小限のシステム管理者レベルで十分です。 本記事では、Oracle CloudでDBaaSをセットアップするための以下のステップについて学びます。 コンパートメントの作成 仮想クラウド

  2. データベース管理者必見!Oracle Database 19cの新機能徹底解説

    Oracle® Database 19cは、数多くの新機能と改善された機能を搭載して登場しました。本記事では、データベース管理者(DBA)の業務を効率化する主要な新機能について詳しく解説します。 はじめに Oracle 19cは、Oracle Database 12cリリース2製品ファミリーにおいて長期サポートが提供される最終リリースです。Linux®、Windows®、Solaris®、HP/UX®、AIX®などの各プラットフォームに加え、Oracle Cloud上でも利用可能です。Oracle 19cは、あらゆる運用系および分析系ワークロードに対して、最高レベルのパフォーマンス、スケーラビ