oracle数据库闪回详解
来源:互联网 发布:linux怎么启动vim 编辑:程序博客网 时间:2024/05/18 20:31
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.开启归档日志
b.设置合理的闪回区
db_recovery_file_dest:指定闪回恢复区的位置
db_recovery_file_dest_size:指定闪回恢复区的可用空间大小
db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟(1天),实际取决于闪回区大小
(2)检查是否开启闪回
(3)开启闪回
a.开启归档
b.设置闪回区
c.开启flashback (10g在mount开启)
(4)确定闪回开启
(5)关闭闪回
2、闪回使用
(1)闪回查询
闪回查询主要是根据Undo表空间数据进行多版本查询,针对v$和x$动态性能视图无效,但对DBA_、ALL_、USER_是有效的
a.闪回查询
允许用户查询过去某个时间点的数据,用以重构由于意外删除或更改的数据,数据不会变化。
b.闪回版本查询
用于查询行级数据库随时间变化的方法
c.闪回事务查询
用于提供查看事务级别数据库变化的方法
(2)闪回表(update/insert/delete)
闪回表就是对表的数据做回退,回退到之前的某个时间点,其利用的是undo的历史数据,与undo_retention设置有关,默认是14400分钟(1天)
同样,sys用户表空间不支持闪回表,要想表闪回,需要允许表启动行迁移(row movement)
闪回表示例:
(3)闪回DROP(drop table)
当一个表被drop掉,表会被放入recyclebin回收站,可通过回收站做表的闪回。表上的索引、约束等同样会被恢复
不支持sys/system用户表空间对象,可通过alter system set recyclebin=off;关闭回收站功能
闪回DROP示例:
备注:即使不开始flashback,只要开启了recyclebin,那么就可以闪回DROP表。
但如果连续覆盖,就需要指定恢复的表名,如果已经存在表,则需要恢复重命名。
(4)闪回数据库(truncate/多表数据变更)
数据库闪回必须在mounted状态下进行,基于快照的可以再open下进行闪回库
闪回数据库主要是将数据库还原值过去的某个时间点或SCN,用于数据库出现逻辑错误时,需要open database resetlogs
a.全库闪回
数据库闪回示例
b.快照闪回
针对主库和备库都可以创建闪回快照点,然后恢复到指定的快照点,但主库一旦恢复到快照点,备库的同步则需要重新同步
c.闪回snapshot standby
此功能在11GR2非常实用,可自动创建闪回点、开启闪回日志,可完成线上数据测试后,然后做数据库闪回恢复主备关系
(5)闪回归档(增加、修改、重命名、删除表的列、truncate表、修改表的约束、以及修改分区表的分区规范)
3、闪回注意事项
(1)数据库闪回需要在mounted下进行,并且open时需要使用resetlogs
(2)闪回DROP只能用于非系统表空间和本地管理的表空间,外键约束无法恢复,对方覆盖、重命名需注意
(3)表DROP,对应的物化视图会被彻底删除,物化视图不会存放在recyclebin里
(4)闪回表,如果在做过dml,然后进行了表结构修改、truncate等DDL操作,新增/删除结构无法做闪回
(5)闪回归档,必须在assm管理tablespace和undo auto管理下进行
(6)注意闪回区管理,防止磁盘爆满,闪回区空间不足等
(7)主库做库的闪回,会影响备库,需要重新同步
(8)snapshot standby 不支持最高保护模式
三、备注
1、相关数据字典
V$FLASHBACK_DATABASE_LOG ##查看数据库可闪回的时间点/SCN等信息 V$flashback_database_stat ##查看闪回日志空间记录信息
2、常用查询语句
(1)查看数据库状态
(2)获取当前数据库的系统时间和SCN
(3)查看数据库可恢复的时间点
(4)查看闪回日志空间情况
(5)SCN和timestamp装换关系查询
(6)查看闪回restore_point
(7)闪回语句
a.闪回数据库
b.闪回DROP
其中table_name可以是删除表名称,也可以是别名
c.闪回表
d.闪回查询
e.闪回快照
(7)闪回空间爆满问题处理
请参照 基于ORA-19815闪回空间爆满问题的处理方法
- oracle闪回数据库详解
- oracle数据库闪回详解
- oracle 数据库服务详解
- Oracle--数据库范式详解
- ORACLE数据库闪回
- oracle数据库闪回
- oracle数据库表结构详解
- jsp连接oracle数据库详解
- Oracle数据库的启动详解
- Oracle数据库的关闭详解
- Oracle数据库客户端配置详解
- ORACLE实例与数据库详解
- Oracle数据库中的索引详解
- Oracle关闭数据库过程详解
- Oracle数据库ASM功能详解
- ORACLE实例与数据库详解
- 详解ORACLE数据库的分区表
- Oracle数据库ASM功能详解
- java之抽象类和基本类的区别
- 模拟快递发货流程
- 贪吃蛇的初步尝试
- 1011. A+B和C (15)-浙大PAT乙级真题java实现
- Mysql数据库大表归档操作
- oracle数据库闪回详解
- 展示订单
- XLlistView的使用
- java之抽象类和接口的区别
- Android自学之旅
- FreeRTOS学习--2
- MongoDB 分组统计,固定集合(五)
- java之读取配置文件的几种方法
- c++强制类型转换:dynamic_cast、const_cast 、static_cast、reinterpret_cast