در اوراکل 12c، اجرای دستور duplicate در سطح یک pdb امکان پذیر است منتها با این محدودیت که برای انجام duplicate، لازم است تا cdb جدیدی هم ایجاد شود در غیر این صورت، اجرای دستور با خطا مواجه خواهد شد:
[oracle@cdb2 ~]$ rman target sys/sys@cdb1 auxiliary sys/sys@cdb2
connected to target database: cdb1 (DBID=4178530773)
connected to auxiliary database: cdb2 (DBID=839691519)
RMAN> DUPLICATE DATABASE TO CDB2 PLUGGABLE DATABASE pdb12c;
RMAN-05500: the auxiliary database must be not mounted when issuing a DUPLICATE command
در اوراکل 18c، به عنوان یک قابلیت جدید، duplicate یک pdb به cdbای که از قبل موجود است، امکان پذیر می باشد در این متن، با ارائه یک مثال، شیوه انجام ان را مشاهده خواهید کرد.
مثال: در این مثال، pdb18c که در cdb1 حاضر است، در cdb2 هم تکثیر خواهد شد.
در حین اجرای دستور duplicate، ممکن است تغییراتی در pdb مبدا(cdb1) ایجاد شود، که این تغییرات، در پایان دستور duplicate، از طریق ارشیولاگ بر روی pdb مقصد(cdb2) اعمال خواهند شد. پس قبل از اجرای دستور duplicate، باید مسیر ارشیولاگهایی که قرار است از cdb1 به cdb2 منتقل شوند را مشخص نمود. این کار از طریق پارامتر REMOTE_RECOVERY_FILE_DEST قابل انجام است:
–cdb2
[oracle@cdb2 ~]$ mkdir /18c/remote_arch
SQL> alter system set REMOTE_RECOVERY_FILE_DEST=’/18c/remote_arch’;
System altered.
بعد از تعیین مقدار این پارامتر، با کمک rman و با اجرای دستور duplicate، عملیات تکثیر برای pdb18c انجام خواهد شد:
–cdb2
[oracle@cdb2 ~]$ rman target sys/sys@CDB1 auxiliary sys/sys@cdb2
Recovery Manager: Release 18.0.0.0.0 – Production on Wed Jun 27 10:14:44 2018
Version 18.1.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
connected to target database: CDB1 (DBID=961316182)
connected to auxiliary database: CDB2 (DBID=1453270123)
RMAN>DUPLICATE PLUGGABLE DATABASE Pdb18c TO CDB2 FROM ACTIVE DATABASE;
Starting Duplicate PDB at 27-JUN-18
contents of Memory Script:
{
set newname for clone datafile 60 to new;
set newname for clone datafile 61 to new;
set newname for clone datafile 62 to new;
restore from nonsparse clone foreign pluggable database “PDB18C” from service ‘CDB1’ ;
}
channel ORA_AUX_DISK_1: using network backup set from service CDB1
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring foreign file 62 to /u02/18c/base/oradata/CDB2/6F99DAD756624AF9E0530488200A4A05/datafile/o1_mf_undotbs1_fjt6gfbd_.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 27-JUN-18
contents of Memory Script:
{
set archivelog destination to ‘/18c/remote_arch’;
restore clone force from service ‘CDB1’ foreign archivelog from scn 19590084;
}
executing command: SET ARCHIVELOG DESTINATION
Starting restore at 27-JUN-18
archived log destination=/18c/remote_arch
channel ORA_AUX_DISK_1: using network backup set from service CDB1
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=203
Finished Duplicate PDB at 27-JUN-18
محتوای alert log بانک cdb1 در زمان اجرای دستور duplicate:
–cdb1(alert log)
2018-06-27T13:12:33.969208+04:30
ALTER SYSTEM ARCHIVE LOG
2018-06-27T13:13:10.553587+04:30
NET (PID:24220): Archived Log entry 263 added for T-1.S-202 ID 0x3959dcd8 LAD:1
2018-06-27T13:13:10.582768+04:30
ALTER SYSTEM ARCHIVE LOG
2018-06-27T13:13:10.588942+04:30
Thread 1 advanced to log sequence 204 (LGWR switch)
Current log# 2 seq# 204 mem# 0: /u01/18c_oradata/CDB1/onlinelog/o1_mf_2_fd0wlk11_.log
2018-06-27T13:13:10.591765+04:30
NET (PID:24220): Archived Log entry 264 added for T-1.S-203 ID 0x3959dcd8 LAD:1
محتوای alert log بانک cdb2 در زمان اجرای دستور duplicate:
–cdb2(alert log):
Full restore complete of datafile 62 to datafile copy /u02/18c/base/oradata/CDB2/6F99DAD756624AF9E0530488200A4A05/datafile/o1_mf_undotbs1_fjt6gfbd_.dbf. Elapsed time: 0:00:00
checkpoint is 19590167
last deallocation scn is 19577386
Undo Optimization current scn is 19587396
2018-06-27T13:13:24.011604+04:30
CREATE PLUGGABLE DATABASE Pdb18c AS CLONE USING ‘/u02/18c/home/dbs/_rm_pdb_pitr_7_cdb2.xml’ SOURCE_FILE_NAME_CONVERT = ( ‘/u01/18c_oradata/CDB1/6F99DAD756624AF9E0530488200A4A05/datafile/o1_mf_temp_fm67zx39_.dbf’ , ‘/u02/18c/base/oradata/CDB2/6F99DAD756624AF9E0530488200A4A05/datafile/cl_Bm_mf_temp_fm67zx39_.dbf’,‘/u01/18c_oradata/CDB1/6F99DAD756624AF9E0530488200A4A05/datafile/o1_mf_system_fm67zx30_.dbf’ , ‘/u02/18c/base/oradata/CDB2/6F99DAD756624AF9E0530488200A4A05/datafile/o1_mf_system_l0t6gfam_.dbf’ , ‘/u01/18c_oradata/CDB1/6F99DAD756624AF9E0530488200A4A05/datafile/o1_mf_sysaux_fm67zx38_.dbf’ , ‘/u02/18c/base/oradata/CDB2/6F99DAD756624AF9E0530488200A4A05/datafile/o1_mf_sysaux_lvt6gfau_.dbf’ , ‘/u01/18c_oradata/CDB1/6F99DAD756624AF9E0530488200A4A05/datafile/o1_mf_undotbs1_fm67zx39_.dbf’ , ‘/u02/18c/base/oradata/CDB2/6F99DAD756624AF9E0530488200A4A05/datafile/o1_mf_undotbs1_fjt6gfbd_.dbf’ ) NOCOPY REFRESH MODE MANUAL
2018-06-27T13:13:24.226142+04:30
PDB18C(5):ALTER SYSTEM SET remote_recovery_file_dest=’/18c/remote_arch’ SCOPE=SPFILE PDB=’PDB18C’;
PDB18C(5):alter pluggable database refresh
PDB18C(5):Completed: alter pluggable database refresh
PDB18C(5):alter pluggable database refresh mode none
PDB18C(5):Undo initialization recovery: err:0 start: 351874245 end: 351874276 diff: 31 ms (0.0 seconds)
PDB18C(5):[7385] Successfully onlined Undo Tablespace 2.
PDB18C(5):Undo initialization online undo segments: err:0 start: 351874276 end: 351874287 diff: 11 ms (0.0 seconds)
PDB18C(5):Database Characterset for PDB18C is AL32UTF8
PDB18C(5):JIT: pid 7385 requesting stop
PDB18C(5):While transitioning the pdb 5 to clean state, clearing all its abort bits in the control file.
PDB18C(5):Completed: alter pluggable database refresh mode none
PDB18C(5):alter pluggable database open
PDB18C(5):Undo initialization recovery: err:0 start: 351875056 end: 351875060 diff: 4 ms (0.0 seconds)
PDB18C(5):[7385] Successfully onlined Undo Tablespace 2.
PDB18C(5):Undo initialization online undo segments: err:0 start: 351875061 end: 351875085 diff: 24 ms (0.0 seconds)
PDB18C(5):Undo initialization finished serial:0 start:351875056 end:351875086 diff:30 ms (0.0 seconds)
Opatch validation is skipped for PDB PDB18C (con_id=5)
PDB18C(5):Adding new file#37 to file$(old file#60). fopr-0, newblks-32000, oldblks-19200
PDB18C(5):Adding new file#38 to file$(old file#61). fopr-0, newblks-47360, oldblks-15360
PDB18C(5):Adding new file#39 to file$(old file#62). fopr-0, newblks-12800, oldblks-12800
PDB18C(5):Successfully created internal service PDB18C at open
Pluggable database PDB18C opened in upgrade mode
PDB18C(5):Completed: alter pluggable database open
PDB18C(5):alter pluggable database close immediate
Pluggable database PDB18C closed
PDB18C(5):Completed: alter pluggable database close immediate
PDB18C(5):alter pluggable database open
PDB18C(5):[7385] Successfully onlined Undo Tablespace 2.
PDB18C(5):Database Characterset for PDB18C is AL32UTF8
Pluggable database PDB18C opened read write
PDB18C(5):Completed: alter pluggable database open
همچنین با رجوع به cdb2 خواهیم دید که pdb18c، در حالت read write قرار دارد:
–cdb2
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
———- —————————— ———- ———-
2 PDB$SEED READ ONLY NO
5 PDB18C READ WRITE NO
در نهایت، ارشیوهای مرتبط با duplicate را از سرور cdb2 حذف می کنیم:
[root@cdb2 ~]# cd /18c/remote_arch
[root@cdb2 remote_arch]# ls -l
-rw-r—– 1 oracle oinstall 24064 Jun 27 13:13 1_202_972296216.dbf
-rw-r—– 1 oracle oinstall 1024 Jun 27 13:13 1_203_972296216.dbf
[root@cdb2 remote_arch]# rm -rf /18c/remote_arch/*
پ.ن: می توان نام pdb را در زمان انجام duplicate تغییر داد(در cdb2):
DUPLICATE PLUGGABLE DATABASE Pdb18c as pdb18c_new TO CDB2 FROM ACTIVE DATABASE;
Comment (1)