由于需要ORACLE的UAT测试环境,克隆了虚拟机后,修改IP地址后,启动实例遇到了ORA-07445 &ORA-00108错误.
案例环境:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
告警日志文件alert里面出现如下错误信息:
Thu Jun 11 13:45:51 2015
Errors in file /u01/app/oracle/admin/epps/bdump/epps_ora_5109.trc:
ORA-07445: exception encountered: core dump [kslgetl()+120] [SIGSEGV] [Address not mapped to object] [0x000000208] [] []
ORA-00108: failed to set up dispatcher to accept connection asynchronously
Thu Jun 11 13:45:54 2015
found dead dispatcher 'D000', pid = (16, 4)
Thu Jun 11 13:45:54 2015
dispatcher 'D000' encountered error getting listening address
Thu Jun 11 13:45:54 2015
Errors in file /u01/app/oracle/admin/epps/bdump/epps_ora_5113.trc:
ORA-07445: exception encountered: core dump [kslgetl()+120] [SIGSEGV] [Address not mapped to object] [0x000000208] [] []
ORA-00108: failed to set up dispatcher to accept connection asynchronously
Thu Jun 11 13:45:57 2015
found dead dispatcher 'D000', pid = (16, 5)
Thu Jun 11 13:45:58 2015
dispatcher 'D000' encountered error getting listening address
Thu Jun 11 13:45:58 2015
Errors in file /u01/app/oracle/admin/epps/bdump/epps_ora_5115.trc:
ORA-07445: exception encountered: core dump [kslgetl()+120] [SIGSEGV] [Address not mapped to object] [0x000000208] [] []
ORA-00108: failed to set up dispatcher to accept connection asynchronously
Thu Jun 11 13:46:00 2015
found dead dispatcher 'D000', pid = (16, 6)
Thu Jun 11 13:46:01 2015
dispatcher 'D000' encountered error getting listening address
Thu Jun 11 13:46:01 2015
Errors in file /u01/app/oracle/admin/epps/bdump/epps_ora_5117.trc:
ORA-07445: exception encountered: core dump [kslgetl()+120] [SIGSEGV] [Address not mapped to object] [0x000000208] [] []
ORA-00108: failed to set up dispatcher to accept connection asynchronously
[oracle@getlnx01uat ~]$ more /u01/app/oracle/admin/epps/bdump/epps_ora_5109.trc
/u01/app/oracle/admin/epps/bdump/epps_ora_5109.trc
Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1
System name: Linux
Node name: getlnx01uat.esquel.com
Release: 2.6.32-200.13.1.el5uek
Version: #1 SMP Wed Jul 27 21:02:33 EDT 2011
Machine: x86_64
Instance name: epps
Redo thread mounted by this instance: 1
Oracle process number: 16
Unix process pid: 5109, image: oracle@getlnx01uat.esquel.com (D000)
Warning: keltnfy call to ldmInit failed with error 46
*** 2015-06-11 13:45:51.950
network error encountered getting listening address:
NS Primary Error: TNS-12533: TNS:illegal ADDRESS parameters
NS Secondary Error: TNS-12560: TNS:protocol adapter error
NT Generic Error: TNS-00503: Illegal ADDRESS parameters
OPIRIP: Uncaught error 108. Error stack:
ORA-00108: failed to set up dispatcher to accept connection asynchronously
Exception signal: 11 (SIGSEGV), code: 1 (Address not mapped to object), addr: 0x208, PC: [0x75f178, kslgetl()+120]
*** 2015-06-11 13:45:51.954
ksedmp: internal or fatal error
ORA-07445: exception encountered: core dump [kslgetl()+120] [SIGSEGV] [Address not mapped to object] [0x000000208] [] []
ORA-00108: failed to set up dispatcher to accept connection asynchronously
Current SQL information unavailable - no session.
............................................
解决方法:
在ORA-07445[kslgetl()+120]/ORA-00108错误解决这篇文章了解到可能是主机名不能被正常访问导致,于是从下面验证后,发现是自己不小心编辑/etc/hosts
[oracle@getlnx01uat ~]$ hostname
getlnx01uat.esquel.com
[oracle@getlnx01uat ~]$ ping getlnx01uat.esquel.com
PING getlnx01uat.esquel.com (192.168.xxx.xxx) 56(84) bytes of data.
64 bytes from getlnx01uat.esquel.com (192.168.xxx.xxx): icmp_seq=1 ttl=64 time=0.032 ms
64 bytes from getlnx01uat.esquel.com (192.168.xxx.xxx): icmp_seq=2 ttl=64 time=0.039 ms
64 bytes from getlnx01uat.esquel.com (192.168.xxx.xxx): icmp_seq=3 ttl=64 time=0.049 ms
^C
--- getlnx01uat.esquel.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.032/0.040/0.049/0.007 ms
[oracle@getlnx01uat ~]$
[oracle@getlnx01uat bdump]$ ls -l /etc/hosts
-rw-r--r-- 1 root root 260 Jun 11 13:52 /etc/hosts
[oracle@getlnx01uat bdump]$ hostname
getlnx01uat.esquel.com
[oracle@getlnx01uat bdump]$ ping getlnx01uat.esquel.com
ping: unknown host getlnx01uat.esquel.com
[oracle@getlnx01uat bdump]$ more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
xxxx getlnx01uat.com getlnx01uat
如上所示,hostname为getlnx01uat.com,这个可能是我编辑/etc/hosts时,不小心误删除了一些hostname一些字符。编辑修改hostname后,重启数据库问题解决
[root@getlnx01uat ~]# more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
xxx.xxx.xxx.xxx getlnx01uat.esquel.com getlnx01uat