oracle数据库,启动报错,找不到initorcl.ora文件

oracle数据库,启动报错,找不到initorcl.ora文件

大年初一,客户发信息说机房断电,所有系统需要重启,在启动oracle数据库的时候,突然就报错,

ORA-01078: failure in processing system parameters 
LRM-00109: could not open parameter file '/opt/oracle/product/dbs/initorcl.ora'

说找不到initorcl.ora文件,回忆了一下,这个数据库的安装,是一路默认安装,后面把默认的数据库实例 orcl删除,有重新创建了一个数据库实例(这里用xx表示),网上搜了一下,说只需要把 /home/oracle/app/oracle/admin/xx/pfile/init.ora.10242017153319 文件copy到 /home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs下面,重命名为initorcl.ora即可,然后重启数据库,就行了,按照该方法试了以后,数据库确实启动了,后面自习分析了一下initorcl.ora里面的内容,总结了一下oracle数据库的启动。发现我的问题原因是

  • oracle启动的时候, 命令 startup; 使用的是默认的spfile,由于在数据库安装的时候,使用的是默认安装实例 orcl,所以在数据库启动的时候,依然会使用initorcl.ora这个文件,解决该问题的一个办法是:
startup pfile='/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/initxx.ora'

当然,如果使用上面的命令进行启动,则不需要copy文件,进行重命名。这种启动方式,在开发中,可能会出现jdbc连接不上数据库,报错代码是17002,state=08006。

此时,查询了一下,oracle启动以后,运行的实例,发现依然是 orcl,oracle的 ORACLE_SID没有改变,回忆了一下oracle数据库启动的时候,默认spfile也是orcl,那么oracle启动的时候,使用的initorcl.ora是不是就是根据ORACLE_SID来寻找文件的呢?

验证方式如下:

  • 关闭数据库
sqlplus /nolog
conn / as sysdba;
shutdown immediate;
  • 首先查看系统的ORACLE_SID
echo $ORACLE_SID // orcl
  • 修改系统的ORACLE_SID
export $ORACLE_SID=xx
  • 重命名 /home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/下的 initorcl.ora文件为 initxx.ora(initxx.ora一般已经存在改目录下,如果已存在,就不需要再重命名initorcl.ora,直接备份一下改文件 initorcl.ora.bak)

  • 在执行修改ORACLE_SID的命令窗口中,登入数据库,直接使用 startup;启动数据库。发现数据库能够正常启动,jdbc连接测试正常……

你可能感兴趣的:(oracle)