Oracle 18c新特性-PDB快照轮播示例分析

分类:编程技术 时间:2024-02-20 15:26 浏览:0 评论:0
0
本文与大家分享一个Oracle 18c新特性——PDB快照轮播的实例分析。小编觉得还是比较实用的,所以分享给大家,作为参考。下面就跟随小编来看看吧。

Oracle 18c 中引入的一项新功能是 PDB 快照轮播。最多可以创建8个pdb快照,这8个快照的一组称为快照轮播。当达到第 8 个快照限制时,新快照将覆盖最旧的快照,就像重做日志一样。 PDB的快照的主要作用是当出现问题时能够闪回到快照的时间点。另一个功能是根据快照查询历史数据。

SQL> SELECT r.CON_ID、p.PDB_NAME、PROPERTY_NAME、PROPERTY_VALUE AS 值、说明 FROM CDB_PROPERTIES r、CDB_PDBS p WHERE r.CON_ID = p.CON_ID AND PROPER TY_NAME类似于“MAX_PDB%”以及类似于“maximum%”的描述 ORDER BY PROPERTY_NAME; CON_ID PDB_NAME PROPERTY_NAME VALUE描述 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   -  -  - - -------------------------------------------------- --------- ----------------------------------------- --------- ------- 3 ORCLPDB1 MAX_PDB_SNAPSHOTS 给定PDB的最大快照数量

默认情况下,快照是手动创建的,我们可以将其更改为自动创建。

SQL> select snapshot_mode,snapshot_interval/60 from dba_pdbs;SNAPSH SNAPSHOT_INTERVAL/60-------------------- -- ------MANUALSQL> 每 4 小时更改可插拔数据库快照模式;可插拔数据库更改。SQL> select snapshot_mode,snapshot_interval/60 from dba_pdbs;SNAPSH SNAPSHOT_INTERVAL/60-------- ------ -- --------AUTO 4

要返回手动模式,请进入手动模式。

SQL> alterpluggabledatabasese快照模式手动;可插拔数据库已更改。SQL> alter可插拔数据库快照;可插拔数据库已更改。

创建快照手动,您可以指定您的名称self 或使用系统自动生成的名称。通过查看DBA_PDB_SNAPSHOTS视图,可以找到快照存储的路径以及创建快照的SCN号。

SQL> SELECT CON_ID、CON_NAME、SNAPSHOT_NAME、SNAPSHOT_SCN AS snap_scn、FULL_SNAPSHOT_PATH FROM DBA_PDB_SNAPSHOTS ORDER BY SNAP_SCN; CON_ID CON_NAME SNAPSHOT_NAME SNAP_SCN FULL_SNAPSHOT_PATH---------- -------------------- --------------- ---------- ----- -------------------------------------------------- -------------------------------------------------- -- 3 ORCLPDB1 SNAP_2953839490_989014667 2821702 /opt/oracle/oradata/ORCLCDB/ORCLPDB1/snap_2953839490_2821702.pdb 3 ORCLPDB1 PDB_SNAP 2823303 /opt/oracle/oradata/ORCLLCDB/ORCLP DB1/snap_2953839490_2823303.pdb 3 ORCLPDB1 SNAP_2953839490_989015970 2823679 /opt/oracle/oradata/ORCLCDB /ORCLPDB1/snap_2953839490_2823679.pdb[oracle@oracle-18c-vagrant ORCLPDB1]$ ls -lshtotal 1.3G4.0K drwxr-x---. 8 oracle oinstall 4.0K 10 月 8 日 22:39 ORCLLCDB171M-rw-r--r--。 1 oracle oinstall 171M 10 月 8 日 22:18 snap_2953839490_2821702.pd b171M -rw- r--r--。 1 oracle oinstall 171M 10 月 8 日 22:38 snap_2953839490_2823303.pdb171M -rw-r--r--。 1 oracle oinstall 171M 10 月 8 日 22:40 snap_2953839490_2823679.pdb371M -rw-r-----。 1 oracle oinstall 371M 10 月 8 日 22:39 sysaux01​​.dbf271M -rw-r-----。 1 oracle oinstall 271M 10 月 8 日 22:39 system01.dbf 56K -rw -r-----。 1 oracle oinstall 63M 10 月 1 日 23:21 temp01.dbf101M -rw-r-----。 1 oracle oinstall 101M 10 月 8 日 22:39 undotbs01.dbf5.1M -rw-r-- ---。 1 oracle oinstall 5.1M Oct 8 22:39 users01.dbf

如果要删除快照,有两种方法。第一个是使用alterpluggabledatabase删除,第二个是修改max_pdb_snapshots参数,当max_pdb_snapshots参数设置为0时,所有快照都会被删除。

