oracle数据库备份闪一下,详解Oracle数据库备份恢复---闪回机制,值得收藏!

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

今天主要对Oracle常用闪回使用做些详细介绍,其中对于不常用的事务和版本闪回,这里就不多做介绍了闪回设置。

01Oracle闪回概述这里用表格来说明

be6965a38a244cb63890f515f9a239c9.png

02Oracle闪回使用详解1、闪回开启

(1)开启闪回必要条件

a.开启归档日志

SQL> archive log list; ##如未开启闪回设置,在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;

ec70bda2b4d8a6b56dd5ae2cb8791189.png

(3)开启闪回

a.开启归档

mount状态:alter database archivelog;b.设置闪回区

SQL> alter system set db_recovery_file_dest='/home/U01/app/oracle/fast_recovery_area' scope=both;SQL> alter system set db_recovery_file_dest_size=60G scope=both;SQL> alter system set db_flashback_retention_target=4320 scope=both;c.开启flashback (10g在mount开启)

SQL> alter database flashback on;

ee3ec60df3c798f96db1116b2cb50c9b.png

(4)确定闪回开启

SQL> select flashback_on from v$database;2、闪回使用

(1)闪回查询

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

a.闪回查询

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

SQL> select * from scott.dept;SQL> delete from scott.dept where deptno=40;SQL> commit;SQL> select * from scott.dept as of timestamp sysdate-10/1440;SQL> select * from scott.dept as of timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd hh24:mi:ss');

1e537809789219a22394c8c7f271d4c3.png

b.闪回版本查询

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

c.闪回事务查询

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

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

闪回表就是对表的数据做回退,回退到之前的某个时间点,其利用的是undo的历史数据,与undo_retention设置有关,默认是14400分钟(1天)闪回设置。同样,sys用户表空间不支持闪回表,要想表闪回,需要允许表启动行迁移。

闪回表示例:

SQL> flashback table scott.dept to timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd hh24:mi:ss');SQL> select row_movement from dba_tables where table_name='DEPT' and owner='SCOTT';

586a2cfa1440c3d18bf085cec49769b3.png

SQL> alter table scott.dept enable row movement; SQL> flashback table scott.dept to timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd hh24:mi:ss');SQL> select * from scott.dept;SQL> alter table scott.dept disable row movement;

cb87c1b68d252a636020b70c193df780.png

(3)闪回DROP(drop table)

当一个表被drop掉,表会被放入recyclebin回收站,可通过回收站做表的闪回闪回设置。表上的索引、约束等同样会被恢复。不支持sys/system用户表空间对象,可通过alter system set recyclebin=off;关闭回收站功能

即使不开始flashback,只要开启了recyclebin,那么就可以闪回DROP表闪回设置。

但如果连续覆盖,就需要指定恢复的表名,如果已经存在表,则需要恢复重命名闪回设置。

(4)闪回数据库(truncate/多表数据变更)

数据库闪回必须在mounted状态下进行闪回设置,基于快照的可以再open下进行闪回库

闪回数据库主要是将数据库还原值过去的某个时间点或SCN闪回设置,用于数据库出现逻辑错误时,需要open database resetlogs

a.全库闪回

闪回整个数据库到XX个时间点

b.快照闪回

针对主库和备库都可以创建闪回快照点闪回设置,然后恢复到指定的快照点,但主库一旦恢复到快照点,备库的同步则需要重新同步

c.闪回snapshot standby

此功能在11GR2非常实用闪回设置,可自动创建闪回点、开启闪回日志,可完成线上数据测试后,然后做数据库闪回恢复主备关系

(5)闪回归档(增加、修改、重命名、删除表的列、truncate表、修改表的约束、以及修改分区表的分区规范)

03闪回语句1、闪回数据库

FLASHBACK DATABASE TO TIMESTAMP to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd HH24:MI:SS');flashback database to scn 16813234;2、闪回DROP

其中table_name可以是删除表名称闪回设置,也可以是别名

flashback table table_name to before drop;flashback table table_name to before drop rename to table_name_new;3、闪回表

flashback table table_name to scn scn_number;flashback table table_name to timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd HH24:MI:SS');4、闪回查询

select * from table_name as of timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd HH24:MI:SS');select * from scott.dept as of scn 16801523;5、闪回快照

create restore point before_20190518 guarantee flashback database;flashback database to restore point before_20190518 ;闪回这块的内容还是比较多的闪回设置,后面我在单独整一个excel文档分享下吧,后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

803ed41afed986c7d59ca6a035ae78d7.gif

本文TAG:闪回设置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值