Oracle闪回flashback总结
1.说明:
Ø 采用的技术。
使用的是多个技术。
1. 闪回日志
2. 回收站
3. 回滚段
无法使用回收站的操作
Drop table xxx purge;
Drop tablespace xxx
Drop user xxx cascade;
Truncate一个表
Truncate不会有回滚数据,不会有回收站,所以不能使用闪回表的方式回收,只能使用闪回数据库的方式恢复。
回收站逻辑上是一个,实际上是多少,每个表空间有自己的回收站,可以单独清空。
Ø 关于数据闪回的几点说明
1、系统表空间数据不得闪回
2、实体在数据库保存时间不可保证,保留时间取决于系统运行状况,可能是几秒钟,也可能是几个月。
3、基表闪回时,建立在表上的约束不可保证。
Ø 记录当前时间或SCN
为了以防万1,最好在数据库变动前记录时间或SCN
SQL> selectto_char(sysdate,'YYYY-MM-DD HH24:mi:ss') from dual;
SQL> selectcurrent_scn from v$database;
2.开启闪回
开启闪回需要数据库在归档模型下,所以首先需要开启归档。并且在mount状态下。
首先查看是否开启闪回:
SQL> select flashback_on fromV$database;
FLASHBACK_ON
------------------
NO
如果已经开启了闪回,无须执行下面的操作。
SQL> alter system set db_recovery_file_dest_size=30Gscope=both;
SQL> alter system setdb_recovery_file_dest='/u01/flashback' scope=both;
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database flashback on;
SQL> alter database open;
再进行确认:
SQL> select flashback_on fromV$database;
FLASHBACK_ON
------------------
YES
3.闪回操作
Ø 闪回数据库。
可以有下面3个不同的方法,按实际需要,任选其一
SQL> flashback database totimestamp(sysdate-1/24);
SQL> flashback database to timestamp
to_timestamp('2013-09-1016:00:00','YYYY-MM-DD HH24:mi:ss');
SQL> flashback database to scn 463954;
Ø 闪回表:
闪回表可以分为两种情况,一种是drop闪回,一种是闪回到指定时间或SCN
先要开启row movement
SQL>alter table emp enable row movement;
闪回到指定时间或SCN
SQL>flashback table emp to timestampto_timestamp
('2013-09-12 08:00:00','yyyy-mm-ddhh24:mi:ss');
SQL>flashback table emp to scn 4354761;
DROP闪回:
如果误对表做了drop操作,可用下面的方法闪回
SQL>flashback table s_emp1 to before drop;
可以以下面的方法闪回
SQL>flashback table flashbacktable to before drop rename to a;
SQL>flashback table "回收站实体名"to before drop;
--闪回表后表的索引也会回来,但是索引名还是在recyclebin中显示的名字,所以使用 alterindex“ bin$xxx” rename to xxxx 命令修改索引名称。
SQL>alter index "BIN$s6TKiw4uafDgRAAVF3jtoA==$0"
rename to PK_PC_STIM_INJ_ENHANCE_MON
Ø 查询闪回(flashbackquery)
delete数据库里的数据都删除了以后,还commit, 采用下面的方法实现数据的还原
·查询过去某指定时间点数据库中的数据。
SQL>select* from emp as of timestamp to_timestamp('2013-07-05 08:00:00','yyyy-mm-ddhh24:mi:ss');
·删除表后将数据添加到原表中
SQL>insertinto emp select * from emp
as of timestamp to_timestamp
('2013-07-05 08:00:00','yyyy-mm-ddhh24:mi:ss');
Ø 9i的闪回查询
9i的flashback 是基于undo的,9i根本没有recycle bin,想闪回表和库是不可能的,只能闪回查询
SQL>SELECTCOUNT(*) FROM class_daily as of timestamp to_timestamp('2013-03-21 14:58:00','yyyy-mm-ddhh24:mi:ss');
Ø 删除闪回(flashbackdrop)
闪回被dropped的基表,
·显示回收站信息
SQL>show recyclebin
--select* from user_recyclebin
·彻底删除基表
SQL>drop table s_emp1 purge ;
----彻底删除一个表用PURGE,这样的删除的表不能闪回。
·清除回收站
SQL>purge recyclebin;
·查数据库选项产品:
SQL>select * from V$option;
· truncate删除后不保留存储空间,而Delete删除后,保留存储空间,如果要删掉这些存储空间,以释放空间,可以执行以下命令:
SQL>alterttable emp deallocate unused;
·如果还要保留一部分,可以用:
SQL>alterttable emp deallocate unused 200k;
Oracle闪回flashback总结的更多相关文章
- Oracle闪回flashback
参考资料:Using Oracle Flashback Technology Oracle 11g的新特性闪回操作 闪回查询 闪回查询 闪回版本查询 闪回事务查询 闪回数据 闪回表 闪回删除 闪回数据 ...
- Oracle 闪回特性(FLASHBACK DATABASE)
--===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --======================= ...
- Oracle 闪回归档(Flashback Database)
cmd --管理员身份打开 sqlplus / as sysdba --管理数据库 shu immediate; --独占方式开始 startup mount --修改日期模式 alter datab ...
- oracle之三闪回flashback
闪回 flashback 5.1 flashback 的功能:1)利用undo data回溯或撤销提交的数据,2)flashback log 使database 可以恢复到过去某个时间点,可以作为不完 ...
- oracle闪回表详解
--- 说明闪回数据库 --- 使用闪回表将表内容还原到过去的特定时间点 --- 从删除表中进行恢复 --- 使用闪回查询查看截止到任一时间点的数据库内容 --- 使用闪回版本查询查看某一行在一段时间 ...
- Oracle闪回操作
Oracle闪回操作 1. 记录当前时间或SCN 在数据库变动前记录时间或SCN SQL> select to_char(sysdate,'YYYY-MM-DD HH24:mi:ss') fr ...
- Oracle闪回表
Oracle闪回技术 场景:测试环境数据库的表数据被误删除. 解决思路:使用闪回表技术 原理 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小 ...
- Oracle 闪回
Oracle 闪回特性(FLASHBACK DATABASE) 本文来源于:gerainly 的<Oracle 闪回特性(FLASHBACK DATABASE) > -========== ...
- 6. Oracle闪回特性
Oracle 闪回 (flashback)是9i版本提供的新特性.这一特性:其他数据库(PostgreSQL,Mysql)是羡慕不已.对数据恢复提供非常便捷的方式.闪回技术通常用于快速简单恢复数据库中 ...
随机推荐
- FLASH ROM与EEPROM的区别
EEPROM,虽然也叫“非易失性数据存储器”,但它不能直接参与ALU运算,只是用于掉电不丢失的数据存储. EEPROM和片内RAM 类似,也属于数据存储器,它的特点是数据掉电可保持,而程序存储器一般指 ...
- for循环语句之求和,阶乘,求偶,求n次篮球蹦起高度
for循环语句格式: ;;/*循环条件*/i++/*状态改变*/) { //循环体,执行代码:(break;跳出循环体) } for 穷举法用循环把各种可能的情况都走一遍,然后用if条件把满足要求的结 ...
- 【Hibernate】无外键多表查询
无外键多表查询时编写hql,直接使用逗号分隔表,where作为联合查询条件进行查询.查询出来的结果可为两种,List<List<Object>>或者List<Map< ...
- 【Web】CGI与Servlet技术对比
CGI:Common Gateway Interface,通用网关接口. 1.CGI处理步骤 首先,客户端(即Web浏览器)根据某资源的URL向Web服务器提出请求:Web服务器的守护进程(HTTP ...
- Automatic Preferred Max Layout Width is not available on iOS versions prior to 8.0
今天在真机调试低版本系统的时候出现如题类似Layout Max Width在ios 8 之前不适用的问题, 初步估计是autolayout 所导致的 查找资料解决方法如下: 将label下Preffe ...
- linux C函数之access函数的用法
1.函数功能: 检查调用进程是否可以对指定的文件执行某种操作. 2.函数原型: 1)函数头文件 #include <stdio.h> #include <unistd.h> 2 ...
- 一步一步重写 CodeIgniter 框架 (12) —— 代码再重构,回归 CI
第一课中搭建的基本的 框架模型, 只有一个 index.php 作为执行文件,按这种方式最不稳定的因素就是路径的问题. 我们经常需要通过合适的参数,比如 load_class('output') 或 ...
- C# ignoring letter case for if statement(Stackoverflow)
Question: I have this if statement: if (input == 'day') Console.Write({0}, dayData); When the user t ...
- CMake使用之一
概述 CMake是一个比make更高级的编译配置工具,它可以根据不同平台.不同的编译器,生成相应的Makefile或者vcproj项目. 通过编写CMakeLists.txt,可以控制生成的Makef ...
- T-sql表表达式
内联表值函数 可以理解是个带参数的视图的表达式,好处就是创建后,可永久保存在数据库中,查询复用. 创建的格式: create function 函数名 (参数名 as 参数类型) return tab ...