[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 ...
随机推荐
- XBox360-双光盘游戏自制GOD
一直在找极限竞速4(Forza4),虽然这个版本比较老,但因为带体感.终于下到了,可惜是2个ISO.试着自己做GOD.用到两个软件:Iso2God和Xbox Backup Creator(俗称XBC) ...
- cocos2d-lua 3.5 android搭建步骤
cocos2d-lua 3.5 android搭建步骤 如何安装eclipse,jdk,android sdk,ndk这里都不说了,资料很多,而且以前用eclipse搭建cocos2d-x-c++的时 ...
- 基于OpenDaylight和Mininet的试验床平台搭建
##########################################平台架构######################################### 一.虚拟机安装和镜像加载 ...
- 学习练习 java 线程
package com.hanqi.xc; import java.util.*; public class lianxi extends Thread { public void run() { c ...
- android大项目运行中出现问题汇总
Android 项目中,特别是当项目文件和规模达到一定的程度后,会引发一些平常不常见的问题. 下面对遇到的一些问题做一个汇总和总结. scenario 1: 在项目中,我们采用了chromimum内核 ...
- python字典的常用操作方法
Python字典是另一种可变容器模型(无序),且可存储任意类型对象,如字符串.数字.元组等其他容器模型.本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建.访问.删除.其它操作等,需 ...
- Js获取当前日期时间及其它操作(转)
var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1 ...
- 从汇编层面深度剖析C++虚函数
文章出处:http://blog.csdn.net/linyt/article/details/6336762 虚函数是C++语言实现运行时多态的唯一手段,因此掌握C++虚函数也成为C++程序员是否合 ...
- 如何判断raid1中哪块硬盘损坏?
服务器 2块硬盘做的raid1,如果其中有一块坏掉,如何能判断是哪块坏掉? 方法①.通过硬盘硬件指示灯进行观察,一般黄灯代表硬盘存在问题,显示红灯则代表硬盘损坏.方法②.通过开机进入阵列配置进行查看, ...
- poj1936_All in All
时间复杂度O(n) #include <stdio.h> #include <string.h> int main(){ int al,bl,i,j; +]; +]; whil ...