کپی کردن یک 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>
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.