在创建时间点数据库克隆之前,请查看以下要求。
注意:
- 时间点数据库克隆仅在Oracle ASM flex和扩展磁盘组中受支持。
- 只有Oracle Database 18c版本18.1或更高版本才支持时间点数据库克隆。
- 时间点数据库克隆需要磁盘组兼容性属性,
COMPATIBLE.ASM并COMPATIBLE.RDBMS设置为18.0或更高。 - 源数据库(父数据库)必须是可插拔数据库。创建的数据库克隆(子级)是在相同容器数据库下或在不同容器数据库下的可插拔数据库。
Oracle ASM提供了对创建时间点数据库克隆的支持,该时间克隆是可插拔数据库的镜像副本。要克隆的数据库的所有数据文件都应存在于单个磁盘组中。克隆操作可用于快速配置相同的副本。您可以在数据库克隆中指定数据库数据文件的冗余设置,或者该设置可以默认为正在克隆的源数据库中数据文件的冗余。
克隆过程中创建的数据文件的副本最初与源相同。但是,在克隆过程完成之后,对源的更新不会导致对已克隆的子代进行任何更改。该V$ASM_DBCLONE_INFO视图显示了源数据库,克隆的数据库及其文件组之间的关系。本V$ASM_DBCLONE_INFO应在Oracle ASM实例中运行。
在本主题所示的示例中,源数据库位于DATA磁盘组上。
数据库克隆具有以下步骤:
-
准备镜像副本
在此步骤中,Oracle ASM为其他数据副本分配空间。此过程涉及创建克隆的文件,并将它们与源文件链接。但是,此时不复制数据。复制是在镜像过程中完成的。在重新平衡的准备阶段发生镜像,这是此步骤的一部分。任何时候都只能存在一个镜像副本。给定数据库或可插拔数据库的所有数据文件应驻留在单个磁盘组上。必须先使用镜像副本创建数据库克隆,然后才能创建另一个镜像副本。
将创建一个文件组,所有克隆的文件都将成为该文件组的一部分。文件组中数据库数据文件的冗余设置为您指定的值,或者该值默认为源文件组的冗余设置。与克隆关联的配额组与源数据库的配额组相同。
与克隆关联的Oracle ASM文件访问控制属性与与源数据库关联的属性相同。例如,数据库克隆的文件访问控制用户组属性与源数据库的文件访问控制用户组属性相同。
在此步骤结束时,然后再开始下一步,您可以删除准备好的镜像副本,如删除准备的镜像副本中所述。
-
拆分镜像副本并创建数据库克隆
在开始此步骤之前,必须完成准备和复制步骤。您可以
V$ASM_DBCLONE_INFO在Oracle ASM实例上显示视图,以查询正在进行的准备操作的状态。视图的DBCLONE_STATUS列V$ASM_DBCLONE_INFO指示PREPARED何时可以分割文件组。以
CREATEPLUGGABLEDATABASE开头的过程中断了源数据库文件和克隆的数据库文件之间的关系。
准备镜像副本以在同一容器数据库中创建PDB
以下示例准备镜像副本,并在DATA磁盘组上创建文件组。发出ALTER PLUGGABLE DATABASE PREPARESQL命令之前,必须连接到pdb1准备进行克隆的源可插拔数据库(在示例中)。
`
SQL> SHOW CON_NAME
CON_NAME
CDB$ROOT
SQL> ALTER SESSION SET CONTAINER = pdb1; Session altered.
SQL> SHOW CON_NAME
CON_NAME
PDB1
SQL> ALTER PLUGGABLE DATABASE PREPARE MIRROR COPY pdb1_mirror;
Pluggable database altered.
`
您可以查询 V$ASM_DBCLONE_INFO Oracle ASM实例上的视图以检查进程的状态。
SQL> SELECT * FROM V$ASM_DBCLONE_INFO;
GROUP_NUMBER DBCLONE_NAME MIRRORCOPY_NAME DBCLONE_STATUS PARENT_DBNAME PARENT_FILEGROUP_NAME CON_ID
1 DB_UNKNOWN PDB1_MIRROR PREPARED ORCL_PDB1 ORCL_PDB1 0
拆分镜像副本并在同一容器数据库中创建数据库克隆
以下示例newpdb1使用镜像副本创建数据库克隆pdb1_mirror。newpdb1是pdb1可插拔数据库的克隆,已插入CDB。该CREATE PLUGGABLE DATABASESQL命令必须在CDB的根容器中运行。
`
SQL> SHOW CON_NAME
CON_NAME
------------------------------
CDB$ROOT
SQL> CREATE PLUGGABLE DATABASE newpdb1 FROM pdb1 USING MIRROR COPY pdb1_mirror;
Pluggable database created.
SQL> ALTER SESSION SET CONTAINER = newpdb1;
Session altered.
SQL> SHOW CON_NAME
CON_NAME
------------------------------
NEWPDB1
`
您可以查询V$ASM_DBCLONE_INFO,V$ASM_FILEGROUP以及V$ASM_FILEGROUP_PROPERTY 对Oracle ASM实例了解更多信息。
`
SQL> SHOW CON_NAME
CON_NAME
------------------------------
CDB$ROOT
SQL> CREATE PLUGGABLE DATABASE newpdb1 FROM pdb1 USING MIRROR COPY pdb1_mirror;
Pluggable database created.
SQL> ALTER SESSION SET CONTAINER = newpdb1;
Session altered.
SQL> SHOW CON_NAME
CON_NAME
------------------------------
NEWPDB1
`
您可以查询V$ASM_DBCLONE_INFO,V$ASM_FILEGROUP以及V$ASM_FILEGROUP_PROPERTY对Oracle ASM实例的观点了解更多信息。
`
SQL> SELECT * FROM V$ASM_DBCLONE_INFO;
GROUP_NUMBER DBCLONE_NAME MIRRORCOPY_NAME DBCLONE_STATUS PARENT_DBNAME PARENT_FILEGROUP_NAME CON_ID
------------ ------------- --------------- --------------- ------------- --------------------- ------
1 ORCL_NEWPDB1 PDB1_MIRROR SPLIT COMPLETED ORCL_PDB1 ORCL_PDB1 0
SQL> SELECT NAME, GROUP_NUMBER, FILEGROUP_NUMBER FROM V$ASM_FILEGROUP;
NAME GROUP_NUMBER FILEGROUP_NUMBER
------------------------------------ ------------ ----------------
DEFAULT_FILEGROUP 1 0
ORCL_CDB$ROOT 1 1
ORCL_PDB$SEED 1 2
ORCL_PDB1 1 3
PDB1_MIRROR 1 4
SQL> SELECT NAME, VALUE FROM V$ASM_FILEGROUP_PROPERTY WHERE FILEGROUP_NUMBER = 4;
NAME VALUE
------------------------------------ ------------------------------------
PRIORITY MEDIUM
PARENT_FILEGROUP_NUMBER 3
DBCLONE_STATUS SPLIT COMPLETED
COMPATIBLE.CLIENT 18.0.0.0.0
REDUNDANCY MIRROR
STRIPING FINE
...
`
拆分镜像副本并在其他容器数据库中创建数据库克隆
以下示例newpdb2使用镜像副本创建数据库克隆pdb2_mirror。newpdb2是pdb1可插拔数据库的克隆,并插入了不同的CDB中new_cdb。该CREATE PLUGGABLE DATABASESQL命令必须在根容器中运行new_cdb。
在运行CREATE PLUGGABLE DATABASE命令之前,您必须创建一个数据库链接,该链接可以连接源CDB。该CREATE PLUGGABLE DATABASESQL命令必须运行CDB$ROOT。数据库链接用来连接到源数据库的数据库用户必须具有CREATE PLUGGABLE DATABASE在该应用程序容器中通常授予或本地授予的系统特权才能运行命令。
必须在源CDB中运行以下命令。
SQL> SELECT NAME FROM V$DATABASE;
NAME
---------
SRC_CDB
SQL> SHOW CON_NAME
CON_NAME
------------------------------
CDB$ROOT
SQL> CREATE USER c##dbl_user IDENTIFIED BY password;
User created.
SQL> GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##dbl_user CONTAINER=all ;
Grant succeeded.
必须在目标CDB中运行以下命令。
`
SQL> SELECT NAME FROM V$DATABASE;
NAME
---------
NEW_CDB
SQL> SHOW CON_NAME
CON_NAME
------------------------------
CDB$ROOT
SQL> CREATE DATABASE LINK cdb1_dblink CONNECT TO c##dbl_user IDENTIFIED BY password USING tns_alias_to_src_cdb;
Database link created.
SQL> CREATE PLUGGABLE DATABASE newpdb2 FROM pdb1@cdb1_dblink USING MIRROR COPY pdb2_mirror;
Pluggable database created.
SQL> ALTER SESSION SET CONTAINER = newpdb2;
Session altered.
SQL> SHOW CON_NAME
CON_NAME
------------------------------
NEWPDB2
`
您可以查询V$ASM_DBCLONE_INFO,V$ASM_FILEGROUP以及V$ASM_FILEGROUP_PROPERTY对Oracle ASM实例的观点了解更多信息。
`
SQL> SELECT * FROM V$ASM_DBCLONE_INFO;
GROUP_NUMBER DBCLONE_NAME MIRRORCOPY_NAME DBCLONE_STATUS PARENT_DBNAME PARENT_FILEGROUP_NAME CON_ID
------------ ------------- --------------- --------------- ------------- --------------------- ------
1 ORCL_NEWPDB2 PDB2_MIRROR SPLIT COMPLETED ORCL_PDB1 ORCL_PDB1 0
SQL> SELECT NAME, GROUP_NUMBER, FILEGROUP_NUMBER FROM V$ASM_FILEGROUP;
NAME GROUP_NUMBER FILEGROUP_NUMBER
------------------------------------ ------------ ----------------
DEFAULT_FILEGROUP 1 0
ORCL_CDB$ROOT 1 1
ORCL_PDB$SEED 1 2
ORCL_PDB1 1 3
PDB2_MIRROR 1 4
SQL> SELECT NAME, VALUE FROM V$ASM_FILEGROUP_PROPERTY WHERE FILEGROUP_NUMBER = 4;
NAME VALUE
------------------------------------ ------------------------------------
PRIORITY MEDIUM
PARENT_FILEGROUP_NUMBER 3
DBCLONE_STATUS SPLIT COMPLETED
COMPATIBLE.CLIENT 18.0.0.0.0
REDUNDANCY MIRROR
STRIPING FINE
...
`
删除准备的镜像副本
在准备镜像副本之后,在拆分镜像副本并创建数据库克隆之前,可以删除准备好的镜像副本。
放置操作将丢弃ALTER PLUGGABLE DATABASE PREPARESQL命令执行的所有更改。与PREPARESQL操作类似,放置操作也触发相应磁盘组上的重新平衡。您可以使用该V$ASM_DBCLONE_INFO视图查询正在进行的放置操作的状态。视图的DBCLONE_STATUS列V$ASM_DBCLONE_INFO指示DROPPING何时删除文件组以及在丢弃所有更改之后删除条目。
以下示例说明了在连接到源可插拔数据库(pdb1示例中)时如何删除准备好的镜像副本。
SQL> ALTER SESSION SET CONTAINER = pdb1;
Session altered.
SQL> ALTER PLUGGABLE DATABASE DROP MIRROR COPY pdb1_mirror;
Pluggable database altered.
尝试失败后进行清理
视图的DBCLONE_STATUS列V$ASM_DBCLONE_INFO指示FAILED时间点克隆过程何时不成功。如果尝试创建时间点克隆失败,则可以通过在磁盘组上发出重新平衡以清理文件组来解决该问题。例如,连接到Oracle ASM实例后,可以运行以下命令:
`
SQL> ALTER DISKGROUP data REBALANCE WAIT;
`




