暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19c DataGuard 新特性-复制还原点

晟数学院 2021-04-16
1030
点击上方“晟数学院”可以订阅哦!


Oracle 19c DataGuard 新特性

复制还原点


从 Oracle Database 19c 开始,DG 在主库上创建的还原点会自动复制到备库,这也是DG的新特性之一。


 ?

什么是还原点


还原点其实就是SCN的标签或别名,它分为两种类型:

  • 正常还原点(Normal Restore Points )

  • 保证还原点(Guaranteed Restore Points )


还原点提供与闪回数据库和其他介质恢复操作相关的功能。 特别是,在系统改变号(SCN)上创建的保证还原点可以使用闪回数据库将数据库回滚到此SCN。 还原点功能和闪回数据库功能可以单独使用,也可以一起使用。


正常还原点

创建正常还原点会将还原点名称分配给SCN或特定时间点。

  • 创建的正常还原点,可以代替时间在将来用于操作撤销到特点时间点。 

  • 还原点的名称和SCN是存储在控制文件中的。

  • 如果使用闪回功能或基于时间点的恢复,则可以使用还原点的名称而不是时间或SCN。 

  • 以下命令支持使用还原点:

  • RMAN中的RECOVER DATABASE和FLASHBACK DATABASE命令

  • SQL中的FLASHBACK TABLE语句

  • 创建正常还原点消除了事先手动记录SCN或通过使用闪回查询等功能确定事后的正确SCN。

  • 正常还原点是轻量级的。 控制文件可以维护数千个正常还原点的记录,而不会对数据库性能产生重大影响。

  • 如果不手动删除,正常还原点最终会从控制文件中老化,因此它们不需要持续维护。


保证还原点

保证还原点与正常还原点一样充当恢复操作中SCN的别名。 主要区别在于保证的还原点永远不会超出控制文件的范围,必须明确删除。它的使用和正常还原点没有区别。


需要注意的是,无论是否启动了闪回数据库功能,保证还原点都可以使用闪回数据库将数据库回滚到还原点SCN的状态。 如果启用了闪回日志记录,则保证还原点会强制保留从最早的保证还原点之后,闪回数据库闪回到任意SCN所需的闪回日志。 因此,如果启用了闪回日志记录,则可以将数据库闪回到开启保证还原点以后的任何SCN,而不是仅闪回到单个SCN。

12c以后,可以在CDB和PDB级别创建还原点

复制还原点


从 Oracle Database 19c 开始,在主数据库上创建的还原点会自动复制到备用数据库。


  • 在备库上生成的还原点称为复制还原点。无论主库上的还原点是保证还原点还是正常还原点,备库相应的复制还原点始终是正常还原点。


  • 备库上的复制还原点信息,是通过redo传输的备库的。所以会在备库应用日志完成才会出现。


  • 复制还原点的名字有个特别的约定,在还原点名称后使用后缀_PRIMARY

    如:主库还原点名称为:DBSTYLE,则备库复制还原点名称为:DBSTYLE_PRIMARY


需要注意:

  • 如果备库存在同名的复制还原点,则主库的还原点不会在备库创建

  • 删除主库上的还原点时,也会删除备库上相应的复制还原点。


实验演示

请看以下的实验过程:

1. 查看是否创建过还原点,下面输出显示没有创建过还原点;

[oracle@sdedu ~]$ sqlplus as sysdba


SQL*Plus: Release 19.0.0.0.0 - Production on Thu Mar 7 22:07:09 2019

Version 19.2.0.0.0


Copyright (c) 1982, 2018, Oracle.  All rights reserved.



Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.2.0.0.0


SQL> select * from v$restore_point;


no rows selected


2. 接下来创建还原点dbstyle_sd;

SQL> create restore point dbstyle_sd;


Restore point created.


3. 通过 v$restore_point 动态性能视图查看还原点信息,其中正常还原点的 storage_size 为零,保证还原点的 storage_size 会显示所用空间 ;

SQL> select scn, guarantee_flashback_database, storage_size, name, replicated from v$restore_point;


      

         SCN GUA      STOR  NAME                                 REP

---------- ---- --------- ------------------------- ------

 2092260 NO               0 DBSTYLE_SD                      NO 


