联系:手机/微信(+86 17813235971) QQ(107644445)
标题:ORA-07445[kslgetl()+120]/ORA-00108错误解决
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
一.数据库版本
SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi 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中发现ORA-07445[kslgetl()+120]/ORA-00108错误
Mon Dec 19 09:19:42 2011 found dead dispatcher 'D000', pid = (13, 1) Mon Dec 19 09:19:42 2011 dispatcher 'D000' encountered error getting listening address Mon Dec 19 09:19:42 2011 Errors in file /opt/oracle/admin/gaxt/bdump/gaxt_ora_16297.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 Mon Dec 19 09:19:45 2011 found dead dispatcher 'D000', pid = (21, 2) Mon Dec 19 09:19:45 2011 dispatcher 'D000' encountered error getting listening address Mon Dec 19 09:19:45 2011 Errors in file /opt/oracle/admin/gaxt/bdump/gaxt_ora_16299.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
三.trace文件信息
Oracle process number: 15 Unix process pid: 10607, image: oracle@gongantest (D000) Warning: keltnfy call to ldmInit failed with error 46 *** 2011-12-19 19:21:40.100 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: [0x7a06b8, kslgetl()+120] *** 2011-12-19 19:21:40.107 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. ----- Call Stack Trace ----- calling call entry argument values in hex location type point (? means dubious value) -------------------- -------- -------------------- ---------------------------- ksedst()+31 call ksedst1() 000000000 ? 000000001 ? 2B91BE8F7D50 ? 2B91BE8F7DB0 ? 2B91BE8F7CF0 ? 000000000 ? ksedmp()+610 call ksedst() 000000000 ? 000000001 ? 2B91BE8F7D50 ? 2B91BE8F7DB0 ? 2B91BE8F7CF0 ? 000000000 ? ssexhd()+629 call ksedmp() 000000003 ? 000000001 ? 2B91BE8F7D50 ? 2B91BE8F7DB0 ? 2B91BE8F7CF0 ? 000000000 ? __restore_rt()+0 call ssexhd() 00000000B ? 2B91BE8F8D70 ? 2B91BE8F8C40 ? 2B91BE8F7DB0 ? 2B91BE8F7CF0 ? 000000000 ? kslgetl()+120 signal __restore_rt() 0600E7560 ? 0000000E8 ? 09AAE5728 ? 0000009A9 ? 000003980 ? 09AAE5740 ? ksfglt()+108 call kslgetl() 0600E7560 ? 000000001 ? 09AAE5728 ? 0000009A9 ? 000003980 ? 09AAE5740 ?
四.在MOS上找到相关文章[ID 1298804.1]
Applies to: Oracle Server - Enterprise Edition - Version: 11.1.0.6 to 11.1.0.7 - Release: 11.1 to 11.1 Information in this document applies to any platform. Symptoms The following errors are seen in the trace file written by an ORA-7445 [kslgetl]: 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: 0x130, PC: [0x82f09dc, kslgetl()+80] The trace file indicates that there is no session: Current SQL information unavailable - no session. The Call Stack Trace in the ORA-7445 trace file contains a function list similar to: kslgetl <- PGOSF57_ksfglt <- kghfre <- kmnsbf <- nsbfr <- nsiofrrg <- nsiocancel <- nsopen_shutitdown <- nsclose <- nsgblclose <- nsgblTRMHelper <- nsgblRealTerm <- nlstdstp <- npinlt <- ksuabt <- opidrv <- sou2o <- opimai_real <- main <- libc_start_main Cause The trace file first reports: Warning: keltnfy call to ldmInit failed with error 46 The ORA-7445 is not the starting point here. This exception is just a spin-off from ORA-180 and it is possible that different internal errors may be seen, such as ORA-600 [504], depending on what is happening when the ORA-180 is encountered. The cause for the ORA-180 is related to the inital message at the beginning of the trace file: "keltnfy call to ldmInit failed with error 46" and this is followed by: "network error encountered getting listening address:" The error code (here: 46) is the key for solving the issue. This warning says that ldmInit() returned error 46 which is LDMERR_HOST_NOT_FOUND (host not found). This error is returned if the OS call gethostbyname() fails with an error. So these appears to be a network specific issue. Solution 1) Check permission on /etc/hosts $ ls -l /etc/hosts -rw-r--r-- 2 root root 194 Oct 17 2006 /etc/hosts Check if /etc/hosts file is correctly configured <ip address> <fully qualified hostname> <simple or short hostname> <alias, if applicable> ( all of this on one line ). 2) Check the hostname: $ hostname $ ping `hostname` Make sure you are able to ping the hostname 3) Check if /etc/nodename is correctly configured If you have DNS setup, ping is not a tool to diagnose DNS problem. A better tool to use is nslookup, dnsquery, or dig. $ nslookup <shortname> $ nslookup <long name> $ nslookup <ip address> The forward and reverse lookup should succeed and return consistent address/info. 4) Check nsswitch.conf $ more nsswitch.confhosts: files dnsMake sure host lookup is also done through the /etc/hosts file and not just dns. It is recommended that FILES come first before DNS. Also, check the resolv.conf. This makes sure that the DNS is working properly.
在这里看到虽然数据库的版本不一样,alert和trace中的错误不完全一致,但是很相似。是由于主机名不能被正常访问导致,所以尝试这从主机名相关部分着手解决。
五.查看主机名相关信息,解决问题
[oracle@gongantest ~]$ ls -l /etc/hosts -rw-r--r-- 2 root root 176 Dec 16 13:43 /etc/hosts [oracle@gongantest ~]$ hostname gongantest [oracle@gongantest ~]$ ping gongantest ping: unknown host gongantest [oracle@gongantest ~]$ 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 #192.168.11.60 gongantest --发现改主机名的dns被注释掉 [oracle@gongantest ~]$ ping gongantest PING gongantest (192.168.11.60) 56(84) bytes of data. From 192.168.9.66 icmp_seq=2 Destination Host Unreachable From 192.168.9.66 icmp_seq=3 Destination Host Unreachable From 192.168.9.66 icmp_seq=4 Destination Host Unreachable --- gongantest ping statistics --- 5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3999ms, pipe 3 --除掉注释,测试不通 [root@gongantest ~]# ifconfig eth1 Link encap:Ethernet HWaddr 00:14:22:10:96:CA inet addr:192.168.9.66 Bcast:192.168.11.255 Mask:255.255.252.0 inet6 addr: fe80::214:22ff:fe10:96ca/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4207222 errors:0 dropped:0 overruns:0 frame:0 TX packets:2482964 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:1156547557 (1.0 GiB) TX bytes:565900103 (539.6 MiB) --发现该机器的ip为192.168.9.66,修改hosts文件。 --初步确定出现问题的原因是因为机器迁移,使用了新ip,注释掉了hosts文件中错误ip [root@gongantest ~]# vi /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.9.66 gongantest [oracle@gongantest ~]$ ping gongantest PING gongantest (192.168.9.66) 56(84) bytes of data. 64 bytes from gongantest (192.168.9.66): icmp_seq=1 ttl=64 time=0.037 ms 64 bytes from gongantest (192.168.9.66): icmp_seq=2 ttl=64 time=0.031 ms 64 bytes from gongantest (192.168.9.66): icmp_seq=3 ttl=64 time=0.033 ms --- gongantest ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 0.031/0.033/0.037/0.007 ms --ping测试正常
继续观察
--观察d000进程是否启动 [oracle@gongantest ~]$ ps -ef|grep ora_ oracle 10180 1 0 13:23 ? 00:00:00 ora_pmon_gaxt oracle 10182 1 0 13:23 ? 00:00:00 ora_psp0_gaxt oracle 10184 1 0 13:23 ? 00:00:00 ora_mman_gaxt oracle 10186 1 0 13:23 ? 00:00:00 ora_dbw0_gaxt oracle 10188 1 0 13:23 ? 00:00:02 ora_lgwr_gaxt oracle 10190 1 0 13:23 ? 00:00:00 ora_ckpt_gaxt oracle 10192 1 0 13:23 ? 00:00:00 ora_smon_gaxt oracle 10194 1 0 13:23 ? 00:00:00 ora_reco_gaxt oracle 10196 1 0 13:23 ? 00:00:00 ora_cjq0_gaxt oracle 10198 1 0 13:23 ? 00:00:00 ora_mmon_gaxt oracle 10200 1 0 13:23 ? 00:00:00 ora_mmnl_gaxt oracle 10204 1 0 13:23 ? 00:00:00 ora_s000_gaxt oracle 10210 1 0 13:23 ? 00:00:00 ora_arc0_gaxt oracle 10212 1 0 13:23 ? 00:00:00 ora_arc1_gaxt oracle 10214 1 0 13:23 ? 00:00:00 ora_qmnc_gaxt oracle 10218 1 0 13:23 ? 00:00:00 ora_j000_gaxt oracle 10222 1 0 13:24 ? 00:00:00 ora_q000_gaxt oracle 10234 1 0 13:24 ? 00:00:00 ora_q001_gaxt oracle 10609 1 0 13:32 ? 00:00:00 ora_d000_gaxt oracle 10639 9962 0 13:35 pts/0 00:00:00 grep ora_ --观察alert日志未出现该错误 Mon Dec 26 13:32:18 2011 Errors in file /opt/oracle/admin/gaxt/bdump/gaxt_ora_10607.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 Mon Dec 26 13:32:21 2011 found dead dispatcher 'D000', pid = (13, 85) Mon Dec 26 13:36:04 2011 Thread 1 advanced to log sequence 232 (LGWR switch) Current log# 1 seq# 232 mem# 0: /opt/oracle/oradata/gaxt/redo01.log
至此ORA-07445[kslgetl()+120]/ORA-00108错误解决