ORACLE闪回表数据

ORACLE数据闪回操作
-------原表数据--------------------
select *from ORD_ITEMS;
----------删除数据-----------------------------
delete ORD_ITEMS;
1、利用SCN进行恢复数据
-----------查看当前SCN--------------------------
select dbms_flashback.get_system_change_number from dual;
select count(1) from ord_items as of scn 9388400;----逐一排查删除时的SCN
insert into ord_items select *from ord_items as of scn 9388400;---数据插入
2、通过时间戳timestamp进行闪回数据
-------------查找删除表时的时间-----------------------------------------
select r.FIRST_LOAD_TIME,r.* from v$sqlarea r where r.SQL_TEXT like 'delete%'order by r.FIRST_LOAD_TIME desc ;
create table t_table_recove --新表
as
select * from ord_items--你操作的那张表 
as of timestamp to_timestamp('2017-01-04 11:24:18','yyyy-mm-dd hh24:mi:ss'); /*建立新表查看被删除数据是否准确,确认无误后,插入操作表中


3、Undo_Retentiond参数的应用


SQL> show parameter undo_
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1


注意:undo_retention 就是设置Oracle Undo过期数据的保存期限,单位是秒。如果参数设置为900秒,那么Undo段数据在非Active状态之后,会保留900秒;Undo_retention是一个“目标期望值”。用户设置出这个值之后,Oracle内部会尽量保证将Undo数据保留超过undo_retention设置的时间。在这个过程中,Oracle会涉及到比如尝试拓展Undo表空间数据文件、Undo Segment管理等内容。但是,如果“现实比较残酷”,比如说Undo使用紧张、没有额外的方法,那么这个时间段也是不能保证的。


4、模拟UNDO表空间空间较小时且在Undo_Retentiond时间范围内(900S),出现的实验结果:


--------------------------查看ORD_items表的大小-----------------------------------------
SELECT segment_name AS TABLENAME,BYTES/1024/1024 MB  FROM user_segments WHERE segment_name='ORD_ITEMS';




-------------创建表空间undotbs02(5M)----------------------------
create undo tablespace undotbs02 datafile 'D:\app\hanzhen\oradata\hz\undotbs02.dbf'size 5m autoextend off;
select file_name, AUTOEXTENSIBLE, BYTES/1024/1024 MB from dba_data_files where tablespace_name='UNDOTBS02';



-----------------------更改系统默认表空间----------------------------------------
alter system set undo_tablespace=undotbs02


----------删除数据-----------------------------
delete ORD_ITEMS;
当删除数据时,报错



当闪回数据,UNDO表空间较小时,会提示如下:



删除动作中,很多时候都是禁止的。因为Undo空间过小,不能容纳需要保存的前镜像数据;虽然设置了undo_retention的参数,但是如果系统undo表空间容量不够大,而且undo生成总量很大的时候,系统还是会将undo进行覆盖。


当undo表空间满足要求,且闪回时间超过Undo_Retentiond设置时,仍然是可以做闪回数据操作的。



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30443703/viewspace-2136970/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30443703/viewspace-2136970/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值