4. 主库创建还原点以后,经过日志同步过去后,可以看到备库也出现了还原点。备库还原点的名称为dbstyle_sd_primary ,说明使用了_primary后缀,同时replicated列显示YES,表明是复制得到的;

[oracle@sdrep ~]$  sqlplus as sysdba


SQL*Plus: Release 19.0.0.0.0 - Production on Thu Mar 7 11:11:28 2019

Version 19.2.0.0.0


Copyright (c) 1982, 2018, Oracle.  All rights reserved.



Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.2.0.0.0


SQL> select scn, guarantee_flashback_database, storage_size, name, replicated from v$restore_point;


         SCN GUA      STOR  NAME                                  REP

---------- ---- -------- --------------------------- ------

2092260 NO               0  DBSTYLE_SD_PRIMARY     YES


5. 现在可以在备库使用这个还原点,进行闪回和还原等操作。我们用 flashback 做测试,首先要确保备库打开闪回功能(开启闪回以后在创建还原点);

SQL> select flashback_on from v$database;


FLASHBACK_ON

------------------

YES


备库开启闪回数据库的命令如下,在 recover 停掉后可以直接在备库执行;

SQL> alter database flashback on;


Database altered.


6. 接下来停掉recover过程后,可以在备库使用复制还原点对数据库进行闪回;

SQL> recover managed standby database cancel;

Media recovery complete.


SQL> flashback database to restore point dbstyle_sd_primary;


Flashback complete.


7. 闪回完成后,可以观察到当前备库的SCN和复制还原点的SCN一致;

SQL> select current_scn from v$database;


      CURRENT_SCN

-------------------

                2092260


8. 再次开启recover,应用主库传过来的日志,SCN开始增加,说明备库日志应用正常。

SQL>  recover managed standby database disconnect from session;

Media recovery complete.


SQL> select current_scn from v$database;


        CURRENT_SCN

--------------------

                 2093938


9. 当然在备库直接创建还原点也是允许的,如下输出可以看到还原点dbstyle的replicated列显示的是NO,说明不是从主库复制所生成。

SQL> recover managed standby database cancel;

Media recovery complete.


SQL> create restore point dbstyle;


Restore point created.


SQL> select scn, guarantee_flashback_database, storage_size, name, replicated from v$restore_point;


         SCN  GUA     STOR  NAME                                 REP

---------- ------- ------ ------------------------- ------

2092260 NO                0  DBSTYLE_SD_PRIMARY    YES

2093938 NO                0  DBSTYLE                            NO


10. 回到主库,在创建一个还原点dbstyle;

SQL> create restore point dbstyle;


Restore point created.


SQL> select scn, guarantee_flashback_database, storage_size, name, replicated from v$restore_point;


  

         SCN   GUA    STOR   NAME                              REP

---------- ------- ------ ------------------------ ------

2092260 NO               0   DBSTYLE_SD                    NO

2108821  NO               0   DBSTYLE                           NO


11. 在备库中再次查看还原点信息,观察到由于备库有和主库一样名称的还原点,主库创建的还原点dbstyle,不会同步到备库中;

SQL> select scn, guarantee_flashback_database, storage_size, name, replicated from v$restore_point;


         SCN GUA      STOR  NAME                                 REP

---------- ------- ------ ------------------------- ------

 2092260 NO                0  DBSTYLE_SD_PRIMARY    YES

 2093938 NO                0  DBSTYLE                            NO


12. 在主库中删除还原点;

SQL> drop restore point dbstyle_sd;


Restore point dropped.


SQL> drop restore point dbstyle;


Restore point dropped.


SQL> select scn, guarantee_flashback_database, storage_size, name, replicated from v$restore_point;


no rows selected


13. 在备库中查看还原点信息,可以看到主库复制过来的还原点已经同步删除,在备库中创建的还原点还存在;

SQL> select scn, guarantee_flashback_database, storage_size, name, replicated from v$restore_point;


          SCN GUA        STOR   NAME           REP

---------- ------- -------- ------------- -------

 2093938 NO                  0  DBSTYLE       NO



推荐阅读

Oracle 19c Data Guard物理备库搭建指南

19c新特性系列

MySQL 5.7题库解析(1z0-888)-No: 18

题库解析系列


点击下方“阅读原文”查看更多
↓↓↓
文章转载自晟数学院,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论