欢迎您访问我爱IT技术网,今天小编为你分享的电脑教程是通过网络精心收集筛选的最优节选:“【oracle备份drop】Oracle无备份恢复DROP TABLE的数据-电脑软件--电脑-游戏-数码”,请注意:文中所谈及的内容不代表本站的真正观点,也请不要相信各种联系方式。下面是关于网络上【oracle备份drop】Oracle无备份恢复DROP TABLE的数据-电脑软件--电脑-游戏-数码的整理详细信息
操作前的准备
在没有任何备份的情况下DROP了系统中一张核心应用表,此时第一时间采用PRM可以恢复该DROP掉数据表的绝大部分数据。10g以后提供了 recyclebin回收站特性,可以首先通过查询DBA_RECYCLEBINS视图来确定被DROP掉的表是否在回收站中,如果在则优先通过回收站flashback to before drop,如果回收站中也没有了,则第一时间使用PRM恢复。
恢复简要流程如下:
1. 首先将被DROP掉的数据表所在的表空间OFFLINE
2. 通过查询数据字典或者LOGMINER找到被DROP掉数据表的DATA_OBJECT_ID,如果此步骤中得不到这个DATA_OBJECT_ID,则需要在NON-DICT非字典模式下
3. 启动PRM DUL,进入NON-DICT非字典模式,并加入被DROP掉数据表所在的表空间的所有数据文件,之后SCAN DATABASE+SCAN TABLE from Extent MAP
4. 通过DATA_OBJECT_ID定位到展开对象树形图中对应的数据表,采用DataBridge模式插回到源数据库中
SQL> select count(*) from "MACLEAN"."TORDERDETAIL_HIS";
COUNT(*)
----------
984359
SQL>
SQL> create table maclean.TORDERDETAIL_HIS1 as select * from maclean.TORDERDETAIL_HIS;
Table created.
SQL> drop table maclean.TORDERDETAIL_HIS;
Table dropped.
可以通过logminer或者《恢复场景9》中提供的方法得到大致的DATA_OBJECT_ID,使用LOGMINER则大致的脚本如下:
EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME=> '/oracle/logs/log1.f', OPTIONS=> DBMS_LOGMNR.NEW);
EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME=> '/oracle/logs/log2.f', OPTIONS => DBMS_LOGMNR.ADDFILE);
Execute DBMS_LOGMNR.START_LOGMNR(DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG+DBMS_LOGMNR.COMMITTED_DATA_ONLY);
SELECT * FROM V$LOGMNR_CONTENTS ;
EXECUTE DBMS_LOGMNR._LOGMNR;
即便这里得不到DATA_OBJECT_ID,在数据表不多的情况下还是可以通过人工识别数据来定位我们需要恢复的数据表。
首先将被DROP掉的数据表所在的表空间OFFLINE
SQL> select tablespace_name from dba_segments where segment_name='TPAYMENT';
TABLESPACE_NAME
------------------------------
USERS
SQL> select file_name from dba_data_files where tablespace_name='USERS';
FILE_NAME
----------------------------------------------------------------
+DATA1/parnassus/datafile/users.263.843694795
SQL> alter tablespace users offline;
Tablespace altered.
启动PRM到NON-DICT模式,并加入对应的数据文件选择SCAN DATABASE+SCAN TABLE From Extents:


加入相关ASM Diskgroup所有相关的ASM Disks后点击ASM analyze

由于是在非字典模式下所有需要输入必要的字符集信息:

选择被DROP掉的表所在的数据文件即可,多余的数据文件可不选择,并点击SCAN:


点中生成的数据库名,并右键选择scan tables from extents:


通过人工识别发现DATA_OBJECT_ID=82641的数据对应于被DROP掉的TORDERDETAIL_HIS表,通过DataBridge技术将其传输回源库别的表空间中。



用户类似问题:
问题1:没有备份 oracle数据恢复要怎么做?
你可以试试PRM for Oracle。ParnassusData Recovery Manager(以下简称PRM)是企业级ORACLE数据灾难恢复软件,可直接从Ora... >>详细
问题2:Oracle数据库,误delete表中数据怎么恢复,没有做备...
如果是10g的话建议采用flashback query来找出删除前的数据,具体用法如: select * from TAB as of timestamp systimestamp-XXX; 如何使用flashback query:http://www.oracledatabase12g.com/archives/oracle-9i-recovering-lost-data-through-fl... >>详细
问题3:oracle 如何恢复误删的表记录数据
--开启行移动功能 alter table 表名 enable row movement; --恢复表数据 flashback table 表名 to timestamp to_timestamp('2014-05-19 09:40:00','yyyy-mm-dd hh24:mi:ss'); 上述时间为删除数据的时间 备注:恢复后请关闭行移动功能 >>详细
问题4:oracle数据库问题,如果数据库系统不小心丢失了没...
那数据是肯定丢失了的。你可以选择将丢失的数据文件offline掉,再试图开启数据库。 >>详细
问题5:oracle 中数据文件丢失如何恢复/
其实考官问你这个问题有2个目的,1,就是对数据库的了解和操作的熟练程度,也就是你的能力。2,就是看你有没有实际管理数据库的经验,管理方法。 所以 首先你要问明数据库是否为归档模式,如果不是,你要说出作为dba或管理员如果数据库既不归档... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
