标签归档:dd

global_name为空导致的数据库不能open—–使用dd修复(使用dd拷贝块的方式)

GLOBAL_NAME和props$对象介绍 global_name为空导致的数据库不能open—–使用gdb修复(中断oracle启动的部分监测功能) global_name为空导致的数据库不能open—–使用DUL修复 global_name为空导致的数据库不能open—使用BBED修复(bbed恢复update的数据) 这篇为第2种解决 global_name 为NULL导致数据库不能启动的方法。 即 从其他正常的11.2的数据库上使用dd命令克隆一个相同的block来替换现有system文件中的相同文件。 根据测试,猜测大版本一致即可,比如11.2.0.3和11.2.0.4的props$都存储在file 1 block 801上。 因此,我这里使用了11.2.0.4(基于ASM)的数据库上的file 1 block 801来替换 11.2.0.3(基于文件提醒)的数据库的file 1 block 801。 首先,props$在相同版本的数据库中,缺省的位置是固定的。知道了这个,就可以从其他数据库上检查相应的block,如果相同,直接dd过来。 首先备份当前的props$: 我们知道props$表中记录了数据库字符集,global_name等等关键信息,你可以使用strings来查看其他内容。 例如下面这样,在控制文件丢失,无备份,需要重建控制文件时下面的信息就很有用,主要是需要看字符集(NLS_CHARACTERSET),我这里是AL32UTF8: 查看props$这个表的具体位置: 这里可以看到是file 1 block 801 现在到其他一个可以open的11.2的数据库中复制这个block出来。 方法多的很,比如,你可以直接将asm文件复制到文件,然后直接使用bbed的copy命令将这个block 复制到当前损坏的库上。 也可以使用我这样dd的方法: 首先,将asm文件复制到文件系统(bbed不能直接读asm,一般采用这样的方法) 查看一下这个block的信息,可以看到,这个数据库版本(NLS_RDBMS_VERSION)是11.2.0.4,GLOBAL_DB_NAME的值是 LUNAR: 现在,将刚才dd出来块patch到11.2.0.3的数据库的相同位置 dd if=/home/oracle/test/lunar_11204.props.dd … 继续阅读

发表在 Internal | 标签为 , , | 留下评论