سلام به همه دوستان
از اوراکل 12.1 یک ویژگی خوبی که ما میتونیم استفاده کنیم استفاده از duplicate rman pdb هست یعنی میتونیم یک PDB رو در دیتابیس دیگه به راحتی بالا بیاوریم مثلا برای برنامه نویس ها و یا محیط تست خیلی به کار میاد
خب من در اینجا دو سرور دارم با دو دیتابیس CDB به نام های atmdb و cdb18c و بر روی سرور اول من میخواهم atmpdb رو به سرور cdb18c انقال بدم
CDB$ROOT@ATMDB> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ATMPDB READ WRITE NO 4 PDB2 MOUNTED
PDB های سمت مقصد رو هم چک میکنیم
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO SQL>
ما برای اتصال دو سرور که بر روی دو host جدا هستن دو تا TNS درست می کنیم
CDB18C = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.1.20)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = cdb18c) ) ) ATMDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.1.10)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = atmdb) ) )
[oracle@test18c admin]$ tnsping ATMDB TNS Ping Utility for Linux: Version 18.0.0.0.0 - Production on 31-MAR-2019 11:27:42 Copyright (c) 1997, 2018, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = test18c)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = atmdb))) OK (0 msec) [oracle@test18c admin]$ tnsping CDB18C TNS Ping Utility for Linux: Version 18.0.0.0.0 - Production on 31-MAR-2019 11:27:53 Copyright (c) 1997, 2018, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.1.20)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = cdb18c))) OK (0 msec)
خب حالا عملیات duplicate رو شروع میکنیم
ابتدا باید پارامتر REMOTE_RECOVERY_FILE_DEST را در دیتابیس مقصد تنظیم کنیم علت این کار هم بخاطر این که در مدت زمان duplicate دیتابیس archivelog های تولد شده خودش رو به اینجا بفرسته برای sync شدن در مدت زمان ایحاد duplicate
SQL> alter system set remote_recovery_file_dest='+FRA' scope=both; System altered.
[oracle@test18c trace]$ rman target sys@ATMDB auxiliary sys@CDB18C Recovery Manager: Release 18.0.0.0.0 - Production on Sun Mar 31 14:08:00 2019 Version 18.3.0.0.0 Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved. target database Password: connected to target database: ATMDB (DBID=609790210) auxiliary database Password: connected to auxiliary database: CDB18C (DBID=327724007) RMAN> DUPLICATE PLUGGABLE DATABASE ATMPDB as DEVATMPDB TO CDB18C DB_FILE_NAME_CONVERT('+DATA/ATMDB/','+DATA/CDB18C/') FROM ACTIVE DATABASE; Starting Duplicate PDB at 31-MAR-19 using target database control file instead of recovery catalog allocated channel: ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: SID=257 device type=DISK current log archived contents of Memory Script: { set newname for datafile 9 to "+DATA"; set newname for datafile 10 to "+DATA"; set newname for datafile 11 to "+DATA"; set newname for datafile 12 to "+DATA"; set newname for datafile 38 to "+DATA"; restore from nonsparse clone foreign pluggable database "ATMPDB" from service 'ATMDB' ; } executing Memory Script executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME Starting restore at 31-MAR-19 using channel ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: starting datafile backup set restore channel ORA_AUX_DISK_1: using network backup set from service ATMDB channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set channel ORA_AUX_DISK_1: restoring foreign file 9 to +DATA/CDB18C/81ADBC7C185B7319E0530A01000A3B17/DATAFILE/system.271.1004363869 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03 channel ORA_AUX_DISK_1: starting datafile backup set restore channel ORA_AUX_DISK_1: using network backup set from service ATMDB channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set channel ORA_AUX_DISK_1: restoring foreign file 10 to +DATA/CDB18C/81ADBC7C185B7319E0530A01000A3B17/DATAFILE/sysaux.272.1004363873 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:04 channel ORA_AUX_DISK_1: starting datafile backup set restore channel ORA_AUX_DISK_1: using network backup set from service ATMDB channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set channel ORA_AUX_DISK_1: restoring foreign file 11 to +DATA/CDB18C/81ADBC7C185B7319E0530A01000A3B17/DATAFILE/undotbs1.273.1004363877 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01 channel ORA_AUX_DISK_1: starting datafile backup set restore channel ORA_AUX_DISK_1: using network backup set from service ATMDB channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set channel ORA_AUX_DISK_1: restoring foreign file 12 to +DATA/CDB18C/81ADBC7C185B7319E0530A01000A3B17/DATAFILE/users.274.1004363877 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01 channel ORA_AUX_DISK_1: starting datafile backup set restore channel ORA_AUX_DISK_1: using network backup set from service ATMDB channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set channel ORA_AUX_DISK_1: restoring foreign file 38 to +DATA/CDB18C/81ADBC7C185B7319E0530A01000A3B17/DATAFILE/fakari.275.1004363879 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01 Finished restore at 31-MAR-19 current log archived contents of Memory Script: { set archivelog destination to '+FRA'; restore clone force from service 'ATMDB' foreign archivelog from scn 3700997; } executing Memory Script executing command: SET ARCHIVELOG DESTINATION Starting restore at 31-MAR-19 using channel ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: starting archived log restore to user-specified destination archived log destination=+FRA channel ORA_AUX_DISK_1: using network backup set from service ATMDB channel ORA_AUX_DISK_1: restoring archived log archived log thread=1 sequence=38 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01 channel ORA_AUX_DISK_1: starting archived log restore to user-specified destination archived log destination=+FRA channel ORA_AUX_DISK_1: using network backup set from service ATMDB channel ORA_AUX_DISK_1: restoring archived log archived log thread=1 sequence=39 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01 Finished restore at 31-MAR-19 Performing import of metadata... Finished Duplicate PDB at 31-MAR-19
کار ما تمام شد فقط چک چون حداولی در pdb اصلی ساخته بودم رو چک میکنم
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 DEVATMPDB READ WRITE NO SQL> alter session set container=DEVATMPDB; Session altered. SQL> select * from usertest.tbl1; ID FNAME ---------- ---------- 1 ali 1 ali 1 ali
همانطور که مشاهده میکنیم DEVATMPDB به صورت read write در دسترس می باشد
موفق باشید