سلام به همه دوستان
از اوراکل 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 در دسترس می باشد
موفق باشید