日期:2014-05-16  浏览次数:20554 次

oracle启动时报错:file size is not a multiple of logical block size的解决办法

?今天在启动oracle的时候,提示归档路径出了问题,因为之前归档是在h:\oracle\arc,不知道什么时候,我把这个文件夹删掉了。

启动的时候报错:

C:\>sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 10月 12 16:08:48 2011

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

SQL> conn / as sysdba
已连接到空闲例程。
SQL> startup
ORA-16032: parameter LOG_ARCHIVE_DEST_1 destination string cannot be translated
ORA-09291: sksachk: invalid device specified for archive destination
OSD-04018: ??????????????????????????
O/S-Error: (OS 2) ??????????????????????

?我一看,应该是由于h:\oracle\arc目录不存在造成的,但是又不想再新建这个目录,就想把归档目录移动到h:\app\arc目录下。

我找到H:\app\Administrator\product\11.1.0\db_1\database\SPFILES62.ORA,打开,将里面的一个参数做了改动:

*.log_archive_dest_1='location=h:\app\arc'

然后重新startup...

SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: ???????????????? 'H:\APP\ADMINISTRATOR\PRODUCT\11.1.0\DB_1\DATABASE\INITS62.ORA'

?

心想,哎呀,坏了,spfile应该是二进制文件,我手工改保存过之后肯定把文件给损坏了,但是又没有备份!

想到之前修改spfile的方法,就试一试:

SQL> create pfile from spfile;
create pfile from spfile
*
第 1 行出现错误:
ORA-01565: error in identifying file
'%ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA'
ORA-27046: file size is not a multiple of logical block size
OSD-04012: ?????????????? (OS 3536)

?

发现已经不能读取spfile了,spfile已经坏了...

?

这时,找到了一个解决办法:

1. 在spfile.ora所在文件夹下面建立一个inits62.ora文件(注:s62是我的实例名,如果你的实例名是orcl,那么就是新建initorcl.ora文件)

2. 将现在的spfiles62.ora里面的参数拷贝到inits62.ora中,将乱码删掉。

3. 执行下面命令:

 startup pfile='H:\app\Administrator\product\11.1.0\db_1\database\INITS62.ORA'

启动正常了。

然后执行:

SQL> create spfile from pfile;

文件已创建。

?

OK了,spfile已经修复了。

?

正确的修改spfile方法:

1. create pfile from spfile;

2. 修改pfile,即inits62.ora里面相应的参数

3. create spfile from pfile;

?

或者使用alter system set 参数=新值 scope=spfile;

?