[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 ...
随机推荐
- UIButton 详解
1)创建 UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 风格有如下 typedef enum { UIButt ...
- Windows 2008下部署Exchange Server 2007
对于很多政府及企业来说,微软的邮件服务器Exchange Server都是一个不错的通信和协作平台选择,尤其新版邮件服务器Exchange Server 2007 和OCS的组合,在微软UC平台上创下 ...
- 【LeetCode】16. 3Sum Closest
题目: Given an array S of n integers, find three integers in S such that the sum is closest to a given ...
- java springMVC生成二维码
Zxing是Google提供的工具,提供了二维码的生成与解析的方法,现在使用Java利用Zxing生成二维码 1),二维码的生成 将Zxing-core.jar 包加入到classpath下. 我的下 ...
- number对象,bom对象
number对象 新创建一个number的对象,toFixed是精确到位数 var num =new Number('123.1231'); console.log(num.toFixed(1)); ...
- 华为OJ平台——将真分数分解为埃及分数
题目描述: 分子为1的分数称为埃及分数.现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数.如:8/11 = 1/2+1/5+1/55+1/110. 输入: 输入一个真分数, ...
- java中sesion
Session *Cookie基于客户端,不安全,并且大小和个数的限制. *Session域对象,范围一次会话范围,存个人相关的数据. *setAttribute(String ...
- jquery 设置元素内容html(),text(),val()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【Linux】自动化部署可信任登录
Linux信任登录,免密码登录的脚本: 需要安装expect,可以yum也可以编译安装,编译后注意脚本中的expect路径. rsa.exp #!/usr/bin/expect ########### ...
- grunt 快速入门
Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本号的 No ...