签到成功

知道了

CNDBA社区CNDBA社区

Oracle 12C R2-新特性系列-PDB级别闪回数据库

2017-02-14 18:22 4002 0 原创 Oracle 12C
作者: Expect-乐

Oracle 12C R2-新特性-PDB级别闪回数据库 

 

Oracle Database 12.1中,闪回数据库操作仅限于根容器,因此会影响与根容器关联的所有可插拔数据库(PDB)。 Oracle Database 12.2现在支持可插拔数据库的闪回,使闪回数据库在多租户架构中再次相关。

启用/关闭闪回数据库

将数据库启动到mount阶段,开启闪回,然后open,再启用FLASHBACK

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> STARTUP MOUNT

ORACLE instance started.


Total System Global Area 1308622848 bytes

Fixed Size	    8792440 bytes

Variable Size	  905971336 bytes

Database Buffers	  385875968 bytes

Redo Buffers	    7983104 bytes

Database mounted.

SQL> alter database archivelog;

Database altered.


SQL> alter database open;

Database altered.


指定闪回恢复区目录和大小

SQL> alter system set db_recovery_file_dest_size=5G;

System altered.

SQL> alter system set db_recovery_file_dest='/home/oracle/archivelog';

System altered.

SQL> alter database flashback on;

Database altered.

--关闭闪回

http://www.cndba.cn/Expect-le/article/1748

SQL> alter database flashback off;

Database altered.

--查看结果

SQL> SELECT flashback_on FROM v$database;

FLASHBACK_ON

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

YES

闪回日志保留的数量是受参数DB_FLASHBACK_RETENTION_TARGET控制的,该参数表示保留时间(分钟),默认为7天。

SQL> show parameter DB_FLASHBACK_RETENTION_TARGE NAME TYPE VALUE ------------------------------------ ---------------------- ------------------------------ db_flashback_retention_target integer 1440

创建还原点

恢复点实际上是记录当时的SCN。要想恢复到之前创建的还原点,要保证还原点之后的闪回日志是完整的。

CDB级别创建恢复点与non-CDB相同。 以下示例在CDB级别分别创建和删除正常,保证的还原点。

-- 正常的还原点

CREATE RESTORE POINT cdb1_before_changes;

    DROP RESTORE POINT cdb1_before_changes;

-- 保证的还原点(Guaranteed restore point)

CREATE RESTORE POINT cdb1_before_changes GUARANTEE FLASHBACK DATABASE;

    DROP RESTORE POINT cdb1_before_changes;

下面是在PDB级别创建还原点的几个选项。

SQL> show pdbs;

    CON_ID CON_NAME	  OPEN MODE  RESTRICTED

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

 2 PDB$SEED	  READ ONLY  NO

 3 ORCLPDB	  MOUNTED

http://www.cndba.cn/Expect-le/article/1748

--切换到PDB

SQL> alter session set container=orclpdb;


        Session altered.

    SQL> startup

        Pluggable Database opened.

--正常的还原点


http://www.cndba.cn/Expect-le/article/1748http://www.cndba.cn/Expect-le/article/1748

SQL> create restore point pdb1_point1;

     Restore point created.

   SQL> drop restore point pdb1_point1;

     Restore point dropped.

--保证的还原点(Guaranteed restore point)

http://www.cndba.cn/Expect-le/article/1748

SQL> create restore point pdb1_point1 GUARANTEE FLASHBACK DATABASE;

      Restore point created.

    SQL> drop restore point pdb1_point1;

      Restore point dropped.

2.1   创建一个干净的还原点

注:如果容器数据库是以本地模式运行的就不用看这个章节。

本地模式运行的容器数据库,闪回PDB不依赖它。但是如果CDB再共享模式下运行,那么闪回到干净的还原点将更有效。这些是当可插拔数据库关闭的时候没有未完成的事务。

语法和上面相似,只是多加了个单词。而且要关闭PDB

:

切换到PDB下执行:


SQL> alter session set container=orclpdb;

SQL> shutdown immediate;

-- 干净正常的还原点

SQL> CREATE CLEAN RESTORE POINT cdb1_before_changes;
SQL> DROP RESTORE POINT cdb1_before_changes;

-- 干净保证的还原点(Guaranteed restore point)

SQL> CREATE CLEAN RESTORE POINT cdb1_before_changes GUARANTEE FLASHBACK DATABASE;

