Linux下oracle 10g的错误:ORA-01034, ORA-27101 and ORA-00600

进入系统,oracle报错:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

这两个错误的原因可能是:
  ORACLE_SID或ORACLE_HOME没有设置正确。对normal users来言,或者是oracle数据库没有启动。对remote users,可能listener有问题。
 
解决方法:
step 1. 
  确保ORACLE_SID和ORACLE_HOME正确的设置。可以再Unix下查看变量:
  SQL>!echo $ORACLE_SID
  data1 or XE
 
  SQL>!echo $ORACLE_HOME
  .../oracle/product/10.2.0/db_1(or server)
 
  如果运行的结果与上面的结果不同,可以通过下面的命令set:
  $export ORACLE_SID=db_name_here // db_name_here = data1 or XE
  另外,需要注意:ORACLE_SID是大小写区分的
 
step 2.
验证数据库实例正在运行.
在Unix下可以这样查看:
SQL>!PS -ef | grep smon
这行命令会返回一行数据,类似于: ora_smon_xe。 如果没有返回这样的数据,说明数据库没有启动。

运行一下命令启动数据库:
$sqlplus / as sysdba
$startup

如果没有返回错误的话,再去查看 ps -ef | grep smon, 应该会返回ora_smon_xe之类的一行数据。

可是,我在startup的时候却发生了错误:
ORA-00600: internal error code, arguments: [keltnfy-ldminit] ...
g了一下,发现问题都指向/etc/hosts和hostname. 可是,我这边的机器没有更改过hostname啊,机器装好了就是这样的。
输入$hostname
ABC-DEF  //说明hostname是ABC-DEF

再vim /etc/hosts
127.0.0.1对应的hostname是localhost,难道因为二者不对应造成的? 管他呢,先增加一行再说,在hosts里新增一行:
127.0.0.1    ABC-DEF
!wq

$startup
ok,可以启动了。

看来原因真是二者不对应造成的。默认的hostname是localhost,装的时候hostname设置为ABC-DEF,二者不对应。而通过hostname命令得到的主机名无法ping通,Oracle10g认为主机无法达到所以启动数据库报错。

PS:
有解决方案说:如果一定要修改机器名,需要修改的比较彻底,需要修改/etc/hosts,/etc/sysconfig/network这两个文件,如果忘了将/etc/hosts中127.0.0.1对应的机器修改成network文件中的一样,将会导致上面描述的错误。
可是,/etc/sysconfig/network是个文件夹,而且,vi该文件夹的时候,也没发现里面有关于hostname的设置。。。不过,我用的suse,莫非network文件的位置不对了。。。find一番,也没找到。自己无解了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值