随着oracle10G发布,闪回技术的出现,oracle DBA的上班的心情也得到了许多宽心,闪回技术主要是针对人为出错而设计的。
闪回开启
启动闪回需要在mount状态下执行
alter database flashback on;
闪回的分类
1、闪回查询 2、闪回数据归档 3、闪回事物查询 4、闪回事务 5、闪回表 6、闪回删除 7.闪回数据库
一、 闪回查询介绍(分闪回时间点查询和闪回版本查询)
以表为单位查询过去的时间点数据称为闪回查询,其中利用select 命令的 "as of" 子句,与PL/SQL包DBMS_flashback在过去的一个时间点上查询,称为闪回时间点查询。
处用versions between 子句在过去的一段时间范围查询,称为闪回版本查询。
之所以能查看过去,是因为闪回查询能够在撤消(UNDO)段内搜索撤消数据,UNDO段数据保留多久决定了闪回查询的时间窗口的在小,撤消数据的保留策略取决于4个因素
1、初始化参数 undo_retention的值,单位秒,默认900秒,例如修改为为建议值1小时
sql> alter system set undo_retention=3600;
能不能保留这么久还要看其它因素。
2、UNDO表空间的数据文件是否启用了自动扩展,若能够自动增长,则undo_retention参数值的建议能够被最大限度采纳哦,例如查找undo表空间数据文件是否为自动扩展脚本如下
sql> select autoextensible,maxbytes/1024/1024/1024 from dba_data_files where tablespace_name=(select value from v$parameter where name='undo_tablespace');
注意:自动增加,加undo_retention设置过大,可能会打造一个很大的undo表空间,小心使用。另外如果让数据库绝对尊重undo_retention的设置可修改默认undo表
表间属性。例如:
sql> alter tablespace undotbs1 retention guarantee;
建议没特殊需求不设置此属性,如undo表空间空间不够可能会带来事物无法运行。
闪回时间点查询例子
示例1:查询scott.emp表在2015-2-1号上行23点12分47秒时所有行
示例 2: 查询scott.emp表7844号员工5分钟前的薪水
示列3: 利用scn查询
示列4:将员工编号7844的薪水字段修改15分钟前的值
以上能否查询成功跟闪回时间窗口有着密切的关连
闪回开启
启动闪回需要在mount状态下执行
alter database flashback on;
闪回的分类
1、闪回查询 2、闪回数据归档 3、闪回事物查询 4、闪回事务 5、闪回表 6、闪回删除 7.闪回数据库
一、 闪回查询介绍(分闪回时间点查询和闪回版本查询)
以表为单位查询过去的时间点数据称为闪回查询,其中利用select 命令的 "as of" 子句,与PL/SQL包DBMS_flashback在过去的一个时间点上查询,称为闪回时间点查询。
处用versions between 子句在过去的一段时间范围查询,称为闪回版本查询。
之所以能查看过去,是因为闪回查询能够在撤消(UNDO)段内搜索撤消数据,UNDO段数据保留多久决定了闪回查询的时间窗口的在小,撤消数据的保留策略取决于4个因素
1、初始化参数 undo_retention的值,单位秒,默认900秒,例如修改为为建议值1小时
sql> alter system set undo_retention=3600;
能不能保留这么久还要看其它因素。
2、UNDO表空间的数据文件是否启用了自动扩展,若能够自动增长,则undo_retention参数值的建议能够被最大限度采纳哦,例如查找undo表空间数据文件是否为自动扩展脚本如下
sql> select autoextensible,maxbytes/1024/1024/1024 from dba_data_files where tablespace_name=(select value from v$parameter where name='undo_tablespace');
注意:自动增加,加undo_retention设置过大,可能会打造一个很大的undo表空间,小心使用。另外如果让数据库绝对尊重undo_retention的设置可修改默认undo表
表间属性。例如:
sql> alter tablespace undotbs1 retention guarantee;
建议没特殊需求不设置此属性,如undo表空间空间不够可能会带来事物无法运行。
闪回时间点查询例子
示例1:查询scott.emp表在2015-2-1号上行23点12分47秒时所有行
sql> select * from scott.emp as of timestamp to_timestamp('2015-02-01 23:12:47','YYYY-MM-DD HH24:MI:SS'); |
示例 2: 查询scott.emp表7844号员工5分钟前的薪水
sql> select sal from scott.emp as of timestamp (systimestamp - interval '5' minute) where empno=7844; |
示列3: 利用scn查询
sql> select job_id from scott.emp as of scn 22424242 where empno=7844; |
示列4:将员工编号7844的薪水字段修改15分钟前的值
sql>update scott.emp set sal=(select sal from scott.emp as of timestamp (systimestamp - interval '15' minute) where empno=7844) where empno=7844; |
以上能否查询成功跟闪回时间窗口有着密切的关连
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27252036/viewspace-1423117/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27252036/viewspace-1423117/