问题描述:
如果用dbstart启动数据库,启动正常,用dbstop也能正常关闭。
如果用sqlplus /nolog连接数据库,在startup正常,shutdown也正常。
若用dbstart启动数据库,之后用sqlplus /nolog连接,则出现以下错误
sqlplus /nolog
SQL> connect /as sysdba
Connected to an idle instance.
SQL> alter TABLESPACE "SMG_RUNINDEX" add DATAFILE
2 '/dev/rlv_data8_013' SIZE 8190M REUSE AUTOEXTEND OFF;
alter TABLESPACE "SMG_RUNINDEX" add DATAFILE
*
ERROR at line 1:
ORA-01034: ORACLE not available
解决方法:
该问题的出现,主要是由于以下两个ORACLE_HOME环境变量设置不一致的原因导致的。
.profile中的ORACLE_HOME
在使用sqlplus /nolog登陆时,系统使用.profile中定义的环境变量ORACLE_HOME的值。
dbstart中的ORACLE_HOM
在使用dbstart的时候,我们可以从脚本定义看到实际上是使用/etc/oratab文件来确定的ORACLE_HOME值和ORACLE_SID的值。
/etc/oratab的主要内容如下:
ora92:/home/oracle/app/oracle/product/9.2:Y
在这里:ORACLE_SID=ora92;ORACLE_HOME=/home/oracle/app/oracle/product/9.2
/etc/oratab是在oracle安装时执行root.sh时读取.profile环境变量生成的,所以正常情况下,上面的两个ORACLE_HOME的值应该是相同的。所以导致上面的原因基本是因为在安装完成之后修改了.profile中ORACLE_HOME变量值所导致。比如经常的是安装时
ORACLE_HOME=/home/oracle/app/oracle/product/9.2/
安装之后,发现上面好像最后多了个/,所以修改为
ORACLE_HOME=/home/oracle/app/oracle/product/9.2
这就导致了前面的错误。[@more@]