oracle数据库误 *** 作把表删除了,怎么找回?

oracle数据库误 *** 作把表删除了,怎么找回?,第1张

一:表的恢复

对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的。一般步骤有:

1、从flash back里查询被删除的表

select * from recyclebin

2.执行表的恢复

flashback table tb to before drop,这里的tb代表你要恢复的表的名称。

二:表数据恢复

对误删的表记录,只要没有truncate语句,就可以根据事务的提交时间进行选择恢复,一般步骤有:

1、先从flashback_transaction_query视图里查询,视图提供了供查询用的表名称、事务提交时间、UNDO_SQL等字段。

如:select * from flashback_transaction_query where

table_name='TEST'

2、执行表记录恢复

一般先根据时间进行查询,查询语句模式为select * from tb as of timestamp

to_timestamp(time,'yyyy-mm-dd hh24:mi:ss')tb指表名称,time指某个时间点

如select * from scott.test as of timestamp to_timestamp('2009-12-11

20:53:57','yyyy-mm-dd hh24:mi:ss')

若有数据,恢复极为简单了,语句为flashback table tb to timestamp

to_timestamp(time,'yyyy-mm-dd hh24:mi:ss')

如flashback table scott.test to timestamp to_timestamp('2009-12-11

20:47:30','yyyy-mm-dd hh24:mi:ss')

注意:alter table testvarchar enable row movement

这个命令的作用是,允许Oracle 修改分配给行的rowid。在Oracle

中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid。闪回表处理会对EMP

完成DELETE,并且重新插入行,这样就会为这些行分配一个新的rowid。要支持闪回就必须允许Oracle 执行这个 *** 作

有两种:

1.数据被truncate后,数据还在

数据文件

里面,只要把数据文件的那部分BLOCK

DUMP出来就可以了,然后根据DUMP出来的文件,形成SQLLOD

形式,然后可以导入数据库

2.分析数据文件,找到那部分

数据块

,然后把记录抓出来

#登录数据库

sqlplus /nolog

conn scott/tiger --重建emp表

DROP TABLE EMP    

CREATE TABLE EMP    

(EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,    

ENAME VARCHAR2(10),    

JOB VARCHAR2(9),    

MGR NUMBER(4),    

HIREDATE DATE,    

SAL NUMBER(7,2),    

COMM NUMBER(7,2),    

DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT)    

--插入原来的14条数据

INSERT INTO EMP VALUES(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20)    

INSERT INTO EMP VALUES(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30)    

INSERT INTO EMP VALUES(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30)    

INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20)    

INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30)    

INSERT INTO EMP VALUES(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30)    

INSERT INTO EMP VALUES(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10)    

INSERT INTO EMP VALUES(7788,'SCOTT','ANALYST',7566,to_date('13-JUL-1987')-85,3000,NULL,20)    

INSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10)    

INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30)    

INSERT INTO EMP VALUES(7876,'ADAMS','CLERK',7788,to_date('13-JUL-87')-51,1100,NULL,20)    

INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30)    

INSERT INTO EMP VALUES(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20)    

INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6827993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存