Artarad_Duplicate_PDB_18c

کپی کردن یک PDB در یک CDB موجود در پایگاه‌داده اوراکل نسخه ۱۸c

مقدمه

پایگاه‌داده ۱۸c اوراکل به شما این امکان را می دهد تا یک PDB را از یک CDB با استفاده از RMAN به یک CDB موجود دیگر کپی کنید. این عملیات جایگزین عملیت Hot Cloning می باشد.

کپی کردن یک PDB در یک CDB موجود در پایگاه‌داده اوراکل نسخه ۱۸c

اوراکل ۱۲c ویژگی های جدیدی از RMAN را معرفی کرد که به شما اجازه می دهد از PDBها در یک CDB کپی بگیرید، که در آن جا CDB جدید به عنوان auxiliary instance ایجاد می شود. این ویژگی نیز بسیار شبیه به همان است با این تفاوت که از یک CDB عادی به جای auxiliary استفاده می شود.

فرضیه ها
• دو CDB Instance در حال اجرا دارید، در اینجا با نام های CDB1 و CDB3 می باشد.
• پایگاه‌داده منبع در حالت archivelog است.
• در پایگاه‌داده مقصد پارامتر REMOTE_RECOVERY_FILE_DEST تنظیم شده است.
• از پایگاه‌داده ۱۲٫۲ به بعد OMF باید برای CDB فعال باشد، در این مثال نیز از OMF استفاده کردیم.
• محدودیت های مرتبط با کپی کردن یک PDB در CDB موجود وجود دارد، که شامل:
o فرایند کپی کردن فقط از پایگاه‌داده های Active پشتیبانی می کند.
o فقط عبارات زیر در دستور DUPLICATE پشتیبانی می شوند:

NORESUME, DB_FILE_NAME_CONVERT, SECTION SIZE , USING COMPRESSED BACKUPSET

o عبارات زیر در دستور DUPLICATE پشتیبانی نمی شوند:

SPFILE, NO STANDBY, FARSYNC STANDBY, LOG_FILE_NAME_CONVERT

o کپی یک PDB در یک CDB که standby است ممکن نیست.
o در یک زمان فقط یک PDB را می توان در یک CDB کپی کرد.
o کپی بخشی از PDB نیز پشتیبانی نمی شود و باید PDB بطور کامل کپی شود، به عنوان مثال نمی توان با exclude و include در فرایند کپی Tablespaceهای مورد نظر را فقط کپی کنیم.
o کپی یک non-CDB به عنوان یک PDB در یک CDB موجود پشتیبانی نمی شود.
o کپی PDBهایی که شامل TDE-encrypted tablespace هستند پشتیبانی نمی شود.

کپی یک PDB در یک CDB موجود
ما یک PDB را با استفاده از دستور DUPLICATE در RMAN و با استفاده از عبارت pluggable database کپی می-کنیم. این عملیات دو شکل اولیه دارد، اینکه PDB با همان نام خودش کپی شود یا با نام جدید. البته با ذکر این نکته که اگر دو CDB از یک LISTENER استفاده می کنند نباید نام دو PDB یکسان باشد.

DUPLICATE PLUGGABLE DATABASE {source-PDB} TO {destination-CDB}

FROM ACTIVE DATABASE

…;

DUPLICATE PLUGGABLE DATABASE {source-PDB} AS {destination-PDB} TO {destination-CDB}

FROM ACTIVE DATABASE

…;

اگر از OMF استفاده نکنیم باید تغییر نام فایل ها را انجام دهیم.

DUPLICATE PLUGGABLE DATABASE {source-PDB} TO {destination-CDB}

DB_FILE_NAME_CONVERT(‘{source-CDB}’,'{destination-CDB}’,'{source-PDB}’,'{deat-PDB}’)

FROM ACTIVE DATABASE

…;

در مثال زیر PDB1 را از CDB1 به PDB2 در CDB3 کپی می کنیم.

export ORACLE_SID=CDB1

export ORAENV_ASK=NO

. oraenv

export ORAENV_ASK=YES

RMAN target=sys/SysPassword1@CDB1 auxiliary=sys/SysPassword1@CDB3 <<EOF

DUPLICATE PLUGGABLE DATABASE PDB1 AS PDB2 TO CDB3

FROM ACTIVE DATABASE;

exit;

EOF

در اینجا خروجی حاصل از دستور را مشاهده می کنید.

Starting Duplicate PDB at 28-DEC-18

using target database control file instead of recovery catalog

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: SID=32 device type=DISK

current log archived

contents of Memory Script:

{

set newname for clone datafile 9 to new;

set newname for clone datafile 10 to new;

set newname for clone datafile 11 to new;

set newname for clone datafile 12 to new;

restore

from nonsparse section size

۴۰۰ m clone foreign pluggable database

“PDB1”

from service ‘CDB1’ ;

}

executing Memory Script

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 28-DEC-18

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 CDB1

channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_AUX_DISK_1: restoring section 1 of 1

channel ORA_AUX_DISK_1: restoring foreign file 9 to /u02/oradata/CDB3/7E16165026D8778DE055000000000001/datafile/o1_mf_system_g2dh0l7c_.dbf

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 CDB1

channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_AUX_DISK_1: restoring section 1 of 1

channel ORA_AUX_DISK_1: restoring foreign file 10 to /u02/oradata/CDB3/7E16165026D8778DE055000000000001/datafile/o1_mf_sysaux_g2dh0ofl_.dbf

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 CDB1

channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_AUX_DISK_1: restoring section 1 of 1

channel ORA_AUX_DISK_1: restoring foreign file 11 to /u02/oradata/CDB3/7E16165026D8778DE055000000000001/datafile/o1_mf_undotbs1_g2dh0rlt_.dbf

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 CDB1

channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_AUX_DISK_1: restoring section 1 of 1

channel ORA_AUX_DISK_1: restoring foreign file 12 to /u02/oradata/CDB3/7E16165026D8778DE055000000000001/datafile/o1_mf_users_g2dh0sq9_.dbf

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01

Finished restore at 28-DEC-18

current log archived

contents of Memory Script:

{

set archivelog destination to ‘/u01/app/oracle/fast_recovery_area’;

restore clone force from service ‘CDB1’

foreign archivelog from scn 1558681;

}

executing Memory Script

executing command: SET ARCHIVELOG DESTINATION

Starting restore at 28-DEC-18

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/fast_recovery_area

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=22

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=/u01/app/oracle/fast_recovery_area

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=23

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01

Finished restore at 28-DEC-18

Performing import of metadata…

Finished Duplicate PDB at 28-DEC-18

RMAN>

اگر به CDB3 متصل شویم می‌بینید همانطور که انتظار داشته اید یک PDB به آن اضافه شده.

export ORACLE_SID=CDB3

export ORAENV_ASK=NO

. oraenv

export ORAENV_ASK=YES

sqlplus / as sysdba

COLUMN name FORMAT A30

SELECT name, open_mode

FROM v$PDBs;

NAME OPEN_MODE

—————————— ———-

PDB$SEED READ ONLY

PDB2 READ WRITE

SQL>

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *