您的位置:首页 > 数据库 > Oracle

加快数据表空间恢复

2012-02-19 18:21 99 查看
 

在表空间进行恢复时,最耗时的就是往回复制备份文件的操作。为此可以把相应的表空间备份到一个本地硬盘上,在出问题的时候直接把相应表空间的位置重新指定到该备份上,然后用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;

至此,搞定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息