我在同一个用户下创建了两个数据库实例,然后突然有一天机器down掉了,重启数据库发现另一个实例启动失败,在同事的帮助下才解决了问题~
前奏
先说说前奏吧。
首先查看监听状态:
lsnrctl stat
查看当前环境的实例ID:
echo $ORACLE_SID
启动监听:
lsnrctl start
以SYS用户登录数据库:
sqlplus / as sysdba
启动数据库
startup
退出命令
exit
OK!第一个数据困实例已经启动成功,在windows下可以使用PL/SQL登录数据库,查看是否可正确使用。
在启动第二个实例前,需要先操作一步,先更改一下环境变量,即实例ID:export ORACLE_SID=secdb
然后再次按照上述步骤启动第二个实例的时候,(startup)就会报错:
> ORA-01078: 处理系统参数失败
> LRM-00109: 无法打开参数文件 'C:\ORACLE\ORA92\DATABASE\INITRISESOFT.ORA'
问题原因
在oracle9i和oracle10g中,数据库默认将使用spfile启动数据库,如果spfile不存在,则会报以上错误,也就是说数据库启动时在C:\ORACLE\ORA92\DATABASE\下找不到INITRISESOFT.ORA文件
解决办法
从C:\oracle\admin\risesoft\pfile
目录下把init.ora.113200823544
拷贝到C:\ORACLE\ORA92\DATABASE\
下,然后重命名为INITRISESOFT.ORA
文件,然后再startup
SQL>startup
----------------
数据库装载完毕。
数据库已经打开。
注意事项
lsnrctl status对非默认数据库实例有1分钟时延