Home > Oracle > 正文

Oracle闪回查询/闪回恢复

闪回查询以及闪回恢复

开启闪回查询的先决条件
1.启用归档
2.闪回开启

1,查看数据库归档是否开启,闪回是否开启,如下均没有开启,则归档需要在mount模式下开启。
SQL> select log_mode,flashback_on from v$database;
LOG_MODE     FLASHBACK_ON
------------ ------------------
NOARCHIVELOG NO
Elapsed: 00:00:00.00

2.启动到mount模式
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
MOUNTED
Elapsed: 00:00:00.00

2.检查归档是否开启,闪回是否开启
SQL> select log_mode,flashback_on from v$database;
LOG_MODE     FLASHBACK_ON
------------ ------------------
NOARCHIVELOG NO
Elapsed: 00:00:00.00

3.启用归档
SQL> alter database archivelog;
Database altered.
Elapsed: 00:00:00.01

4.启用闪回
SQL> alter database flashback on;
Database altered.
Elapsed: 00:00:00.30

5.确认先决条件状况,两个均已开启
SQL> select log_mode,flashback_on from v$database;
LOG_MODE     FLASHBACK_ON
------------ ------------------
ARCHIVELOG   YES
Elapsed: 00:00:00.00

6.打开数据库
SQL> alter database open;
Database altered.
Elapsed: 00:00:01.49

7.查看表空间,这次测试就使用SCOTT帐号测试
SQL> select file_name,tablespace_name from dba_data_files;
FILE_NAME                                             TABLESPACE_NAME
---------------------------------------------------- ------------------------------
/u01/app/oracle/oradata/DB01/users01.dbf             USERS
/u01/app/oracle/oradata/DB01/undotbs01.dbf             UNDOTBS1
/u01/app/oracle/oradata/DB01/sysaux01.dbf             SYSAUX
/u01/app/oracle/oradata/DB01/system01.dbf             SYSTEM
/u01/app/oracle/oradata/DB01/tbs_scott.dbf             TBS_SCOTT

Elapsed: 00:00:00.02

SQL> select owner,tablespace_name,table_name from dba_tables where tablespace_name = 'TBS_SCOTT';
OWNER                   TABLESPACE_NAME              TABLE_NAME
---------------------- -------------------------- ------------------------------
SCOTT                   TBS_SCOTT                  TB02

Elapsed: 00:00:00.07

8.创建tb03表,做测试用,数据量不需要太大,方便对比.
SQL> create table scott.tb03 as select empno,ename,sal from scott.tb02 where rownum <5;
Table created.
Elapsed: 00:00:00.22
SQL> select * from scott.tb03;
     EMPNO ENAME         SAL
---------- ---------- ----------
      7369 SMITH         800
      7499 ALLEN        1600
      7521 WARD         1250
      7566 JONES        2975

Elapsed: 00:00:00.00

9.打开时间,方便计算闪回时间
SQL> set time on;
21:39:29 SQL> !date
Sun May 22 21:39:33 CST 2016

10.更新tb03表,每行sal+1并提交
21:40:17 SQL> update scott.tb03 set sal=sal+1;

4 rows updated.

Elapsed: 00:00:00.00
21:40:30 SQL> select * from scott.tb03;
     EMPNO ENAME         SAL
---------- ---------- ----------
      7369 SMITH         801
      7499 ALLEN        1601
      7521 WARD         1251
      7566 JONES        2976

Elapsed: 00:00:00.00

21:41:35 SQL> commit;

Commit complete.

Elapsed: 00:00:00.00
21:43:54 SQL> select * from scott.tb03;

     EMPNO ENAME         SAL
---------- ---------- ----------
      7369 SMITH         801
      7499 ALLEN        1601
      7521 WARD         1251
      7566 JONES        2976

Elapsed: 00:00:00.00


11.使用闪回查询,查询在更新时间之前的数据依旧为没有+1的值
21:44:03 SQL> select * from scott.tb03       
21:44:38   2  as of timestamp
21:44:50   3  to_timestamp('2016-05-22 21:40:17','yyyy-mm-dd hh24:mi:ss');

     EMPNO ENAME         SAL
---------- ---------- ----------
      7369 SMITH         800
      7499 ALLEN        1600
      7521 WARD         1250
      7566 JONES        2975

Elapsed: 00:00:00.01

12.使用闪回恢复,更新并提交旧值。
21:45:58 SQL> update scott.tb03 new_tb03 set sal=(select sal from scott.tb03 as of timestamp to_timestamp('2016-05-22 21:40:17','yyyy-mm-dd hh24:mi:ss')old_tb03 where new_tb03.empno=old_tb03.empno);

4 rows updated.

Elapsed: 00:00:00.01
21:47:28 SQL> select * from scott.tb03;

     EMPNO ENAME         SAL
---------- ---------- ----------
      7369 SMITH         800
      7499 ALLEN        1600
      7521 WARD         1250
      7566 JONES        2975

Elapsed: 00:00:00.00
21:47:45 SQL> commit;

Commit complete.

Elapsed: 00:00:00.00
21:47:58 SQL> select * from scott.tb03;

     EMPNO ENAME         SAL
---------- ---------- ----------
      7369 SMITH         800
      7499 ALLEN        1600
      7521 WARD         1250
      7566 JONES        2975

Elapsed: 00:00:00.00


以上为闪回查询和闪回恢复的过程简单测试。

 

 

上一篇:Linux系统vi/vim编辑器命令图解
下一篇:Linux让进程在后台运行 nohup
数据库RAC 磁盘组磁盘调整

数据库RAC 磁盘组磁盘调整

CRS-2730集群资源DG无法删除

CRS-2730集群资源DG无法删除

XX平台数据库无法启动CRS-2674  HAIP

XX平台数据库无法启动CRS-2674 HAIP

有备份有归档模式下控制文件丢失故障处理

有备份有归档模式下控制文件丢失故障处理

无备份有归档模式下控制文件丢失故障处理

无备份有归档模式下控制文件丢失故障处理

无备份无归档模式下控制文件丢失故障处理

无备份无归档模式下控制文件丢失故障处理

打开oracle归档并定义归档路径

打开oracle归档并定义归档路径

发表评论

昵称
邮箱
网址

沙发空闲中,快来抢!