减少oracle删除数据表的两种方法(oracle还原)
首先,使用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);