地牯牛的博客

欢迎光临
我们一直在努力

ORA-01200的处理方法

    因为异常导致system01.dbf这个数据文件异常,表头文件大小与oracle控制文件中记录的大小不一致,导致数据库无法打开。

    由于没有备份也没有开启数据库归档,所以,只能从文件的大小上想办法。解决的思路是:将system01.dbf文件的大小改改得和控制文件中记录的大小一致,也就是欺骗oracle,让它觉得这个两个文件大小是一致的。

    在网上搜索到的办法是:利用dd命令向system01.dbf文件的末尾追加一部分内容块,以增加文件的大小。但是在实际操作的时候却遇到了一个问题,dd是linux下的命令,而自己的oracle是安装到windows下的。这个可以如何是好,于是百度之,终于还是有解决的办法:dd for windows,这个神奇的东西可以在windows下使用dd命令。

下面开始实际操作:

首先 sqlplus 登陆之后,尝试启动数据库 ALTER DATABASE OPEN,这个时候一般会报出一个类似这样的错误:

ORA-01200: actual file size of 82256 is smaller than correct size of 83280 blocks

这就是说控制文件记录的大小是83280,而数据文件的实际大小只有82256。所以,需要在数据文件后面追加83280-82256个数据块。

下面是改变文件大小的命令:

dd if=/dev/zero of=/paic/oradata/vmdev/system01.dbf bs=8192 count=1024 seek=82257

if 表示输入

of表示输出

seek表示开始的追加的位置

count 追加的数量


刚开始使用的时候一直搞不懂为什么if后面要用/dev/zero 而不是system01.dbf这个文件,if不是表示输入文件吗,然而修改文件大小只需要目标文件就可以了,/dev/zero这个设备可以无限输出0,即用0填补文件的大小。

值得注意的是windows下面没有/dev/zero这个设备,但是dd for windows提供了这个虚拟设备,so,万事大吉,直接用和linux下一样的方式使用这条命令就可以了。文件的大小改变之后替换掉原来的system01.dbf文件,之后重新尝试开启数据库即可。

未经允许不得转载:地牯牛的博客 » ORA-01200的处理方法
分享到: 更多 (135)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

地牯牛的博客 更专业 更方便

联系我们联系我们

登录

注册