Oracle Database 18cではPDBのローカル・クローンにDatabase Configuration Assistant(DBCA)を使うことができるようになりました。この記事ではローカル・クローン方法を3種類試しました。検証ではCDBは基本的にストレージ構成にOMFを使っているので、ファイル名のコンバート等の指定を省略しています。
DBCAを使ったクローン
DBCAを起動し、「Manage Pluggable databases」を選択します。
Pluggable Databaseの管理画面から「Create a Pluggable database」を選択します。
CDBの接続先インスタンスとを指定し、ユーザー名、パスワードを入力します。
「Create a new Pluggable database from another PDB」を選択し、クローン元PDBを選択します。
新しい名前とオプションを指定します。
データファイルの保存先を指定します。
最後に確認画面が表示されるので、「Finish」ボタンをクリックします。
SQL文をつかったクローン
PDBの作成は従来通りCDBに接続してCREATE PLUGGABLE DATABASE文でクローン元を指定するだけです。
$ sqlplus / as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Fri Apr 19 14:02:22 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
SQL> CREATE PLUGGABLE DATABASE pdb2 FROM pdb1;
Pluggable database created.
RMANを使ったクローン
RMANを使ってもPDBのクローニングを行うことができます。基本的にはコピー先とコピー元のCDBに接続してDUPLICATE文を実行することになります。しかし、ローカル・クローンを行う方法がマニュアルに無いので試行錯誤してみました。
targetとauxiliaryを同じCDB接続にしてDUPLICATE PLUGGABLE DATABASE文を実行します。
ローカル接続
まずtargetとauxiliaryをローカル接続してみます。DUPLICATE PLUGGABLE DATABASE文を実行すると、
ターゲットがネットワーク接続ではない(RMAN-05603)が発生します。
$ rman target / auxiliary /
Recovery Manager: Release 18.0.0.0.0 - Production on Fri Apr 19 13:07:40 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
connected to target database: O18P (DBID=677639375)
connected to auxiliary database: O18P (DBID=677639375)
RMAN> DUPLICATE PLUGGABLE DATABASE pdb1 AS pdb2 FROM ACTIVE DATABASE;
Starting Duplicate PDB at 19-APR-19
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate PDB command at 04/19/2019 13:08:05
RMAN-05501: aborting duplication of target database
RMAN-05603: not connected to target database with a net service name
RMAN>
ターゲットをネット接続
target接続をネットワーク経由にしてみました。まず、初期化パラメーターREMOTE_RECOVERY_FILE_DESTが設定されていない(RMAN-05655)というエラーが発生したため設定を行いました。次にこの初期化パラメーターを設定してから再実行すると、やはりリモート・インスタンスに接続できない(ORA-17629)エラーが発生しました。
$ rman target SYS/password@O18P auxiliary /
Recovery Manager: Release 18.0.0.0.0 - Production on Fri Apr 19 13:08:26 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
connected to target database: O18P (DBID=677639375)
connected to auxiliary database: O18P (DBID=677639375)
RMAN> DUPLICATE PLUGGABLE DATABASE pdb1 AS pdb2 FROM ACTIVE DATABASE;
Starting Duplicate PDB at 19-APR-19
using channel ORA_AUX_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate PDB command at 04/19/2019 13:12:16
RMAN-05501: aborting duplication of target database
RMAN-05655: specified REMOTE_RECOVERY_FILE_DEST parameter is NULL
RMAN> DUPLICATE PLUGGABLE DATABASE pdb1 AS pdb2 FROM ACTIVE DATABASE;
Starting Duplicate PDB at 19-APR-19
using channel ORA_AUX_DISK_1
current log archived
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate PDB command at 04/19/2019 13:13:17
RMAN-05501: aborting duplication of target database
RMAN-06136: Oracle error from auxiliary database: ORA-17627:
ORA-17629: Cannot connect to the remote database server
両方のインスタンスをネットワーク経由で接続
targetとauxiliaryを同一インスタンスにネットワーク経由で接続し、DUPLICATE PLUGGABLE DATABASE文を実行します。無事にRMANを使ってローカル・クローンが実行できました。
$ rman target SYS/password@O18P auxiliary SYS/password@O18P
Recovery Manager: Release 18.0.0.0.0 - Production on Fri Apr 19 13:13:54 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
connected to target database: O18P (DBID=677639375)
connected to auxiliary database: O18P (DBID=677639375)
RMAN> DUPLICATE PLUGGABLE DATABASE pdb1 AS pdb2 FROM ACTIVE DATABASE;
Starting Duplicate PDB at 19-APR-19
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=397 device type=DISK
current log archived
contents of Memory Script:
{
set newname for clone datafile 8 to new;
set newname for clone datafile 9 to new;
set newname for clone datafile 10 to new;
set newname for clone datafile 11 to new;
restore
from nonsparse clone foreign pluggable database
"PDB1"
from service 'O18P' ;
}
<< 途中省略 >>
current log archived
contents of Memory Script:
{
set archivelog destination to '/u01/app/oracle/remote_recovery_area';
restore clone force from service 'O18P'
foreign archivelog from scn 880962;
}
executing Memory Script
executing command: SET ARCHIVELOG DESTINATION
Starting restore at 19-APR-19
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting archived log restore to user-specified destination
archived log destination=/u01/app/oracle/remote_recovery_area
channel ORA_AUX_DISK_1: using network backup set from service O18P
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=15
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:06
channel ORA_AUX_DISK_1: starting archived log restore to user-specified destination
archived log destination=/u01/app/oracle/remote_recovery_area
channel ORA_AUX_DISK_1: using network backup set from service O18P
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=16
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:06
Finished restore at 19-APR-19
Performing import of metadata...
Finished Duplicate PDB at 19-APR-19