12c闪回 oracle_基于Oracle闪回详解(必看篇)

Oracle 9i 开始支持闪回,Oracle10g开始全面支持闪回功能,Oracle11g有所完善,为大家快速的恢复数据,查询历史数据提供了很大的便捷方法。

本文主要对Oracle常用闪回使用做些详细介绍,其中对于不常用的事务和版本闪回,这里就不做介绍

一、Oracle闪回概述

闪回级别

闪回场景

闪回技术

对象依赖

影响数据

数据库

表截断、逻辑错误、其他多表意外事件

闪回DATABASE

闪回日志、undo

DROP

删除表

闪回DROP

回收站(recyclebin)

更新、删除、插入记录

闪回TABLE

还原数据,undo

查询

当前数据和历史数据对比

闪回QUERY

还原数据,undo

版本查询

比较行版本

闪回Version Query

还原数据,undo

事务查询

比较

闪回Transaction Query

还原数据,undo

归档

DDL、DML

闪回Archive

归档日志

二、Oracle闪回使用详解

1、闪回开启

(1)开启闪回必要条件

a.开启归档日志

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination /home/U01/app/oracle/oradata/testdb/arch

Oldest online log sequence 844

Next log sequence to archive 846

Current log sequence 846

##如未开启,在mount状态执行alter database archivelog;

b.设置合理的闪回区

db_recovery_file_dest:指定闪回恢复区的位置

db_recovery_file_dest_size:指定闪回恢复区的可用空间大小

db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟(1天),实际取决于闪回区大小

(2)检查是否开启闪回

SQL> select flashback_on from v$database;

FLASHBACK_ON

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

NO

(3)开启闪回

a.开启归档

mount状态:alter database archivelog;

b.设置闪回区

SQL> alter system set db_recovery_file_dest='/home/U01/app/oracle/fast_recovery_area' scope=both;

System altered.

SQL> alter system set db_recovery_file_dest_size=60G scope=both;

System altered.

SQL> alter system set db_flashback_retention_target=4320 scope=both;

System altered.

c.开启flashback (10g在mount开启)

SQL> alter database flashback on;

Database altered.

(4)确定闪回开启

SQL> select flashback_on from v$database;

FLASHBACK_ON

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

YES

(5)关闭闪回

SQL> alter database flashback off;

Database altered.

2、闪回使用

(1)闪回查询

闪回查询主要是根据Undo表空间数据进行多版本查询,针对v$和x$动态性能视图无效,但对DBA_、ALL_、USER_是有效的

a.闪回查询

允许用户查询过去某个时间点的数据,用以重构由于意外删除或更改的数据,数据不会变化。

SQL> select * from scott.dept;

DEPTNO DNAME LOC

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

ACCOUNTING NEW YORK

RESEARCH DALLAS

SALES CHICAGO

OPERATIONS BOSTON

SQL> delete from scott.dept where deptno=40;

row deleted.

SQL> commit;

Commit complete.

SQL> select * from scott.dept as of timestamp sysdate-10/1440;

DEPTNO DNAME LOC

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

ACCOUNTING NEW YORK

RESEARCH DALLAS

SALES CHICAGO

OPERATIONS BOSTON

SQL> select * from scott.dept as of timestamp to_timestamp('2017-12-14 16:20:00','yyyy-mm-dd hh24:mi:ss');

DEPTNO DNAME LOC

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

ACCOUNTING NEW YORK

RESEARCH DALLAS

SALES CHICAGO

OPERATIONS BOSTON

SQL> select * from scott.dept as of scn 16801523;

DEPTNO DNAME LOC

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

ACCOUNTING NEW YORK

RESEARCH DALLAS

SALES CHICAGO

OPERATIONS BOSTON

b.闪回版本查询

用于查询行级数据库随时间变化的方法

c.闪回事务查询

用于提供查看事务级别数据库变化的方法

(2)闪回表(update/insert/delete)

闪回表就是对表的数据做回退,回退到之前的某个时间点,其利用的是undo的历史数据,与undo_retention设置有关,默认是14400分钟(1天)

同样,sys用户表空间不支持闪回表,要想表闪回,需要允许表启动行迁移(row move

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值