很不幸的,win2003server疏于管理,中毒了,清理了病毒以后。oracle也瘫痪了。上次备份还在一周前,这一周的数据咋办?
实施起来发现被删掉的文件不止几个exe这么简单,dll文件还有oracle服务也被删掉了,恢复起来还挺麻烦的。
然后就选择第二条路。重装oracle。首先记得要把原有的oracle主文件夹备份了。
第1次尝试:
选择不创建数据库,仅安装软件,选择原文件夹,然后报错,说安装位置冲突
[INS-32025]所选安装与指定Oracle主文件夹中已安装的软件冲突解决的方法:删除C:\Program Files\Oracle文件夹,安装继续
然后又提示原文件夹有内容,选择继续,安装完毕。
可是安装完毕后,啥都没变。删除的文件没有回来。
第2次尝试
把原product文件夹删掉,再装。这次删除的exe和dll文件回来了,可是oracle服务没有恢复。执行数据库配置助手。发现它也没有识别并载入到原数据库文件。
第3次尝试
先卸载,提示要使用deinstall.exe,照做,一路回车,卸载完成。然后彻底删除原oracle,包含注冊表、主文件夹、和其他文件。具体參见网络文章。
再次安装,这次选择了创建数据库,实例名还是保持原来的一样。
安装过程中出现了一些问题,比方无权改动键,监听创建失败,数据库创建失败等,心都凉了,也仅仅能一路忽略继续。
装完后发现服务回来了,手工启动TNSListener监听服务。启动OracleService实例服务。所幸没有影响。正常启动,可以正常登录连接熟悉的scott。哦也。
然后就是恢复数据了,停掉OracleService服务。把备份的原库主文件夹下的oradata文件夹所有覆盖过去。
连接提示:ORA-12528: TNS: 监听程序: 全部适用例程都无法建立新连接
别慌。打开主文件夹\product\11.2.0\dbhome_1\NETWORK\ADMIN下的listener.ora文件,在SID_LIST_LISTENER配置改动成:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\product\10.1.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = 数据库实例名)
(ORACLE_HOME = c:\oracle\product\10.1.0\db_1)
(SID_NAME = 数据库实例名)
)
)
蓝色是加入的,保存后重新启动TNSListener。
这次似乎成功了,sysdba能够连接上了,但是连接scott时又报错了:ora-01033:oracle initializationg or shutdown in progress
用cmd方式。运行sqlpuls /nolog,打开sqlplus,
SQL>connect sys/password@orcl as sysdba 用sysdba连接数据库
SQL>shutdown immediate 停止服务
出现一个ORA-01507的报错,只是还是显演示样例程已关闭,那就别管这个错了。
SQL>startup 启动服务
发现报错:
ORACLE 例程已经启动。
Total System Global Area 778387456 bytes
Fixed Size 1374808 bytes
Variable Size 234882472 bytes
Database Buffers 536870912 bytes
Redo Buffers 5259264 bytes
ORA-00211: ??
?
?
?
?
??
?
??
????
ORA-00202: ????: ''D:\ORACLE11G\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL''
那就是这个文件有问题罗
SQL>shutdown immediate 再次停止服务
把备份的原库主文件夹下的FLASH_RECOVERY_AREA文件夹所有覆盖过去。
SQL>startup 再次启动服务
连接scott。成功。
连接生产用户。成功。。!
差点哭了……
假设上天给我再来一次的机会,我一定搞成每天自己主动备份。