对误删的表,只要没有使用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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)