挽救丢失的pfile

问题是这样出现的:按照平时的要求,spfile应该写入到一个裸设备中,由于裸设备所在的路径没有控制好权限,而create spfile的时候,弄错了大小写:裸设备为spfile_128m_01,而误操作成了create spfile=’spfile_128M_01′ from pfile。将原来的pfile的内容删除,改成指向的spfile_128m_01。于是,在文件系统中就有了一个spfile:spfile_128M_01,且同时还有一个裸设备spfile_128m_01。

因此,系统正在使用的是spfile:spfile_128M_01,但是存在一个裸设备的spfile:spfile_128m_01,内容为空 。

迁移的时候,将裸设备的lv全部迁移到了b机,但是文件系统文件’spfile_128M_01′ 没有迁移,因此,在启动的时候,根据pfile的指向去找spfile:spfile_128m_01,却发现内容为空。

此时源机器数据库已经shutdown,pfile的内容也早已更改成指向spfile,从哪里去找数据库shutdown前的启动参数呢?别急,虽然spfile是个二进制文件,但是我们还是可以看到里面的启动参数的内容的,且里面的内容就是shutdown之前的数据库参数配置:

我们看到,除了开头的一点乱码外,后面的内容还是一样的,因此,我们可以手工的把spfile的内存去掉前面的乱码部分,手工的copy出来,再放到一个pfile中,用此pfile启动数据库,将spfile建到正确的裸设备上,在改掉pfile的内容,使其指向裸设备。

其实还有一个做法的,需要主机方面的知识了,将文件系统的spfile用dd的方式复制到裸设备的spfile,将pfile的内容指向裸设备的spfile即可。

其实,说了那么多,就一句话而已:丢了pfile,spfile中还是能看到数据库的参数配置的。-_-!

相关文章

一条评论

回复 justin 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据