[terry笔记]Flashback
flashback 闪回,主要功能有两个:闪回查询(flashback query)、闪回恢复(flashback table/database)
开启闪回flashback功能(归档下才可开启数据库闪回)
select name,flashback_on from v$database; /*查看flashback是否开启*/
show parameter db_recovery; /*查看闪回恢复区及大小是否设置*/
alter system set db_recovery_file_dest_size='2G'; /*先设置闪回恢复区的大小*/
alter system set db_recovery_file_dest='c:\u01\fast_recovery_area'; /*再设置闪回恢复区路径*/
alter system set db_flashback_retention_target = 1440; /*设置数据库回退的时间,默认1440分钟为一天时间*/
alter database flashback on; /*开启flashback功能*/
闪回查询需要设置undo_management=auto(默认即可)
闪回表需要recycle bin
闪回数据库需要flashback area
一、flashback query闪回查询
1.as of timestamp
select * from t as of timestamp sysdate-20/1440; /*按时间查询,此查询是查询20分钟前的*/
2.as of scn
select * from t as of scn 1234567;
当前scn:
select dbms_flashback.get_system_change_number from dual;
select current_scn from v$database;
其实在oracle内部as of timestamp/scn 最后都是转换为scn进行闪回查询。
可以通过timestamp_to_scn与scn_to_timestamp进行转换
SQL> select timestamp_to_scn(sysdate) from dual;
SQL> select to_char(scn_to_timestamp(1582900),'yyyy-mm-dd hh24:mi:ss') from dual;
闪回查询需要保证表的结构没有做过ddl
二、flashback table闪回表
如果删除的表含有索引、触发器、约束、物化试图等,需要在恢复表后恢复其完整性。
flashback table xx.xxx to before drop rename to xxx; /*按照删除闪回不用开启行迁移*/ alter table xxx enable row movement; /*因为闪回表需要改变rowid,所以需要行迁移*/
select row_movement from user_tables where table_name = 'XXX';
/*根据scn/timestamp闪回,需要注意其触发器会失效,可以加上选项enable triggers*/
flashback table xxx to scn 1234567;
flashback table xxx to timestamp sysdate-x/1440;
此功能需要开启回收站:
show parameter recyclebin select object_name,original_name,type from recyclebin; /*查询回收站中都有哪些对象*/
SQL> drop table t;
表已删除。 SQL> select object_name,original_name,type from recyclebin; OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------ -------------------------------- -------------------------
BIN$OiJJIiwuTaCJqY+UV8eTWQ==$0 T TABLE SQL> flashback table t to before drop;
flashback table "BIN$OiJJIiwuTaCJqY+UV8eTWQ==$0" to before drop;
闪回完成。
三、flashback database闪回数据库
闪回数据库无法恢复被删除的数据文件,控制文件不可以被重建,不支持shrink后的恢复。
需要设置db_recovery_file_dest(_size),并且会在这里面产生flashback logs,需要开启force logging
select flashback_on,force_logging from v$database;
alter database flashback on;
alter database force logging;
show parameter db_flashback_retention_target /*希望能恢复到多长时间以内,默认1440分钟*/
SQL> select current_scn from v$database; CURRENT_SCN
-----------
1592391 SQL> drop table t purge;
表已删除。 SQL> shutdown immediate
ORA-01031: 权限不足
SQL> conn / as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。 SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1385840 bytes
Variable Size 352324240 bytes
Database Buffers 176160768 bytes
Redo Buffers 5791744 bytes
数据库装载完毕。 SQL> flashback database to scn 1592391;
闪回完成。 SQL> alter database open resetlogs;
数据库已更改。
/*open resetlogs会丢失flashback的时间点到目前的数据,可以用read only的方式打开数据库,用逻辑导出误操作的表,再执行recover database重新应用redo,将数据库恢复到flashback database之前状态,然后逻辑导入。*/
alter database open read only;
[terry笔记]Flashback的更多相关文章
- [terry笔记]RMAN综合学习之恢复
[terry笔记]RMAN综合学习之备份http://www.cnblogs.com/kkterry/p/3308405.html [terry笔记]RMAN综合学习之恢复 http://www.cn ...
- [terry笔记]RMAN综合学习之备份
rman是最经济实惠的oracle备份工具,在这里做一个rman的整体学习. 文章中大多是rman命令的语法,还是最好做做实验,以便印象深刻,因为大多数数据库的备份就是按时跑脚本,恢复也不是经常能遇到 ...
- [terry笔记]RMAN综合学习之配置
[terry笔记]RMAN综合学习之备份http://www.cnblogs.com/kkterry/p/3308405.html [terry笔记]RMAN综合学习之恢复 http://www.cn ...
- [terry笔记]Oracle会话追踪(二):TKPROF
接上一笔记[terry笔记]Oracle会话追踪(一):SQL_TRACE&EVENT 10046 http://www.cnblogs.com/kkterry/p/3279282.html ...
- [terry笔记]Oracle会话追踪(一):SQL_TRACE&EVENT 10046
SQL_TRACE/10046 事件是 Oracle 提供的用于进行 SQL 跟踪的手段,在日常的数据库问题诊断和解决中是非常常用的方法.但其生成的trace文件需要tkprof工具生成一个可供人 ...
- [terry笔记]ogg_迁移同步实验_零停机
oracle golden gate我最近正在琢磨,这个软件我觉得约等于dataguard的逻辑模式,我认为其最大的优势是更可控制,比如可以细化到某个schema.某个table的同步. 如下实验的主 ...
- [terry笔记]dblink
dblink在分布式数据库集群中很常见,今天简单的总结一下. db link 的命名和global_names有关,global_name是数据库全局名称,global_name在你所管理的数据库中要 ...
- [terry笔记]Oracle10g/11g安装-redhat5.5
操作系统准备工作 其实真正的进入图形界面安装是简单的,只是前期的配置比较繁琐,如版本.空间.位置.软件包.用户.环境变量.内核参数,这里主要讨论前期配置. 10g与11g的单实例安装基本一样,主要区别 ...
- [terry笔记]对人员列表文件进行数据库操作
原文件(数据已经脱敏): staff_id,name,age,phone,dept,enroll_date1,姬建明,25,152015410,运维,2013-11-012,刘海龙,26,186184 ...
随机推荐
- 命令行重新安装.net framework
①运行cmd ②运行命令: cd c:\\windows\\microsoft.net\\framework\v4.0.30319 ③在上述目录下执行如下命令 aspnet_regiis.exe -i ...
- ios 对齐属性
四个容易混淆的属性:1. textAligment : 文字的水平方向的对齐方式1> 取值NSTextAlignmentLeft = 0, // 左对齐NSTextAlignme ...
- HDFS副本机制&负载均衡&机架感知&访问方式&健壮性&删除恢复机制&HDFS缺点
副本机制 1.副本摆放策略 第一副本:放置在上传文件的DataNode上:如果是集群外提交,则随机挑选一台磁盘不太慢.CPU不太忙的节点上:第二副本:放置在于第一个副本不同的机架的节点上:第三副本:与 ...
- 删除sqlserver2008日记文件
use master go alter database dbname set recovery simple with no_wait go alter database dbname set re ...
- 洛谷P1198 [JSOI2008]最大数
P1198 [JSOI2008]最大数 267通过 1.2K提交 题目提供者该用户不存在 标签线段树各省省选 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 WA80的戳这QwQ BZOJ都 ...
- 一个不简单的Procedure body例子
create or replace package body CountBankData_20150617 is type cursorCommon is ref cursor; --游标类型 str ...
- Retrofit入门
1 Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(ScalarsConverterFactory.create()) ...
- Json.net实现方便的Json转C#(dynamic动态类型)对象
以前需要将一段json字符串转换为C#对象时,一般都是定义一个与之对应的实体类来接收.这样做有一个很大的缺点,就是当字符串特别长,属性特别多,又有嵌套时,手敲这个实体类就非常痛苦. 比如之前做的一个接 ...
- iOS之UIAlertView的使用
UIAlertView: 1.普通使用: //普通的alert UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"title&quo ...
- 【MVC】ASP.NET MVC中实现多个按钮提交的几种方法
有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能,比如一个简单的审批功能. 如果是用webform那不需要讨论,但asp.net mvc中一个表单只能提交到一个Action处理,相对比较 ...