Oracle Database 12c第2版(12.2)引入了使用該
CREATE PLUGGABLE DATABASE
指令執行遠端可插拔資料庫(PDB)的熱克隆的功能。在Oracle 19c中,可以使用Database Configuration Assistant(DBCA)執行可插拔資料庫(PDB)的遠端克隆。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90TUPh3aU9UNS1mYo50MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmL3IzMwEzNykDM4IzMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
1 預備需求
連接配接到遠端CDB并準備克隆。
export ORAENV_ASK=NO
export ORACLE_SID=nineteenc
. oraenv
export ORAENV_ASK=YES
sqlplus / as sysdba
在遠端資料庫中建立使用者以與資料庫連結一起使用。在這種情況下,我們将在遠端PDB中使用普通使用者。
CREATE USER c##remote_clone_user IDENTIFIED BY remote_clone_user CONTAINER=ALL;
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##remote_clone_user CONTAINER=ALL;
與正常遠端克隆不同,我們不需要建立資料庫連結。我們隻需要提供用于建立連結的憑據。DBCA完成剩下的工作。
檢查遠端CDB是否處于本地撤消模式和存檔日志模式。
CONN / AS SYSDBA
COLUMN property_name FORMAT A30
COLUMN property_value FORMAT A30
SELECT property_name, property_value FROM database_properties WHERE property_name = 'LOCAL_UNDO_ENABLED';
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED TRUE
SQL>
SELECT log_mode FROM v$database;
LOG_MODE
------------
ARCHIVELOG
SQL>
由于遠端CDB處于local undo mode 和 archivelog mode ,是以我們無需将遠端資料庫轉為隻讀模式。
連接配接到本地CDB并準備進行克隆。
export ORAENV_ASK=NO
export ORACLE_SID=nodetwodg
. oraenv
export ORAENV_ASK=YES
sqlplus / as sysdba
檢查本地CDB是否處于local undo mode 和 archivelog mode。
CONN / AS SYSDBA
COLUMN property_name FORMAT A30
COLUMN property_value FORMAT A30
SELECT property_name, property_value FROM database_properties WHERE property_name = 'LOCAL_UNDO_ENABLED';
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED TRUE
SQL>
SELECT log_mode FROM v$database;
LOG_MODE
------------
ARCHIVELOG
SQL>
2 遠端使用DBCA克隆PDB
在19c中,DBCA
-createPluggableDatabase
指令有一個名為的新參數
-createFromRemotePDB
,允許我們通過遠端克隆現有的PDB來建立新的PDB。
[-createFromRemotePDB <Create a pluggable database from Remote PDB clone operation.>]
-remotePDBName <Name of the pluggable database to clone/relocate>
-dbLinkUsername <Common user of a remote CDB, used by database link to connect to remote CDB.>
-remoteDBConnString <EZCONNECT string to connect to Source database for example "host:port/servicename">
[-remoteDBSYSDBAUserName <User name with SYSDBA privileges of remote database>]
[-dbLinkUserPassword <Common user password of a remote CDB, used by database link to connect to remote CDB.>]
[-remoteDBSYSDBAUserPassword <Password for remoteDBSYSDBAUserName user of remote database.>]
[-sysDBAUserName <User name with SYSDBA privileges>]
[-sysDBAPassword <Password for sysDBAUserName user name>]
注: 檢視dbca -createPluggableDatabase -help
確定将環境設定為指向本地執行個體“nineteenc”并建立一個名為“pdb5new”的新PDB,作為“nodetwodg”執行個體中名為“pdb5”的遠端PDB的克隆。
export ORACLE_SID=nineteenc
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbca -silent \
-createPluggableDatabase \
-pdbName pdb5new \
-sourceDB nineteenc \
-createFromRemotePDB \
-remotePDBName pdb5 \
-remoteDBConnString node2dg:1521/pdb5 \
-remoteDBSYSDBAUserName sys \
-remoteDBSYSDBAUserPassword SysPassword1 \
-dbLinkUsername c##remote_clone_user \
-dbLinkUserPassword remote_clone_user
Prepare for db operation
50% complete
Create pluggable database using remote clone operation
100% complete
Pluggable database "pdb5new" plugged successfully.
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/cdb1/pdb5new/cdb1.log" for further details.
$
連接配接到本地根容器并檢查新PDB的狀态。
COLUMN name FORMAT A30
SELECT con_id, name, open_mode FROM v$pdbs ORDER BY 1;
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 PDB1 READ WRITE
4 PDB5NEW READ WRITE
SQL>
我們可以使用以下指令删除新的可插拔資料庫進行清理。
dbca -silent \
-deletePluggableDatabase \
-sourceDB nineteenc \
-pdbName pdb5new
Prepare for db operation
25% complete
Deleting Pluggable Database
40% complete
85% complete
92% complete
100% complete
Pluggable database "pdb5new" deleted successfully.
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/cdb1/pdb5new/cdb14.log" for further details.
$
附錄
這些示例中使用的執行個體和可插拔資料庫是使用以下指令建立的。
# Local container (nineteenc).
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname nineteen -sid nineteenc -responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword SysPassword1 \
-systemPassword SysPassword1 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName pdb1 \
-pdbAdminPassword PdbPassword1 \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-totalMemory 2048 \
-storageType FS \
-datafileDestination "+DATA" \
-redoLogFileSize 50 \
-emConfiguration NONE \
-ignorePreReqs
# Remote container (nodetwodg) with PDB (pdb5).
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname nineteen -sid nodetwodg -responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword SysPassword1 \
-systemPassword SysPassword1 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName pdb5 \
-pdbAdminPassword PdbPassword1 \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-totalMemory 2048 \
-storageType FS \
-datafileDestination "+DATA" \
-redoLogFileSize 50 \
-emConfiguration NONE \
-ignorePreReqs
# Delete the instances.
#dbca -silent -deleteDatabase -sourceDB nineteenc -sysDBAUserName sys -sysDBAPassword SysPassword1
#dbca -silent -deleteDatabase -sourceDB nodetwodg -sysDBAUserName sys -sysDBAPassword SysPassword1
資料庫啟用了Oracle Managed Files(OMF)并切換到archivelog模式。
export ORAENV_ASK=NO
export ORACLE_SID=nodetwodg
. oraenv
export ORAENV_ASK=YES
sqlplus / as sysdba <<EOF
ALTER SYSTEM SET db_create_file_dest = '+DATA';
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
ALTER PLUGGABLE DATABASE pdb5 OPEN;
ALTER PLUGGABLE DATABASE pdb5 SAVE STATE;
EXIT;
EOF
export ORAENV_ASK=NO
export ORACLE_SID=nineteenc
. oraenv
export ORAENV_ASK=YES
sqlplus / as sysdba <<EOF
ALTER SYSTEM SET db_create_file_dest = '+DATA';
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
ALTER PLUGGABLE DATABASE pdb1 OPEN;
ALTER PLUGGABLE DATABASE pdb1 SAVE STATE;
EXIT;
EOF
相關連結:
Oracle Multitenant : Changes in Oracle Database Release 19c
Oracle Multitenant : Application Containers in Oracle Database 19c
Oracle Multitenant : DBCA PDB Relocate in Oracle Database 19c
參考:《Oracle Multitenant Administrator’s Guide》