昨天客户叫我过去帮个忙,说是数据库坏掉了,看能不能帮助恢复,看他一脸期盼的样子我给他过去看了一下(客户以为我是高手,其实我很菜的啦),后来听说,由于他偷懒,两个月以来都没有备份数据(我晕,这家伙难道不怕下岗?)。
上去看了一下情况,发现情况还是比较好的,由于客户的Rad5坏了一块,客户在build的过程中又坏了一块,最后没有办法只好找数据恢复的公司来进行数据恢复,恢复过来后发现操作系统不能用了,但是数据库文件还存在。
我用了以下办法恢复数据:
1、找一台没有装过Oracle的机器,按照客户原有的安装配置安装Oracle。(包括表空间创建和用户创建)
2、停止所有Oracle服务(2000/xp),改自动为手动(这个可作可不做,只要服务停了就行)。
3、用恢复过来的数据库文件覆盖刚刚安装的数据库文件。
4、用恢复过来的admin目录下的文件覆盖刚刚安装好的admin目录下文件。
重新启动数据库,发现服务可以起来,但是数据库没有起来,用企业管理器察看,说是数据库没有起来。
5、接下来进入命令行 输入命令 sqlplus "/nolog as sysdba"
6、输入命令 shutdown immediate;
卸载数据库成功
7、输入命令 startup mount
最后命令行界面提示了一些问号,另外带了一个文件名称,看样子是这个文件没有覆盖造成的,一看我就晕了,这好像是pwd文件嘛!!!
8、停止服务
用恢复的pwd和init文件覆盖新装的文件pwd和init文件(oracle安装目录/ora90/database)
9、重新启动服务,发现问题解决了
结论:在弄得过程中走了很多弯路,最后才弄成,分析原因是对Oracle的文件结构不够熟悉造成的,这个东西看来还是要多操作多练习,熟能生巧嘛,另外,理论学习还是必不可少的。
另外:如果磁盘坏掉的时机正好是Oracle在进行数据写入的情况的话,在这种情况下可能会造成数据文件的物理损坏,这种损坏好像是无法恢复的,只能通过重做日志来恢复。