oracle误删数据表还原的二种方法(oracle还原)

 更新时间:2014年01月24日 10:17:04   作者:  
这篇文章主要介绍了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

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报错:ora-28001:the password has expired解决办法

    连接oracle报错:ora-28001:the password has expired解决办法

    这篇文章主要给大家介绍了关于连接oracle报错:ora-28001:the password has expired的解决办法,当遇到ora-28001错误时,这通常表示提供的密码不符合Oracle数据库的密码策略要求,需要的朋友可以参考下
    2024-07-07
  • Oracle中的触发器trigger

    Oracle中的触发器trigger

    这篇文章介绍了Oracle中的触发器trigger,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • oracle中all、any函数用法与区别说明

    oracle中all、any函数用法与区别说明

    在Oracle中,any()表示括号内任何一个条件,只要有一个满足即可;而all()表示所有的条件都满足才可以
    2023-04-04
  • oracle数据库在客户端建立dblink语法

    oracle数据库在客户端建立dblink语法

    oracle服务器没有建立目标数据库的TNS时,在客户端(有权限的情况下)建立dblink语法如下,有需求的朋友可以参考下哈
    2013-05-05
  • oracle delete误删除表数据后如何恢复

    oracle delete误删除表数据后如何恢复

    最近在使用oracle数据时,一不小心把table中的数据delete掉并且已经提交了,下面这篇文章主要给大家介绍了关于oracle delete误删除表数据后如何恢复的相关资料,需要的朋友可以参考下
    2022-06-06
  • oracle区管理和段空间管理详细介绍

    oracle区管理和段空间管理详细介绍

    本文将详细介绍oracle区管理和段空间管理,需要的朋友可以参考下
    2012-11-11
  • 如何将Oracle的一个大数据表快速迁移到 Sqlserver2008数据库(图文教程)

    如何将Oracle的一个大数据表快速迁移到 Sqlserver2008数据库(图文教程)

    这篇文章主要介绍了如何将Oracle的一个大数据表快速迁移到 Sqlserver2008数据库(图文教程),本文图文并茂给大家介绍的非常详细,需要的的朋友参考下吧
    2017-05-05
  • Oracle 中检查临时表空间的方法

    Oracle 中检查临时表空间的方法

    这篇文章主要介绍了Oracle 中检查临时表空间的方法,这是一个非常重要的表空间,如果管理不当,可能会出现问题,让我们看看临时表空间管理的各种查询,本文给大家详细讲解,需要的朋友可以参考下
    2022-10-10
  • 利用PL/SQL从Oracle数据库导出和导入数据

    利用PL/SQL从Oracle数据库导出和导入数据

    这篇文章主要为大家详细介绍了利用PL/SQL从Oracle数据库导出数据和导入数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • VMware中linux环境下oracle安装图文教程(一)

    VMware中linux环境下oracle安装图文教程(一)

    刚刚接触ORACLE的人来说,从那里学,如何学,有那些工具可以使用,应该执行什么操作,一定回感到无助。所以在学习使用ORACLE之前,首先来安装一下ORACLE 10g,在来掌握其基本工具。俗话说的好:工欲善其事,必先利其器。作为一个新手,我们还是先在VMware虚拟机里安装吧。
    2014-08-08

最新评论