当前位置:首页 » 数据仓库 » orcale数据库表误删除
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

orcale数据库表误删除

发布时间: 2023-02-16 05:26:35

‘壹’ Oracle数据被删除后,如何恢复

删除表后,可以采用如下操作:
在user_recyclebin中找到最近操作过的表名称,然后用闪回(只能用于10G及以上版本)。
FLASHBACKTABLETABLE_NAMETOBEFOREDROP;
如果是删了或修改里面的数据,可以先建立一个快表将删除修改之前状态的数据找回到这个表中:
CREATETABLEQUICK_TABLEAS
SELECT*FROMTABLE_NAMEASOFTIMESTAMPSYSDATE-1/24(一小时前的),减去的时间可以自己定如:select*fromTABLE_NAMEASOFTIMESTAMP(SYSTIMESTAMP-INTERVAL'1'MINUTE)

‘贰’ oracle数据库误操作把表删除了,怎么找回

一:表的恢复x0dx0ax0dx0a 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的。一般步骤有:x0dx0ax0dx0a1、从flash back里查询被删除的表x0dx0ax0dx0a select * from recyclebinx0dx0ax0dx0a2.执行表的恢复x0dx0ax0dx0a flashback table tb to before drop,这里的tb代表你要恢复的表的名称。x0dx0ax0dx0a二:表数据恢复x0dx0ax0dx0a 对误删的表记录,只要没有truncate语句,就可以根据事务的提交时间进行选择恢复,一般步骤有:x0dx0ax0dx0a1、先从flashback_transaction_query视图里查询,视图提供了供查询用的表名称、事务提交时间、UNDO_sql等字段。x0dx0ax0dx0a 如:select * from flashback_transaction_query where x0dx0atable_name='TEST'x0dx0ax0dx0a 2、执行表记录恢复x0dx0ax0dx0a 一般先根据时间进行查询,查询语句模式为select * from tb as of timestamp x0dx0ato_timestamp(time,'yyyy-mm-dd hh24:mi:ss'); tb指表名称,time指某个时间点x0dx0ax0dx0a 如select * from scott.test as of timestamp to_timestamp(񟭉-12-11 x0dx0a20:53:57','yyyy-mm-dd hh24:mi:ss');x0dx0ax0dx0a 若有数据,恢复极为简单了,语句为flashback table tb to timestamp x0dx0ato_timestamp(time,'yyyy-mm-dd hh24:mi:ss');x0dx0ax0dx0a 如flashback table scott.test to timestamp to_timestamp(񟭉-12-11 x0dx0a20:47:30','yyyy-mm-dd hh24:mi:ss');x0dx0ax0dx0a注意:alter table testvarchar enable row movement;x0dx0ax0dx0a 这个命令的作用是,允许Oracle 修改分配给行的rowid。在Oracle x0dx0a中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid。闪回表处理会对EMP x0dx0a完成DELETE,并且重新插入行,这样就会为这些行分配一个新的rowid。要支持闪回就必须允许Oracle 执行这个操作

‘叁’ oracle数据库误删除数据怎么恢复

恢复的前提是备份;
数据库有什么备份,exp还是rman
如果有exp备份:直接imp数据
如果有rman备份:可以基于时间不完全恢复,将数据库恢复到误删除之前的时刻
如果没有备份但是开闪回了,可以闪回数据库或闪回表

‘肆’ oracle数据库删除错了表怎么恢复

一、如果是刚刚删除,那么有两方法:

首先用show parameter undo;命令查看当时的数据库参数undo_retention设置。

显示如下:

undo_managementstringAUTO
undo_retentioninteger10800
undo_suppress_errorsbooleanFALSE
undo_tablespacestringUNDOTBS1

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

修改默认的undo_retention参数设置:

ALTERSYSTEMSETundo_retention=10800SCOPE=BOTH;

方法1,通过oracle提供的回闪功能:

