关键词:红旗Asianux3 +Oracle 10g R2 for Linux x86-64
1. 上午接到咨询电话:Linux下Oracle无法启动。约定下午到现场尝试解决问题。
2. 到现场后,了解基本情况如下:
*.操作系统:Asianux3
*.数据库:Oracle 10g R2 for Linux x86-64
*.问题表现:服务器搬到新机房后,之前已装好的Oracle数据库无法正常使用,客户端连接时报监听错误。
3. 问题在前几天已经发现。
待到现场后,发现服务器上listener.ora、sqlnet.ora、tnsnames.ora这三个文件已被修改的面目全非。
尝试一个一个还原。
4. 上述文件修改还原后,Oracle的dbconsole仍无法启动。
使用emctl status dbconsole 或e mctl start dbconsole命令,均有报错:
-----------
OC4J Configuration issue.
/opt/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_localhost_orcl not found.
-----------
5. 因是正在装修的新办公大楼,新机房还未连上外界网络。无法使用笔记本上网查询问题,只好用手机代劳。
一般是因修改Oracle绑定的服务器的机器名,造成无法启动Oracle服务。
但此服务器在搬迁后只做了IP地址修改,并未对机器名做修改。
一时困惑,无解。
6. 系统目前正在测试部署中,数据库中还无任何数据。
征得同意后,决定重装Oracle。
7. 卸载Oracle后,使用Oranavi做全新安装。
前段安装比较顺利。在环境检测阶段网络设备报了一个“未执行”,忽略,继续。
当创建数据库实例进行到74%时,出现异常:
-----------
参数PORT的值null无效
请参阅/opt/app/oracle/product/10.2.0/db_1/cfgtoollogs/dbca/orcl/emConfig.log中的日志文件。
-----------
此数据库实例安装失败。确定后,继续完成Oracle的安装。
安装完毕后,发现tnsnames.ora中原本应是1521的端口,写着“null”:PORT = null。
8. 怀疑1521端口被占用。或者某配置文件或Oracle用户的环境变量中未明确指定1521端口。
折腾。
一圈下来后,没有发现任何有价值线索。
无奈,用dbca单独建立第二个数据库实例,做测试安装。
同样的问题,在创建数据库实例到74%时,抛出异常:参数PORT的值null无效。
9. 囿于环境。继续用手机上网搜索查找问题。
终于发现2个多月前,有人遇到相似问题。提到在/etc/hosts文件中主机IP配置可能有问题。
于是,打开/etc/hosts文件中查看。
果然,除了127.0.0.1的IP外,在/etc/hosts文件中还设置绑定了一个在服务器搬迁之前的旧主机IP。
10. 修改为现在的正确IP后,卸载已安装的Oracle数据库。
重新安装至完毕,一切OK!
在环境检测阶段也无任何异常,全部通过。
11. 这是第一次使用Asianux操作系统。不知/etc/hosts在系统安装时,默认的主机配置是如何写的。
打开RedFlag Linux,发现默认情况下,/etc/hosts中只有一行:
-----------
127.0.0.1 localhost.localdomain localhost
-----------
此配置使用设置127.0.0.1为HostIP,并无与系统真实的IP做任何绑定,可修改IP地址而Oracle服务器不会受任何影响。
而在Asianux中,/etc/hosts中出现了多个主机IP。
显然,是因修改了服务器的IP而导致Oralce服务受到影响。修改服务器IP的同时,也需同步修改/etc/hosts文件中所使用的主机IP。
(还未得知此前该主机的旧IP是否为系统安装后手工添加的,或与Asianux操作系统有关?需待确认和验证。)
12. 在linux下,/etc/host是是主机名和IP配置文件。
/etc/hosts文件中可配置如下类似内容:
-----------
127.0.0.1 localhost.localdomain localhost
192.168.1.100 linuxserver.com linuxserver
192.168.1.120 ftpserver ftp120
-----------
通常,hosts文件中每行文字代表一个主机配置信息。
每行文字由三部份组成,每部份由空格隔开:
第一部份:网络IP地址
第二部份:主机名或域名
第三部份:主机名别名
另,每行文字也可为两部份,即主机IP地址和主机名,如:192.168.1.100 linuxServer。
显示主机名和主机IP的命令:
# hostname
# hostname -i
By JRQ
2010/07/10 于南昌