加快数据表空间恢复

 
在表空间进行恢复时,最耗时的就是往回复制备份文件的操作。为此可以把相应的表空间备份到一个本地硬
盘上,在出问题的时候直接把相应表空间的位置重新指定到该备份上,然后用recover命令就Ok了,前提条件 是数据库需运行在archivelog模式;
查看数据库是否运行在archivelog模式语句: archive log list

以下是一个在本地磁盘上恢复表空间的例子(在sqlplus中用sys用户操作):
首先查看实例中所有的数据文件及所在的位置 :

select  file_id ,file_name, tablespace_name  fromdba_data_files;
对相应表空间进行联机热备:

alter tablespace mdm begin backup;(如果数据库运行在noarchivelog模式就会出现ORA-01123错误)
用操作系统命令备份此表空间文件:

host  copy e:\oracle\product\10.2.0\oradata\orcl\mdm.dbf d:\oracle\test_backup\;
结束热备:alter  tablespace mdm end backup;
这时立即关闭数据库:shutdown immediate;
然后在操作系统中删除mdm表中间中的数据文件e:\oracle\product\10.2.0\oradata\orcl\mdm.dbf 
接着启动数据库:startup;
这时在提示“数据库加载完毕”的情况下出现

"ora-01157”和 "ora-01110"错误(无法标示\锁定数据文件6 -请参阅dbwr跟踪文件......)
刚才数据库已经启动到mount状态了,在此状态下把错误提示中文件号为6的数据文件脱机:

alter database datafile 6 offline;
把数据库状态改为打开:alter database open;
查看数据文件号为6的是否处于脱机状态: select file#,name,status from v$datafile;
重新制定表空间的数据文件到刚才热备的文件:alter tablespace rename datafile

'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\MDM.DBF' TO 'D:\ORACLE\TEST_BACKUP\MDM.DBF';

(注意,这里引号里的字符要大写)
然后对此文件进行恢复操作: recover datafile 6;
提示“完成介质恢复”。
最后把文件号为6的数据文件修改为联机:alter database datafile 6 online;

查看联机后的情况:select file#,name,status from v$datafile;

至此,搞定。

你可能感兴趣的:(oracle,数据库,File,database,磁盘,archive)