使用快照副本克隆可插拔数据库

发布于:2021-02-02 13:50:20

0

163

0

快照 克隆 数据库 PDB

我们可以通过CREATE PLUGGABLE DATABASE语句的SNAPSHOT COPY子句使用底层存储的快照克隆PDB。

使用快照副本执行PDB克隆可以减少创建克隆所需的时间,因为它不包括源数据文件的完整副本。

PDB快照拷贝占用了源可插拔数据库所消耗空间的一小部分。

底层存储需要支持存储级快照,例如ACFS和直接NFS客户机存储。使用稀疏ASM磁盘组的Exadata也支持此功能。

CLONEDB参数设置为FALSE时,使我们能够创建源PDB的存储级快照副本,甚至可以以读写模式打开。

让我们看一个PDB快照拷贝的示例。

PDB1是Snapshot Copy的源,并且数据库在READ WRITE模式下打开。CLONEDB参数为FALSE。基础存储是使用19c Grid Infrastructure的ACFS。

   CON_ID CON_NAME  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED  READ ONLY  NO
3 PDB1  READ WRITE NO
SQL> show parameter clone

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
clonedb     boolean FALSE
clonedb_dir     string


从PDB1源创建PDB快照副本PDB2。

SQL> create pluggable database pdb2 from pdb1 snapshot copy;

Pluggable database created.


注意PDB1和PDB2的数据文件,并注意每个文件的大小。

SQL> select pdb_name,GUID from dba_pdbs;

PDB_NAME   GUID
---------- --------------------------------
PDB1   951745FCC921042AE0536438A8C02A7B
PDB$SEED   95170A7763F65A6FE0536438A8C014F5
PDB2   957B7E9809F96452E0536438A8C06E13

SQL> select name,bytes/1048576 from v$datafile;

NAME     BYTES/1048576
---------------------------------------------------------------------------------------------------- -------------
/acfs/app/oradata/CDB1/datafile/o1_mf_system_gtj4ys7c_.dbf       910
/acfs/app/oradata/CDB1/datafile/o1_mf_sysaux_gtj506h0_.dbf       670
/acfs/app/oradata/CDB1/datafile/o1_mf_undotbs1_gtj50zq9_.dbf       280
/acfs/app/oradata/CDB1/datafile/o1_mf_system_gtj5h2mc_.dbf       270
/acfs/app/oradata/CDB1/datafile/o1_mf_sysaux_gtj5h2o0_.dbf       330
/acfs/app/oradata/CDB1/datafile/o1_mf_users_gtj510xb_.dbf 5
/acfs/app/oradata/CDB1/datafile/o1_mf_undotbs1_gtj5h2pk_.dbf       100
/acfs/app/oradata/CDB1/951745FCC921042AE0536438A8C02A7B/datafile/o1_mf_system_gtj6hoxr_.dbf       280
/acfs/app/oradata/CDB1/951745FCC921042AE0536438A8C02A7B/datafile/o1_mf_sysaux_gtj6hp12_.dbf       350
/acfs/app/oradata/CDB1/951745FCC921042AE0536438A8C02A7B/datafile/o1_mf_undotbs1_gtj6hp1c_.dbf       105
/acfs/app/oradata/CDB1/951745FCC921042AE0536438A8C02A7B/datafile/o1_mf_users_gtj6jy5h_.dbf       500
/acfs/app/oradata/CDB1/957B7E9809F96452E0536438A8C06E13/datafile/o1_mf_system_gtxbzsqm_.dbf       280
/acfs/app/oradata/CDB1/957B7E9809F96452E0536438A8C06E13/datafile/o1_mf_sysaux_gtxbzsr1_.dbf       350
/acfs/app/oradata/CDB1/957B7E9809F96452E0536438A8C06E13/datafile/o1_mf_undotbs1_gtxbzsr4_.dbf       105
/acfs/app/oradata/CDB1/957B7E9809F96452E0536438A8C06E13/datafile/o1_mf_users_gtxbzsrc_.dbf       500

现在请注意,与源数据库PDB1(1.4 GB)相比,PDB2快照副本(133 MB)在磁盘上的实际大小。

即使是133MB也被TEMPFILE占用,而数据文件每个只消耗4K!

SQL> !du -hs /acfs/app/oradata/CDB1/951745FCC921042AE0536438A8C02A7B/datafile/
1.4G /acfs/app/oradata/CDB1/951745FCC921042AE0536438A8C02A7B/datafile/

SQL> !du -hs /acfs/app/oradata/CDB1/957B7E9809F96452E0536438A8C06E13/datafile/
133M /acfs/app/oradata/CDB1/957B7E9809F96452E0536438A8C06E13/datafile/

SQL> !du -hs /acfs/app/oradata/CDB1/957B7E9809F96452E0536438A8C06E13/datafile/*
4.0K /acfs/app/oradata/CDB1/957B7E9809F96452E0536438A8C06E13/datafile/o1_mf_sysaux_gtxbzsr1_.dbf
4.0K /acfs/app/oradata/CDB1/957B7E9809F96452E0536438A8C06E13/datafile/o1_mf_system_gtxbzsqm_.dbf
133M /acfs/app/oradata/CDB1/957B7E9809F96452E0536438A8C06E13/datafile/o1_mf_temp_gtxbzsr8_.dbf
4.0K /acfs/app/oradata/CDB1/957B7E9809F96452E0536438A8C06E13/datafile/o1_mf_undotbs1_gtxbzsr4_.dbf
4.0K /acfs/app/oradata/CDB1/957B7E9809F96452E0536438A8C06E13/datafile/o1_mf_users_gtxbzsrc_.dbf