SQL> 更改可插入数据库删除快照 SNAP_2953839490_989015970;可插入数据库已更改。SQL> SELECT CON_ID、CON_NAME、SNAPSHOT_NAME、SNAPSHOT_SCNAS snap_scn、SNAPSHOT_TIME、F ULL_SNAPSHOT_PATHFROM DBA_PDB_SNAPSHOTS ORDER BY SNAP_SCN; CON_ID CON_NAME SNAPSHOT_NAME SNAP_SCN SNAPSHOT_TIME FULL_SNAPSHOT_PATH-------------------------------------------------------- ------ ------------------ ---------- ------------- --- ------- ------------------------------------------- ------- --------------- 3 ORCLPDB1 SNAP_2953839490_989014667 2821702 1539008272 /opt/oracle/oradata/ORCLCDB/ORCLPDB1/snap_2953839490_2821702.pdb 3 ORCLPD B1 PDB_SNAP 282330 3 1539009503 /选择/ oracle/oradata/ORCLCDB/ORCLPDB1/ snap_2953839490_2823303.pdbSQL> alterpluggable database set max_pdb_snapshots=0;可插拔数据库已更改。SQL> SELECT CON_ID, CON_NAME, SNAPSHOT_NAME, SNAPSHOT_SCN AS snap_scn, SNAPSHOT_TIME, FULL_SNAPSHOT_PATH F ROM DBA_PDB_SNAPSHOTS 按 SNAP_SCN 排序; no rows selected

演示完上述功能后,还有一个功能,我们可以根据快照创建pdb。

sql> 更改可插拔数据库设置 max_pdb_sna照片 = 8;可插拔数据库 altersql> 更改可插拔数据库 SNA pdb_snap;可插入数据库 Alteered.sql> SELECT Con_id、Con_name、Snapshot_name、Snapshot_SCN AS snap_scn、SNAPSHOT_TIME、FULL_SNAPSHOT_PATH FROM DBA_PDB_SNAPSHOTS ORDER BY SNAP_SCN; CON_ID CON_NAME SNAPSHOT_NAME SNAP_SCN SNAPSHOT_TIME FULL_SNAPSHOT_PATH---------- ---------------------------------- ------------------------ ---- ------------- --------- ----------------------- --------------------------- --------------- 3 ORCLPDB1 PDB_SNAP 2825283 1539010328 /opt/oracle/oradata/ORCLCDB/ORCLPDB1/snap_2953839490_2825283.pdbSQL> ![oracle@oracle-18c-vagrant ~]$ mkdir -p /opt/oracle/oradata/ORCLCDB/ORCLPDB2SQL> 使用快照 PDB_SNAP create_file_dest=' /opt/oracle/oradata/ORCLCDB/ORCLPDB2' 从 ORCLPDB1 创建可插入数据库 ORCLPDB2';使用快照 PDB_SNAP create_file_dest='/opt/oracle/oradata/ORCLCDB/ORCLPDB2'* 在第 1 行从 ORCLPDB1 创建可插入数据库 ORCLPDB2:ORA-65040:不允许操作om 在可插拔数据库中 SQL> alter session set container=CDB$ROOT;会话已更改。SQL> 使用快照 PDB_SNAP create_file_dest='/opt/oracle/oradata/ORCLCDB/ORCLPDB2' 从 ORCLPDB1 创建可插拔数据库 ORCLPDB2;创建可插入数据库 .SQL> show pdbs; CON_ID CON_NAME 开放模式受限------------------------------------------------ - - ------ -- -------- 2 PDB$SEED                 只读 否     3 ORCLPDB1                 读写                                                                       Sp;恢复数据。 

当然,另一个非常有用的功能是,在创建pdb的过程中,我们设置它每15分钟生成一次快照。当然,配置该功能有一个前提条件:CDB必须处于本地undo模式。

SQL> create可插拔数据库ORCLPDB3 from ORCLPDB1 file_name_convert=('ORCLPDB1', 'ORCLPDB3') 快照模式每5分钟一次;创建了可插拔数据库。

可以看到快照是自动的通常每 5 分钟创建一次

[oracle@oracle-18c- vagrant ORCLPDB3]$ ls -lrt snap*-rw-r--r--。 1 oracle oinstall 179134736 10 月 8 日 23:13 snap_2091710291_2830531.pdb-rw-r--r--。 1 oracle oinstall 179167158 10 月 8 日 23:18 snap_2091710291_2832545.pdb-rw-r--r--。 1 oracle oinstall 179285979 10 月 8 日 23:23 snap_2091710291_2833104.pdb-rw-r--r--。 1 Oracle oinstall 179284365 10 月 8 日 23:28 snap_2091710291_2833687.pdb-rw-r--r--。 1 Oracle oinstall 179302205 10 月 8 日 23:33 snap_2091710291_2834965.pdb-rw-r--r--。 1 oracle oinstall 179315484 10 月 8 日 23:38 snap_2091710291_2836695.pdb-rw-r--r--。 1 oracle oinstall 115724288 Oct 8 23:43 snap_2091710291_2837222.pdb