SQL> DROP RESTORE POINT cdb1_before_changes;

ROOT下执行:http://www.cndba.cn/Expect-le/article/1748

SQL> ALTER PLUGGABLE DATABASE orclpdb CLOSE;

-- 干净正常的还原点

SQL> CREATE CLEAN RESTORE POINT cdb1_before_changes FOR PLUGGABLE DATABASE orclpdb ;

SQL> DROP RESTORE POINT cdb1_before_changes ;FOR PLUGGABLE DATABASE orclpdb ;


-- 干净保证的还原点(Guaranteed restore point)

SQL> CREATE CLEAN RESTORE POINT cdb1_before_changes GUARANTEE FLASHBACK DATABASE FOR PLUGGABLE DATABASE orclpdb ;;

SQL> DROP RESTORE POINT cdb1_before_changes ;FOR PLUGGABLE DATABASE orclpdb ;

SQL> ALTER PLUGGABLE DATABASE orclpdb OPEN;

可以通过查看V $ RESTORE_POINT视图中的CLEAN_PDB_RESTORE_POINT列所示。

闪回CDB和闪回PDB

闪回CDB如下:

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP MOUNT;

SQL>FLASHBACK DATABASE TO RESTORE POINT cdb1_before_changes;

ALTER DATABASE OPEN RESETLOGS;


-- 打开所有PDB

SQL>ALTER PLUGGABLE DATABASE ALL OPEN RESETLOGS;

闪回还支持多种形式的闪回,如按时间,SCN,或者某个时间点之前。

如:

FLASHBACK DATABASE TO TIMESTAMP my_date;

FLASHBACK DATABASE TO BEFORE TIMESTAMP my_date;

FLASHBACK DATABASE TO SCN my_scn;

FLASHBACK DATABASE TO BEFORE SCN my_scn;

FLASHBACK DATABASE TO RESTORE POINT my_restore_point;

根据数据库运行的模式不同,操作也会有所不同。下面是本地UNDO模式的操作步骤:

http://www.cndba.cn/Expect-le/article/1748

http://www.cndba.cn/Expect-le/article/1748

SQL>ALTER PLUGGABLE DATABASE orclpdb CLOSE;

SQL>FLASHBACK PLUGGABLE DATABASE orclpdb TO RESTORE POINT pdb1_before_changes;

SQL>ALTER PLUGGABLE DATABASE orclpdb OPEN RESETLOGS;

http://www.cndba.cn/Expect-le/article/1748

如果使用的共享UNDO模式,语法有点不同,就是你需要制定辅助实例的位置。

SQL>FLASHBACK PLUGGABLE DATABASE orclpdb TO SCN my_scn AUXILIARY DESTINATION '/u01/auxiliary';

SQL>FLASHBACK PLUGGABLE DATABASE orclpdb TO RESTORE POINT my_restore_point AUXILIARY DESTINATION '/u01/auxiliary';

具体例子:

--创建还原点

http://www.cndba.cn/Expect-le/article/1748

SQL>CREATE RESTORE POINT pdb1_before_changes FOR PLUGGABLE DATABASE pdb1;

--创建表

SQL>CREATE TABLE t1 (

  id NUMBER

);

SQL>INSERT INTO t1 VALUES (1);

SQL>COMMIT;

SQL>SELECT * FROM t1;

 

        ID

----------

         1
SQL>

SQL>Flashback the PDB to the restore point.

SQL>ALTER PLUGGABLE DATABASE pdb1 CLOSE;

SQL>FLASHBACK PLUGGABLE DATABASE pdb1 TO RESTORE POINT pdb1_before_changes;

SQL>ALTER PLUGGABLE DATABASE pdb1 OPEN RESETLOGS;

--检查数据是否存在

SQL>SELECT * FROM t1;

SELECT * FROM t1

           *

ERROR at line 1:

ORA-00942: table or view does not exist

SQL>

可以看到已经闪回到创建表之前的那个状态了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

PDB闪回

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Expect-乐

Expect-乐

关注

Without the continuous bitter cold, there can be no fragrant plum blossom

  • 336
    原创
  • 6
    翻译
  • 100
    转载
  • 41
    评论
  • 访问:1548352次
  • 积分:1957
  • 等级:核心会员
  • 排名:第4名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