冷备份你的数据库。因为下面的操作会对你的数据库照成 不可恢复的操作。 你在服务器端,用SVRMGRL命令 SVRMGRL> connect internal; SVRMGRL> SHUTDOWN IMMEDIATE; SVRMGRL> STARTUP MOUNT; SVRMGRL> recover database until cancel; SVRMGRL> ALTER DATABASE OPEN resetlogs;
数据库恢复全部或部分恢复数据文件,数据库处于restrict mount状态A 完全恢复1 操作系统还原所有或被损坏的数据文件2 以restrict方式启动实例并mount数据库SVRMGR> startup restrict mount 3 如果需要将数据库文件改放至新的位置,用下面的命令重新指定文件位置SVRMGR> ALTER DATABASE RENAME FILE 'oldfilename' to 'newfilename';4 将欲恢复的数据文件联机SVRMGR> ALTER DATABASE DATAFILE 'c:\ddd\sdsd' online ;5 恢复数据库SVRMGR> RECOVER DATABASE ;6 打开数据库 [需要吗?你该开工了!]SVRMGR> ALTER DATABASE OPEN ;B 不完全恢复不同之处在于:5 SVRMGR> RECOVER DATABASE UNTIL TIME '2000-09-01 03:59:59' ;6SVRMGR> ALTER DATABASE OPEN RESETLOG;7 做一次联机或脱机的备份
不可恢复的操作。
你在服务器端,用SVRMGRL命令
SVRMGRL> connect internal;
SVRMGRL> SHUTDOWN IMMEDIATE;
SVRMGRL> STARTUP MOUNT;
SVRMGRL> recover database until cancel;
SVRMGRL> ALTER DATABASE OPEN resetlogs;
如何使用归档日志进行完全恢复?
http://www.oradb.net/err/error_008.htm
SVRMGRL> SHUTDOWN IMMEDIATE;
SVRMGRL> STARTUP MOUNT;
SVRMGRL> recover database until cancel;
SVRMGRL> ALTER DATABASE OPEN resetlogs;
做任何恢复之前,先备份目前的系统,以防恢复过程中,系统遭到更大的损坏首先取得最后一次备份(脱机冷备份),并确保没有损坏,
然后判断系统是否运行在归档模式,如果是非归档模式,则只能用最后一次全备份来恢复,
删除所有的数据文件、控制文件、联机日志文件,
将备份的数据文件、控制文件、联机日志文件全部拷回原目录。
重新启动数据库====================
如果是归档模式,再判断是否可以shutdown
如果当前系统不可shutdown,则进行tablespace、datafile恢复
(前提是system表空间和包含活动回滚段的表空间不可损坏)如果当前系统可以shutdown,则进行recover database恢复====================
如果所有文件均有效、无损坏,则可进行全数据库恢复,过程如下:
connect internal
shutdown
将数据文件、已备份的归档日志拷贝回原目录(不可拷贝控制文件)
startup mount
set autorecovery on
recover database;
alter database open;====================
如果某个归档日志文件损坏,则只能恢复到那个损坏的日志文件之前,
即不完全恢复
connect internal
shutdown
将数据文件、已备份的归档日志拷贝回原目录
startup mount
set autorecovery off
recover database until cancel;
alter database open resetlogs;
--将控制文件与数据文件同步,并将数据库启动至Open模式
在以resetlogs选项启动数据库后必须进行数据库全备份============================
用exp工具导出的数据库则用imp工具导入来恢复============================
如果只有归档日志,而没有数据文件的备份,
只要归档日志保存完整,则可通过重建数据文件来恢复
alter database create datafile '文件名';
recover datafile '文件名';