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)是羡慕不已.对数据恢复提供非常便捷的方式.闪回技术通常用于快速简单恢复数据库中 ...
随机推荐
- 无法更新 EntitySet“GuigeInfo”,因为它有一个 DefiningQuery,而 <ModificationFunctionMapping> 元素中没有支持当前操作的 <InsertFunction> 元素。
1:实体中必须有主键 2:删除创建的模型重新创建
- c++ 对象作为参数传递
对象作为参数传递时是传值.把实参的对象赋值给形参.因此效率有点低. c++传参方式可以分为2种: 1.传值 (指针作为参数,本质上也只是把地址作为值传递了而已). 2.传引用. 所以,一切传递方式不是 ...
- Apache 2.2 到 2.4的不同
1.权限设定方式变更 2.2使用Order Deny / Allow的方式,2.4改用Require apache2.2: Order deny,allowDeny from allapache2.4 ...
- UVA610 - Street Directions(Tarjan)
option=com_onlinejudge&Itemid=8&category=153&page=show_problem&problem=551"> ...
- C++之字符串分割函数split
c++之字符串分割: /* *c++之字符串分割: */ #include <iostream> #include <string> #include <vector&g ...
- Ext JS学习第四天 我们所熟悉的javascript(三)
此文用来记录学习笔记: •javascript之函数 •this关键字的使用 –this关键字总是指向调用者,谁调用函数,this就指向谁 •call.apply的使用 –call和apply主要应用 ...
- ZOJ 1893 A Multiplication Game 【简单博弈】
感觉ZJU上有不少博弈的题目. 这道题目还是比较好理解的,题目大概意思是:两人轮流乘一个2-9的数,从1开始乘,求谁的乘积先大于N. 还是寻找必败点必胜点,不过在这个题目里转换成了寻找必败区间必胜区间 ...
- Android 代码设置密码输入框内容的显示/隐藏
//内容可见 mEtPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); //内容不可见 m ...
- 一种SpringMVC调用Javascript的方法
在spring的controller里面,一般是进行业务逻辑的处理,组织数据模型,然后选择适当的显示模版进行展示,这种情况下,我们可以事先做一个js的模版,然后controller根据不同的参数调用此 ...
- HDU ACM 1066 Last non-zero Digit in N!
#include<iostream> using namespace std; int mod[20]={1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2}; ...