在论坛经常遇到说windows下重新安装操作系统后,想使用之前ORACLE的数据文件的情况,如果操作系统不是异常DOWN机的话,使用冷回复就可以直接回复回来,当然即使是异常DOWN机,也只能用冷恢复进行恢复,只是可能是做不完全恢复或者不能恢复,视情况而定了。下面讨论以重新安装操作系后的ORACLE冷恢复的实现步骤:
首先明确恢复的前提条件:冷备份需要在oracle 正常shutdown的情况下拷贝如下文件:1.数据文件;2.控制文件;3.日志文件;4.参数文件(init数据库实例名.ora文件或者SPFILE或者PFILE文件);5 口令文件;
完全冷恢复是以上所有文件都存在,直接复制后覆盖到新ORACLE数据库相应目录下即可。但是如果丢失部分文件,则需要使用不完全冷恢复了。例如控制文件丢失,可以用TRACE后手动重新建立。口令文件通过ORAPWD重新建立等等......
特别注意一点,保护现场:即不要轻易对原来的库文件进行操作,破坏了初始环境后,恢复起来就比较麻烦了。
1、保护现场:在原安装目录改文件夹改名,比如原文件名叫oracle,改成oracle_bak。
2、安装数据库:重新安装同版本的ORACLE数据库,因为原来使用的是10.2.0.1版本的数据库,恢复的话记得一定也要使用10.2.0.1的数据库,重新装的只有软件,不要装数据库。安装路径最好安装在和原来数据库同样的%ORACLE_HOME%下,否则还要修改参数立的数据文件,控制文件路径信息等。
3、创建实例:注册服务,使用命令:ORADIM -new -sid 实例名
注意,这个SID名称最好与你以前的SID一样,否则在启动的数据需要指明pfile,并且需要重建密码文件,比较麻烦。(当然,如果你就不想用原来的SID也可以,把参数文件、密码文件的名称都改成与新SID对应的名称)。
4、复制数据库文件:冷恢复的restore,即把原来数据库文件复制到新的安装目录里。复制的主要文件有:1.数据文件;2.控制文件;3.日志文件;4.参数文件(init数据库实例名.ora文件或者SPFILE或者PFILE文件);5 口令文件等
5、启动数据库服务:用net start 检查oracle服务是否已经启动,如果oracle服务没有启动,则在cmd下运行如下命令:
net start oracleservic<ORACLESID>
6、启动数据库实例:注册成功之后,先设置环境变量ORACLE_SID,然后登陆实例,实例是没有启动的状态,尝试使用startup去启动数据库,不报错表示恢复成功,如果报错,根据报错信息进行相应处理:
设定环境变量,在cmd窗口运行:
set ORACLE_SID=<ORACLESID>
启动数据库实例:
sqlplus "/as sysdba"
startup
7、启动监听:如果监听已经存在,则配置监听,否则用netca创建监听即可
lsnrctl start
注意,这里创建监听一定要在后续步骤做,如果在启动数据库实例之前操作,那么数据库启动的时候,会报错ORA-
8、环境变量配置:上几步后基本上完成了ORACLE的冷恢复,但是使用起来有点不方便,如每次在cmd中启动数据库都需要先SET ORACLE_SID、在本机连接数据库也都需要加上@TNSNAME等。
通过修改注册表,添加ORACLE_SID的信息,解决该问题。在注册表的HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE下新建字符串值,名称为ORACLE_SID,值为<oraclesid>。
也可以将以下内容保持成一个后缀名为reg的文件(文件名随便起),然后双击,即可将信息导入到注册表中。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREORACLE]
"ORACLE_SID"="xmlgis"
注意:以上步骤都是在%ORACLE_HOME%、%ORACLE_SID%都与原库一样的情况下进行的,虽如果%ORACLE_HOME%和%ORACLE_SID%可以与原库不一样,需要修改参数路径。