减少oracle删除数据表的两种方法(oracle还原)

1。如果刚刚删除,有两种方法:

首先,使用UNDO表空间;当时undo_retention检查数据库参数设置。

它如下所示:
复制代码代码如下所示:
undo_management字符串自动

undo_retention整数10800

undo_suppress_errors布尔false

undo_tablespace字符串undotbs1


undo_retention(保持力),10800的单位是秒,3小时。

修改默认的undo_retention参数设置:

复制代码代码如下所示:
改变系统设置undo_retention = 10800 =既范围;


方法1,oracle提供的闪回函数:
复制代码代码如下所示:
执行dbms_flashback.enable_at_time(to_date('2007-07-23 10:21:00 ','yyyy-mm-dd hh24:MI:SS));

进行设置

声明r_temp人力资源。job_history %ROWTYPE;

光标c_temp是SELECT * FROM hr.job_history;

开始

打开c_temp;

dbms_flashback.disable;



取c_temp为r_temp;

退出时未c_temp %;

插入hr.job_history(employee_id,job_id,start_date,end_date)值(r_temp.employee_id,r_temp.job_id,r_temp.start_date,r_temp。start_date)。

承诺;

结束循环;

近c_temp;

结束;


方法2、插入hr.job_history

复制代码代码如下所示:
SELECT * FROM hr.job_history作为时间戳to_timestamp('2007-07-23 10:20:00 ','yyyy-mm-dd hh24:MI:SS);


该方法简单,容易掌握,同时功能及以上为你误操作的时间,最好是从误近,因为Oracle有一定时间限制的undo_retention参数值确定留在数据回滚的时间少了。

两。如果已经删除了一段时间,但是您有相对较新的数据库备份,可以通过备份恢复它。创建一个新的库,恢复备份,导出表数据,然后将其导入当前库中。

三,如果删除一段时间,并且没有备份,但是当数据被写入表时,它将同时写入其他相关表,然后通过编写SQL语句,从其他表中提取数据,插入到已删除的表中。

四。还原到备份表
复制代码代码如下所示:
创建表tablename_bak
作为
SELECT * FROM tablename为时间戳to_timestamp('20081126 103435,'yyyymmdd hh24miss);