oracle 恢复误删除数据

select uat.table_name from user_all_tables uat    可以获得所有用户表的名称

 

select object_name, created,last_ddl_time from user_objects order by last_ddl_time desc  获得所有用户对象(包括表)的创建和最后修改时间
  select object_name, created,  timestamp from user_objects order by   timestamp desc

----------created:对象的创建时间
----------last_ddl_time:跟对象相关的(不一定是改变对象的结构,也可以是其他相关,如,如果此对象是表,则----------将该表的select权限赋给其他用户也会改变这个字段的值)最后ddl操作的执行时间
----------timestamp:对象自身结构发生改变的时间,比如删除字段、添加字段等

 

 

 

 

 select  * from cx_pt_tubular_order;
 
 delete from cx_pt_tubular_order;
 
 //应该是一周
  select * from cx_pt_tubular_order as of timestamp to_Date('2016-02-18 11:00:00', 'yyyy-mm-dd hh24:mi:ss')

insert into  cx_pt_tubular_order  select * from cx_pt_tubular_order as of timestamp to_Date('2016-01-16 11:00:00', 'yyyy-mm-dd hh24:mi:ss')

 

 

select * from cx_pt_tubular_order as of timestamp sysdate;

 

------------

Flashback query(闪回查询)原理

  Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回。

Flashback query(闪回查询)前提:

SQL> show parameter undo;

NAME                                TYPE       VALUE

------------------------------------ ----------- ------------------------------

undo_management                     string     AUTO

undo_retention                        integer    900

undo_tablespace                       string     UNDOTBS1

其中undo_management = auto,设置自动undo管理(AUM),该参数默认设置为:auto;

Undo_retention = n(秒),设置决定undo最多的保存时间,其值越大,就需要越多的undo表空间的支持。修改undo_retention的命令如下:

SQL> alter system set undo_retention = 3600;

System altered

闪回实现方式

获取数据删除前的一个时间点或scn,如下:

注:推荐使用scn,由于oracle9i中,因为scn与时间点的同步需要5分钟,如果最近5分钟之内的数据需要Falshback query查询,可能会查询丢失,而scn则不存在这个问题。Oracle10g中这个问题已修正(scn与时间点的大致关系,可以通过logmnr分析归档日志获得)。

Falshback query查询的局限:

 

 闪回查询无法恢复到表结构改变之前,因为闪回查询使用的是当前的数据字典。

受到undo_retention参数的影响,对于undo_retention之前的数据,Flashback不保证能Flashback成功。

对drop,truncate等不记录回滚的操作,不能恢复。

 普通用户使用dbms_flashback包,必须通过管理员授权。命令如下:

SQL>grant execute on dbms_flashback to scott;
truncate table cx_pt_tubular_order;

-------------------


select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin; 

FLASHBACK TABLE caishi TO BEFORE DROP;

 

查看所有表结构

select t.TABLE_NAME  表名,
       t.COLUMN_ID   序号,
       t.COLUMN_NAME 字段名,
       t.DATA_TYPE   类型,
       t.            DATA_LENGTH 长度,
       t.NULLABLE    是否为空
  from user_tab_columns;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值