execdbms_flashback.enable_at_time(to_date('2007-07-2310:21:00','yyyy-mm-ddhh24:mi:ss'));
setserveroutputon
DECLAREr_temphr.job_history%ROWTYPE;
CURSORc_tempISSELECT*FROMhr.job_history;
BEGIN
OPENc_temp;
dbms_flashback.disable;
LOOP
FETCHc_tempINTOr_temp;
EXITWHENc_temp%NOTFOUND;
insertintohr.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;
ENDLOOP;
CLOSEc_temp;
END;

方法2,insert into hr.job_history

select*fromhr.job_historyasoftimestampto_timestamp('2007-07-2310:20:00','yyyy-mm-ddhh24:mi:ss');

这种方法简单,容易掌握,功能和上面的一样时间为你误操作之前的时间,最好是离误操作比较近的,因为oracle保存在回滚保持段里的数据时间有一定的时间限制由undo_retention 这个参数值决定。

二、如果是删除一段时间了,但你有比较新的数据库备份,就通过备份来恢复。新建一个库,把备份还原上去,导出表数据,再导入到现在用的库中去。

三、如果删除一段时间了,并且无备份,但是数据在写入表的时候同时会写入其它一些关联表的话,那么就尝试通过写SQL语句从其它表取数据出来insert到被删除的表中。

四、恢复到备份表中

createtabletableName_bak
as
select*fromtableNameasofTIMESTAMPto_timestamp('20081126103435','yyyymmddhh24miss');

‘伍’ oracle数据库删除错了表怎么恢复

如果仅仅是
数据行被删除了,那么可以用得方法很多
例如logmnr
flashback
query
等等
如果是表被删除了,那么如果开了recylebin
可以用回收站,
也可以使用专业oracle数据恢复工具prm
for
oracle
如果自己搞不定可以找askmaclean专业oracle数据库修复团队成员帮您恢复!
askmaclean.com

‘陆’ 误删除Oracle数据库恢复,怎么办

oracle数据库恢复,主要包括
(1)系统崩溃只剩下数据文件的情况下的恢复,甚至没有system表空间而只有数据表空间的情况下的恢复.只要提供数据文件就可恢复.
(2)
undo
system
表空间损坏数据恢复
.
(3)
非归档或者归档模式下误
delete
数据的恢复、误删除表空间的恢复、
drop
truncate
表的恢复
.
(4)
数据库中有大量CLOB
BLOB对象数据恢复等情况以及各种ora-错误的修复.
(5)
DMP文件损坏导致文件不能导入数据库的数据恢复
(6)
oracle数据库中数据文件出现坏块情况下的恢复.
(7)
oracle数据库无数据文件但有日志的情况下的恢复.
(8)
UNIX、WINDOWS下ORACLE数据文件被误删除情况下的数据库恢复.
(9)
Oracle10G、Oracle11G
的ASM损坏的数据库恢复.
(10)
Oracle10G、Oracle11G
BIFGILE
TABLESPACE大文件表空间损坏数据恢复
(11)
Oracle9i、Oracle10G、Oracle11G压缩表
压缩表空间损坏数据恢复
(12)Oracle10G
Oracle11G
Expdp导出
Impdp导入DMP文件错误数据恢复
恢复成功率高达90%以上,在数据恢复领域处于国内领先的地位。具体案例见广州拓飞官方网站

‘柒’ oracle数据库的表删了怎么恢复

请使用 Oracle Database 10g 中的闪回表特性,它使得被删除表的恢复过程如同执行几条语句一样简单。让我们来看该特性是如何工作的。
删除那个表!
首先,让我们查看当前模式中的表。
SQL> select * from tab;
TNAME
TABTYPE
CLUSTERID
--------------------- - -- -- --- ------
RECYCLETEST
TABLE
现在,我们意外地删除了该表:
SQL> drop table recycletest;
Table dropped.
现在让我们来查看该表的状态。
SQL> select * from tab;
TNAME

‘捌’ Oracle数据库误删表,怎样恢复表结构和表数据

如果删除表的时候没有加purge那么可以通过回收站(recyclebin)找回(毕竟默认这个参数是on的,可以通过show parameter recyclebin查一下)。如果加了purge,那么就找不回来了。
flashback table 表名 to before drop。