当前位置:文档之家› 一个控制文件相应的数据文件和重做日志文件恢复数据

一个控制文件相应的数据文件和重做日志文件恢复数据

rem 只有相关数据库文件的恢复.
恢复环境:oracle 10.2.0.1.0,windows xp,有一个控制文件,相应的数据文件和重做日志文件
我已经先创建好了一个数据库,sid=shan,下面模拟一下恢复的环境。

sqlplus /nolog
conn /as sysdba
shutdown immediate;(先关闭数据库)
下面移动一下一个数据文件和日志文件的位置
alter database mount;
select file#,name from v$datafile;
select group#,member from v$logfile;
在操作系统里把E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\REDO03.LOG 剪切到'C:\REDO03.LOG'
在操作系统里把E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\USERS01.DBF 剪切到'C:\USERS01.DBF'
alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\REDO03.LOG' to 'C:\REDO03.LOG';
alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\USERS01.DBF' to 'C:\USERS01.DBF';
alter database open;(正常打开)
shutdown immediate;(关闭数据库),这里将所有的数据文件,控制文件,
在开始菜单里>用dbca删除该数据库.
下面开始恢复
1 windows下设置相关的环境变量,为复制数据库创建所有的必要路径
set ORACLE_SID=shan
set ORACLE_BASE=E:\oracle\product\10.2.0
set ORACLE_HOME=%ORACLE_BASE%\db_1
set ORACLE_DATA=%ORACLE_BASE%\oradata\%ORACLE_SID%
set ORACLE_ADMIN=%ORACLE_BASE%\admin\%ORACLE_SID%
mkdir %ORACLE_ADMIN%
mkdir %ORACLE_ADMIN%\pfile
mkdir %ORACLE_ADMIN%\adump
mkdir %ORACLE_ADMIN%\bdump
mkdir %ORACLE_ADMIN%\cdump
mkdir %ORACLE_ADMIN%\dpdump
mkdir %ORACLE_ADMIN%\udump
mkdir %ORACLE_DATA%
2 创建口令文件
orapwd file=%ORACLE_HOME%\database\PWDshan.ora password=shan entries=4
3 为要恢复的数据库创建一个数据库服务
oradim -new -sid SHAN -intpwd shan
4 从一个相同版本的数据库中取得一个参数文件,这个参数文件在startup nomount时要用用命令create pfile from spfile;在windows下,这个参数文件在%ORACLE_HOME%\database下,文件名:INIT%ORACLE_SID%.ORA
修改这个文件名INIT%ORACLE_SID%.ORA.(例如:INITshan.ORA)
打开这个文件:修改以下几个参数
*.db_name='xx';
*.audit_file_dest='e:\oracle\product\10.2.0/admin/xx/adump'
*.background_dump_dest='e:\oracle\product\10.2.0/admin/xx/bdump'
*.core_dump_dest='e:\oracle\product\10.2.0/admin/xx/cdump'
*.user_dump_dest='e:\oracle\product\10.2.0/admin/xx/udump'
*.control_files='e:\oracle\product\10.2.0/oradata/xx/\control01.ctl','e:\oracle\product\10.2.0/oradat a/xx/\control02.ctl','e:\oracle\product\10.2.0/oradata/xx/\control03.ctl'
将其中的xx换个你要恢复的数据库的sid(你的控制文件只有一份,拷贝同样的三份,替代上面的*.control_files参数里面的control01.ctl,control02.ctl,control03.ctl)
之后把这个修改后的文件放到%ORACLE_HOME%\database下
5 这里因为原来有一个控制文件,所以没有重新创建控制文件,只是又复制了两份,并设置了和参数文件里面*.control_files一样的名字
6 把数据文件和重做日志文件和控制文件都拷贝到%ORACLE_DATA%下面。

(注意:这些数据库文件的USERS01.DBF,REDO03.LOG位置是不对的,它们应该是在C:\下)
sqlplus /nolog
conn /as sysdba
startup mount;(启动数据库)
col name for a60;
col member for a60;
select file#,name from v$datafile;(查看数据文件位置)
select group#,member from v$logfile;(查看日志文件位置)
按上面的显示把数据文件和日志文件拷贝到相应的位置。

7 打开数据库
alter database open;
select instance_name,status from v$instance; 显示instance_name为shan,状态为open;
8 ok,全部结束。

相关主题