我们可以做一个实验来测试一下。在生成快照之前创建一个表以插入点数据。最后一张快照是 23:43。

SQL> alter session set container=ORCLPDB3;Session altered.SQL> create table a1 as select * from dba_objects;Table created.SQL> select count(1) from a1 ;计数(1)---------- 72897[oracle@oracle-18c-vagrant ORCLPDB3]$ ls -lrt snap*-rw-r--r--. 1 oracle oinstall 179134736 10 月 8 日 23:13 snap_2091710291_2830531.pdb-rw-r--r--。 1 oracle oinstall 179167158 10 月 8 日 23:18 snap_2091710291_2832545.p db-rw-r--r--。 1 oracle oinstall 179285979 10 月 8 日 23:23 snap_2091710291_2833104.pdb-rw-r--r--。 1 Oracle oinstall 179284365 10 月 8 日 23:28 snap_2091710291_2833687.pdb-rw-r--r--。 1 oracle oinstall 1 79302205 10 月 8 日 23:33 snap_2091710291_2834965 .pdb-rw-r--r--。 1 oracle oinstall 179315484 10 月 8 日 23:38 snap_2091710291_2836695.pdb-rw-r--r--。 1 oracle oinstall 179353508 10 月 8 日 23:43 snap_2091710 291_2837222.pdb-rw-r --r--。 1 oracle oinstall 5767168 10 月 8 日 23:48 snap_2091710291_2839217.pdbSQL> SELECT CON_ID、CON_NAME、SNAPSHOT_NAME、SNAPSHOT_SCN AS snap_scn、SNAPSHOT_TIME、FULL_SNAPSHOT_PATH FROM DBA_PDB_SNAPSHOTS ORDER BY SNAP_SCN ; CON_ID CON_NAME SNAPSHOT_NAME SNAP_SCN SNAPSHOT_TIME FULL_SNAP SHOT_PATH---------- ------------------ --------------- --------------------------------------------------------------------------------------------- -------------------------- 7 ORCLPDB3 SNAP_2091710291_989017984 2830531 1539011592 /opt/oracle/oradata/ORCLCDB/ORCLPDB3/snap_2091710291_2830531.pdb 7 ORCL PDB3 SNAP_2091710291_9 89018284 2832545 1539011887 /opt /oracle/oradata/ORCLCDB/ORCLPDB3/snap_2091710291_2832545.pdb   7 ORCLPDB3 SNAP_2091710291_989018584 2833104 1539012188 /opt/oracle/oradata/ORCLCDB/ ORCLPDB3/snap_2091710291_2833104.pdb 7 ORCLPDB3 SNAP_2091710291_989018884 2833687 1539012489 /opt/oracle/oradata/ORCLLCDB/ORCLPDB3/ snap_2091710291_2833687.pdb 7 ORCLPDB3 SNAP_20917 10291_989019184 2834965 1539012787 /opt/oracle/ oradata/ORCLCDB/ORCLPDB3/snap_2091710291_2834965.pdb 7 ORCLPDB3 SNAP_2091710291_989019484 2836695 1539013087 /opt/oracle/oradata/ORCLCDB/ORCLPD B3/snap_2091710291_2836695.pdb 7 ORCLPDB3 SNAP_2091710291_98901978 4 2837222 1539013386 /选择/oracle/oradata/ORCLCDB/ORCLPDB3/snap_2091710291_2837222.pdb 7 ORCLPDB3 SNAP_2091710291_989020084 2839217 15390136 86 /opt/oracle/oradata/ORCLCDB/ORCLPDB3/snap_2091710291_2839217.pdb

一个新的Snapshot,此时我们使用新的Snapshot来进行克隆。登录ORCLPDB4数据库后,我们会发现有数据。

SQL> 更改会话集容器=CDB$ROOT;会话更改。SQL> 使用快照 SNAP_2091710291_989020084 create_file_dest='/opt/oracle/oradata/ 从 ORCLPDB3 创建可插入数据库 ORCLPDB4 ORCLCDB/ORCLPDB4';已创建可插拔数据库SQL> alter可插拔数据库ORCLPDB4 open;可插拔数据库已更改。SQL> alter session set container=ORCLPDB4;会话已更改。SQL> select count(1) from a1; COUNT(1)---------- 72897

这个函数对于测试人员来说非常有用。例如,中国移动电信现在有一个BCV环境,专门用于提取和测试,而这个BCV环境是底层sync的克隆。使用18c数据库,我们可以直接创建快照,然后使用快照克隆一个新数据库到构建BCV环境进行数据提取和测试。

感谢您的阅读!这篇关于《Oracle 18c新特性-PDB快照轮播示例分析》的文章就分享到这里。希望以上内容能够给大家带来一些帮助,让大家能够学到更多的知识。如果您觉得文章不错,可以分享出去,让更多人看到!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > Oracle 18c新特性-PDB快照轮播示例分析

用户评论