oracle怎么还原表 oracle还原命令

oracle数据库删除错了表怎么恢复一、如果是刚刚删除,那么有两方法:
首先用show parameter undo;命令查看当时的数据库参数undo_retention设置 。
显示如下:
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS1
undo_retention(保持力),10800单位是秒 。即3个小时 。
修改默认的undo_retention参数设置:
 ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;
方法1,通过oracle提供的回闪功能:
exec dbms_flashback.enable_at_time(to_date('2007-07-23 10:21:00','yyyy-mm-dd hh24:mi:ss'));
set serveroutput on
【oracle怎么还原表 oracle还原命令】DECLARE r_temp hr.job_history%ROWTYPE;
CURSOR c_temp IS SELECT * FROM hr.job_history;
BEGIN
OPEN c_temp;
dbms_flashback.disable;
LOOP
FETCH c_temp INTO r_temp;
EXIT WHEN c_temp%NOTFOUND;
insert into hr.job_history(EMPLOYEE_ID,JOB_ID,START_DATE,END_DATE) values (r_temp.EMPLOYEE_ID,r_temp.JOB_ID,r_temp.START_DATE,r_temp.END_DATE);
commit;
END LOOP;
CLOSE c_temp;
END;
方法2,insert into hr.job_history
select * from hr.job_history as of timestamp to_timestamp('2007-07-23 10:20:00', 'yyyy-mm-dd hh24:mi:ss');
这种方法简单,容易掌握,功能和上面的一样时间为你误操作之前的时间,最好是离误操作比较近的 , 因为oracle保存在回滚保持段里的数据时间有一定的时间限制由undo_retention 这个参数值决定 。
二、如果是删除一段时间了 , 但你有比较新的数据库备份,就通过备份来恢复 。新建一个库 , 把备份还原上去,导出表数据,再导入到现在用的库中去 。
三、如果删除一段时间了,并且无备份 , 但是数据在写入表的时候同时会写入其它一些关联表的话,那么就尝试通过写SQL语句从其它表取数据出来insert到被删除的表中 。
四、恢复到备份表中
create table tableName_bak
as
select * from tableName as of TIMESTAMP to_timestamp('20081126 103435','yyyymmdd hh24miss');
oracle数据库误操作把表删除了,怎么找回?一:表的恢复\x0d\x0a\x0d\x0a对误删的表,只要没有使用PURGE永久删除选项 , 那么从flash back区恢复回来希望是挺大的 。一般步骤有:\x0d\x0a\x0d\x0a1、从flash back里查询被删除的表\x0d\x0a\x0d\x0aselect * from recyclebin\x0d\x0a\x0d\x0a2.执行表的恢复\x0d\x0a\x0d\x0aflashback tabletbto before drop,这里的tb代表你要恢复的表的名称 。\x0d\x0a\x0d\x0a二:表数据恢复\x0d\x0a\x0d\x0a对误删的表记录,只要没有truncate语句,就可以根据事务的提交时间进行选择恢复,一般步骤有:\x0d\x0a\x0d\x0a1、先从flashback_transaction_query视图里查询,视图提供了供查询用的表名称、事务提交时间、UNDO_SQL等字段 。\x0d\x0a\x0d\x0a如:select * from flashback_transaction_query where \x0d\x0atable_name='TEST';\x0d\x0a\x0d\x0a2、执行表记录恢复\x0d\x0a\x0d\x0a一般先根据时间进行查询 , 查询语句模式为select * from tb as of timestamp \x0d\x0ato_timestamp(time,'yyyy-mm-dd hh24:mi:ss'); tb指表名称,time指某个时间点\x0d\x0a\x0d\x0a如select * from scott.test as of timestamp to_timestamp('2009-12-11 \x0d\x0a20:53:57','yyyy-mm-dd hh24:mi:ss');\x0d\x0a\x0d\x0a若有数据,恢复极为简单了,语句为flashback table tb to timestamp \x0d\x0ato_timestamp(time,'yyyy-mm-dd hh24:mi:ss');\x0d\x0a\x0d\x0a如flashback table scott.test to timestamp to_timestamp('2009-12-11 \x0d\x0a20:47:30','yyyy-mm-dd hh24:mi:ss');\x0d\x0a\x0d\x0a注意:alter table testvarchar enable row movement;\x0d\x0a\x0d\x0a这个命令的作用是,允许Oracle 修改分配给行的rowid 。在Oracle \x0d\x0a中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid 。闪回表处理会对EMP \x0d\x0a完成DELETE,并且重新插入行,这样就会为这些行分配一个新的rowid 。要支持闪回就必须允许Oracle 执行这个操作
我的oracle数据库里面覆盖了一张表,怎么还原用oracle的
flashback
,可以还原查询某个时间点这个表中的数据,只要时间不要过去太久就可以,比如
SELECT
*
FROM
tt_tab
AS
of
TIMESTAMP(SYSDATE-1/24)
关于oracle怎么还原表和oracle还原命令的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读