12c闪回 oracle_Oracle12C闪回技术

1.Oracle Flashback Query  --闪回查询

ORACLE根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回。

Flashback query(闪回查询)前提:

sys@CLONEPDB_PLUGPDB> show parameter undo

NAME                                 TYPE        VALUE

temp_undo_enabled                    boolean     FALSE

undo_management                      string      AUTO

undo_retention                       integer     900

undo_tablespace                      string      UNDOTBS1

其中undo_management = auto,设置自动管理

Undo_retention = n(秒),设置决定undo最多的保存时间,其值越大,就需要越多的undo表空间的支持。修改undo_retention的命令如下:

sys@CLONEPDB_PLUGPDB> >

System>  Elapsed: 00:00:00.06

sys@CLONEPDB_PLUGPDB> show parameter undo

NAME                                 TYPE        VALUE

temp_undo_enabled                    boolean     FALSE

undo_management                      string      AUTO

undo_retention                       integer     3600

undo_tablespace                      string      UNDOTBS1

获取数据删除前的一个时间点或scn,如下:

sys@CLONEPDB_PLUGPDB> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;

TIME                SCN

2018-01-17 14:16:00 5409876

Elapsed: 00:00:00.11

sys@CLONEPDB_PLUGPDB> conn scott/tiger@clonepdb_plug

Connected.

scott@CLONEPDB_PLUGPDB> select count(*) from emp;

COUNT(*)

12

Elapsed: 00:00:00.03

scott@CLONEPDB_PLUGPDB> delete from emp;

12 rows deleted.

Elapsed: 00:00:00.04

scott@CLONEPDB_PLUGPDB> commit;

Commit complete.

Elapsed: 00:00:00.01

scott@CLONEPDB_PLUGPDB> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;

select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual

*

ERROR at line 1:

ORA-00904: DBMS_FLASHBACK: invalid>  Elapsed: 00:00:00.02

查询该时间点(或scn)的数据,如下:

scott@CLONEPDB_PLUGPDB> select count(*) from emp;

COUNT(*)

0

Elapsed: 00:00:00.01

scott@CLONEPDB_PLUGPDB> select from emp as of timestamp to_timestamp('2018-01-17 14:16:00', 'yyyy-mm-dd hh24:mi:ss');--或select from emp as of scn 5409876;

EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO

7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800                    20  7499 ALLEN      SALESMAN        7698 1981-02-20 00:00:00       1600        300         30

7521 WARD       SALESMAN        7698 1981-02-22 00:00:00       1250        500         30

7566 JONES      MANAGER         7839 1981-04-02 00:00:00       2975                    20

7654 MARTIN     SALESMAN        7698 1981-09-28 00:00:00       1250       1400         30

7698 BLAKE      MANAGER         7839 1981-05-01 00:00:00       2850                    30

7782 CLARK      MANAGER         7839 1981-06-09 00:00:00       2450                    10

7839 KING       PRESIDENT            1981-11-17 00:00:00       5000                    10

7844 TURNER     SALESMAN        7698 1981-09-08 00:00:00       1500          0         30

7900 JAMES      CLERK           7698 1981-12-03 00:00:00        950                    30

7902 FORD       ANALYST         7566 1981-12-03 00:00:00       3000                    20

EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO

7934 MILLER     CLERK           7782 1982-01-23 00:00:00       1300                    10

12 rows selected.

Elapsed: 00:00:00.15

恢复

scott@CLONEPDB_PLUGPDB> insert into emp (select * from emp as of scn 5409876);--也可以用时间

12 rows created.

Elapsed: 00:00:00.04

scott@CLONEPDB_PLUGPDB> commit;

Commit complete.

Elapsed: 00:00:00.01

scott@CLONEPDB_PLUGPDB> select count(*) from emp;

COUNT(*)

12

局限:

|    不能Falshback到5天以前的数据。

|     闪回查询无法恢复到表结构改变之前,因为闪回查询使用的是当前的数据字典。

|     受到undo_retention参数的影响,对于undo_retention之前的数据,Flashback不保证能Flashback成功。

|      对drop,truncate等不记录回滚的操作,不能恢复。

|      普通用户使用dbms_flashback包,必须通过管理员授权。

2.Oracle Flashback Drop Table 闪回Drop掉表

scott@clonepdb_plugPDB> show recyclebin

scott@clonepdb_plugPDB> select * from test;

no rows selected

Elapsed: 00:00:00.00

scott@clonepdb_plugPDB> drop table test;

Table dropped.

Elapsed: 00:00:00.06

scott@clonepdb_plugPDB> show recyclebin

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

TEST             BIN$lHb2N8coS86p8/1o8xr29A==$0 TABLE        2018-01-18:15:26:16

scott@clonepdb_plugPDB> create table test as select * from emp where rownum select count(*) from test;

COUNT(*)

1

Elapsed: 00:00:00.01

scott@clonepdb_plugPDB> drop table test;

Table dropped.

Elapsed: 00:00:00.03

scott@clonepdb_plugPDB> show recyclebin

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

TEST             BIN$Kqeo3hZ/RA+w3PdIGKlt6Q==$0 TABLE        2018-01-18:15:27:11

TEST             BIN$lHb2N8coS86p8/1o8xr29A==$0 TABLE        2018-01-18:15:26:16

scott@clonepdb_plugPDB> flashback table test to before drop;

Flashback complete.

Elapsed: 00:00:00.06

scott@clonepdb_plugPDB> select count(*) from test;

COUNT(*)

1

Elapsed: 00:00:00.03

scott@clonepdb_plugPDB> show recyclebin

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

TEST             BIN$lHb2N8coS86p8/1o8xr29A==$0 TABLE        2018-01-18:15:26:16

scott@clonepdb_plugPDB> drop table test;

Table dropped.

Elapsed: 00:00:00.04

scott@clonepdb_plugPDB> show recyclebin

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

TEST             BIN$WZphkGyLQjqqgTNlaFN6jA==$0 TABLE        2018-01-18:15:29:52

TEST             BIN$lHb2N8coS86p8/1o8xr29A==$0 TABLE        2018-01-18:15:26:16

scott@clonepdb_plugPDB> flashback table "BIN$WZphkGyLQjqqgTNlaFN6jA==$0" to before drop;

Flashback complete.

Elapsed: 00:00:00.02

scott@clonepdb_plugPDB> select count(*) from test;

COUNT(*)

1

Elapsed: 00:00:00.03

scott@clonepdb_plugPDB> drop table test;

Table dropped.

Elapsed: 00:00:00.03

scott@clonepdb_plugPDB> show recyclebin

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

TEST             BIN$Avlh8rB/Q22J0WciRhx58g==$0 TABLE        2018-01-18:15:30:43

TEST             BIN$lHb2N8coS86p8/1o8xr29A==$0 TABLE        2018-01-18:15:26:16

scott@clonepdb_plugPDB> flashback table "BIN$lHb2N8coS86p8/1o8xr29A==$0" to before drop;

Flashback complete.

Elapsed: 00:00:00.02

scott@clonepdb_plugPDB> show recyclebin

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

TEST             BIN$Avlh8rB/Q22J0WciRhx58g==$0 TABLE        2018-01-18:15:30:43

scott@clonepdb_plugPDB> select count(*) from test;

COUNT(*)

0

scott@clonepdb_plugPDB> flashback table "BIN$Avlh8rB/Q22J0WciRhx58g==$0" to before drop rename to test_new;

Flashback complete.

Elapsed: 00:00:00.02

scott@clonepdb_plugPDB> show recyclebinscott@clonepdb_plug%5BPDB%5D(10.8.5.204-12.2)>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值