当前位置: 代码迷 >> 综合 >> Oracle Multitenant : DBCA PDB Remote Clone in Oracle Database 19c
  详细解决方案

Oracle Multitenant : DBCA PDB Remote Clone in Oracle Database 19c

热度:89   发布时间:2024-01-12 23:31:05.0

Oracle Database 12c第2版(12.2)引入了使用该CREATE PLUGGABLE DATABASE命令执行远程可插拔数据库(PDB)的热克隆的功能。在Oracle 19c中,可以使用Database Configuration Assistant(DBCA)执行可插拔数据库(PDB)的远程克隆。

1 预备需求

连接到远程CDB并准备克隆。

export ORAENV_ASK=NO
export ORACLE_SID=nineteenc
. oraenv
export ORAENV_ASK=YESsqlplus / 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 SYSDBACOLUMN property_name FORMAT A30
COLUMN property_value FORMAT A30SELECT property_name, property_value FROM database_properties WHERE property_name = 'LOCAL_UNDO_ENABLED';PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED             TRUESQL>SELECT log_mode FROM v$database;LOG_MODE
------------
ARCHIVELOGSQL>

由于远程CDB处于local undo mode 和 archivelog mode ,因此我们无需将远程数据库转为只读模式。

连接到本地CDB并准备进行克隆。

export ORAENV_ASK=NO
export ORACLE_SID=nodetwodg
. oraenv
export ORAENV_ASK=YESsqlplus / as sysdba

检查本地CDB是否处于local undo mode 和 archivelog mode。

CONN / AS SYSDBACOLUMN property_name FORMAT A30
COLUMN property_value FORMAT A30SELECT property_name, property_value FROM database_properties WHERE property_name = 'LOCAL_UNDO_ENABLED';PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED             TRUESQL>SELECT log_mode FROM v$database;LOG_MODE
------------
ARCHIVELOGSQL>

远程使用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=YESdbca -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 A30SELECT con_id, name, open_mode FROM v$pdbs ORDER BY 1;CON_ID NAME                           OPEN_MODE
---------- ------------------------------ ----------2 PDB$SEED                       READ ONLY3 PDB1                           READ WRITE4 PDB5NEW                        READ WRITESQL>

我们可以使用以下命令删除新的可插拔数据库进行清理。

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=YESsqlplus / as sysdba <<EOFALTER 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;
EOFexport ORAENV_ASK=NO
export ORACLE_SID=nineteenc
. oraenv
export ORAENV_ASK=YESsqlplus / as sysdba <<EOFALTER 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》

  相关解决方案