如何恢复drop掉的表啊?????????????????????????? 我把oracle里面表给误drop掉了,而且数据库从来没备份过,但是我的数据库是归档模式,请问有什么办法恢复吗,已经隔了一天了,救命啊?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 很重要吗 想恢复看运气很难吧 table 再的那个表空间先 offline 了 copy 其中的数据文件出来了 再把表空间online了再说吧还有问一下 有重table 创建到drop 的日志文件没有 有就保护好如果不重要就算了实在没办法可以和我联系 TSPITR : 自己看看Oracle文档 4.4.1 OS备份下的基于时间的恢复 不完全恢复可以分为基于时间的恢复,基于改变的恢复与基于撤消的恢复,这里已基于时间的恢复为例子来说明不完全恢复过程。 基于时间的恢复可以不完全恢复到现在时间之前的某一个时间,对于某些误操作,如删除了一个数据表,可以在备用恢复环境上恢复到表的删除时间之前,然后把该表导出到正式环境,避免一个人为的错误。1、连接数据库,创建测试表并插入记录SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003(c) Copyright 1999 Oracle Corporation. All rights reserved.SQL> connect internal/password as sysdba;Connected.SQL> create table test(a int);Table createdSQL> insert into test values(1);1 row insertedSQL> commit;Commit complete2、备份数据库,这里最好备份所有的数据文件,包括临时数据文件SQL> @hotbak.sql 或在DOS下 svrmgrl @hotbak.sql或冷备份也可以3、删除测试表,假定删除前的时间为T1,在删除之前,便于测试,继续插入数据并应用到归档。 SQL> insert into test values(2); 1 row inserted SQL> commit; Commit complete SQL> select * from test; A --------------------------------------- 1 2 SQL> alter system switch logfile; Statement processed. SQL> alter system switch logfile; Statement processed. SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; TO_CHAR(SYSDATE,'YY ------------------- 2003-05-21 14:43:01 SQL> drop table test; Table dropped.4、准备恢复到时间点T1,找回删除的表,先关闭数据库 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down.5、拷贝刚才备份的所有数据文件回来C:\>copy D:\DATABAK\*.DBF D:\ORACLE\ORADATA\TEST6、启动到mount下SQL> startup mount;ORACLE instance started.Total System Global Area 102020364 bytesFixed Size 70924 bytesVariable Size 85487616 bytesDatabase Buffers 16384000 bytesRedo Buffers 77824 bytesDatabase mounted.7、开始不完全恢复数据库到T1时间SQL> recover database until time '2003-05-21:14:43:01';ORA-00279: change 30944 generated at 05/21/2003 14:40:06 needed for thread 1ORA-00289: suggestion : D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00191.ARCORA-00280: change 30944 for thread 1 is in sequence #191Specify log: {<RET>=suggested | filename | AUTO | CANCEL}autoLog applied.Media recovery complete.8、打开数据库,检查数据SQL> alter database open resetlogs;Database altered. SQL> select * from test; A --------------------------------------- 1 2说明: 1、不完全恢复最好备份所有的数据,冷备份亦可,因为恢复过程是从备份点往后恢复的,如果因为其中一个数据文件的时间戳(SCN)大于要恢复的时间点,那么恢复都是不可能成功的。 2、不完全恢复有三种方式,过程都一样,仅仅是recover命令有所不一样,这里用基于时间的恢复作为示例。 3、不完全恢复之后,都必须用resetlogs的方式打开数据库,建议马上再做一次全备份,因为resetlogs之后再用以前的备份恢复是很难了。 4、以上是在删除之前获得时间,但是实际应用中,很难知道删除之前的实际时间,但可以采用大致时间即可,或可以采用分析日志文件(logmnr),取得精确的需要恢复的时间。 5、一般都是在测试机后备用机器上采用这种不完全恢复,恢复之后导出/导入被误删的表回生产系统 基本上不能了,Oracle的人应该有办法 我想学习下sql的优化,求指导 [求助]分组查询同时返回组内第1行的某个字段 游标嵌套问题 記錄集 oracle客户端安装. !!!!!!!!!!创建数据库是出错!!!!!!!! 对sysdate进行加1秒钟,如何写sql! 如何从一个dmp文件中提取一个表并以dbf文件存储? SELECT列显示的问题!请高手帮忙 有关OMS的问题 ORACEL 强人请进!!!!!!!!! 偌大一个csdn,竟然没人知道如何解决这个问题??!!
吧 table 再的那个表空间先 offline 了 copy 其中的数据文件出来了 再把表空间online了再说吧
还有问一下 有重table 创建到drop 的日志文件没有 有就保护好
如果不重要就算了
实在没办法可以和我联系
4.4.1 OS备份下的基于时间的恢复
不完全恢复可以分为基于时间的恢复,基于改变的恢复与基于撤消的恢复,这里已基于时间的恢复为例子来说明不完全恢复过程。
基于时间的恢复可以不完全恢复到现在时间之前的某一个时间,对于某些误操作,如删除了一个数据表,可以在备用恢复环境上恢复到表的删除时间之前,然后把该表导出到正式环境,避免一个人为的错误。
1、连接数据库,创建测试表并插入记录
SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003
(c) Copyright 1999 Oracle Corporation. All rights reserved.
SQL> connect internal/password as sysdba;
Connected.
SQL> create table test(a int);
Table created
SQL> insert into test values(1);
1 row inserted
SQL> commit;
Commit complete2、备份数据库,这里最好备份所有的数据文件,包括临时数据文件
SQL> @hotbak.sql 或在DOS下 svrmgrl @hotbak.sql
或冷备份也可以3、删除测试表,假定删除前的时间为T1,在删除之前,便于测试,继续插入数据并应用到归档。
SQL> insert into test values(2);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from test;
A
---------------------------------------
1
2
SQL> alter system switch logfile;
Statement processed.
SQL> alter system switch logfile;
Statement processed.
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2003-05-21 14:43:01
SQL> drop table test;
Table dropped.4、准备恢复到时间点T1,找回删除的表,先关闭数据库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.5、拷贝刚才备份的所有数据文件回来
C:\>copy D:\DATABAK\*.DBF D:\ORACLE\ORADATA\TEST
6、启动到mount下
SQL> startup mount;
ORACLE instance started.
Total System Global Area 102020364 bytes
Fixed Size 70924 bytes
Variable Size 85487616 bytes
Database Buffers 16384000 bytes
Redo Buffers 77824 bytes
Database mounted.7、开始不完全恢复数据库到T1时间
SQL> recover database until time '2003-05-21:14:43:01';
ORA-00279: change 30944 generated at 05/21/2003 14:40:06 needed for thread 1
ORA-00289: suggestion : D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00191.ARC
ORA-00280: change 30944 for thread 1 is in sequence #191Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
Log applied.
Media recovery complete.
8、打开数据库,检查数据
SQL> alter database open resetlogs;Database altered.
SQL> select * from test;
A
---------------------------------------
1
2说明:
1、不完全恢复最好备份所有的数据,冷备份亦可,因为恢复过程是从备份点往后恢复的,如果因为其中一个数据文件的时间戳(SCN)大于要恢复的时间点,那么恢复都是不可能成功的。
2、不完全恢复有三种方式,过程都一样,仅仅是recover命令有所不一样,这里用基于时间的恢复作为示例。
3、不完全恢复之后,都必须用resetlogs的方式打开数据库,建议马上再做一次全备份,因为resetlogs之后再用以前的备份恢复是很难了。
4、以上是在删除之前获得时间,但是实际应用中,很难知道删除之前的实际时间,但可以采用大致时间即可,或可以采用分析日志文件(logmnr),取得精确的需要恢复的时间。
5、一般都是在测试机后备用机器上采用这种不完全恢复,恢复之后导出/导入被误删的表回生产系统