启动监听报错误如下:
Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.
Starting /u01/app/oracle/ora9/9.2.0.8/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 9.2.0.8.0 - Production
System parameter file is /u01/app/oracle/ora9/9.2.0.8/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/ora9/9.2.0.8/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=redhat48)(PORT=1521)))
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
TNS-12555: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00525: Insufficient privilege for operation
Linux Error: 1: Operation not permitted
通过strace -Ff -o /tmp/listener.log lsnrctl start 跟踪日志分析
4772 chmod("/var/tmp/.oracle", 01777) = -1 EPERM (Operation not permitted)
4772 socket(PF_FILE, SOCK_STREAM, 0) = 9
4772 getpid() = 4772
4772 access("/var/tmp/.oracle/s#4772.1", F_OK) = -1 ENOENT (No such file or directory)
4772 bind(9, {sa_family=AF_FILE, path="/var/tmp/.oracle/s#4772.1"}, 110) = 0
4772 chmod("/var/tmp/.oracle/s#4772.1", 0777) = 0
4772 listen(9, 100) = 0
4772 getsockname(9, {sa_family=AF_FILE, path="/var/tmp/.oracle/s#4772.1"}, [20495583936540]) = 0
4772 chmod("/var/tmp/.oracle/s#4772.1", 0777) = 0
4772 fcntl(9, F_SETFD, FD_CLOEXEC) = 0
4772 rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_IGN}, 8) = 0
4772 socket(PF_FILE, SOCK_STREAM, 0) = 10
4772 access("/var/tmp/.oracle/sEXTPROC", F_OK) = 0
4772 bind(10, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC"}, 110) = -1 EADDRINUSE (Address already in use)
4772 connect(10, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC"}, 110) = -1 ECONNREFUSED (Connection refused)
4772 access("/var/tmp/.oracle/sEXTPROC", F_OK) = 0
4772 unlink("/var/tmp/.oracle/sEXTPROC") = -1 EPERM (Operation not permitted)
4772 close(10) = 0
处理方法 通过注释listener.ora 参数中的extproc,启动监听正常。
解决过程如下:
ora9@redhat48 bin]$ lsnrctl start
LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 28-MAR-2017 10:01:14
Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.
Starting /u01/app/oracle/ora9/9.2.0.8/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 9.2.0.8.0 - Production
System parameter file is /u01/app/oracle/ora9/9.2.0.8/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/ora9/9.2.0.8/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=redhat48)(PORT=1521)))
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
TNS-12555: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00525: Insufficient privilege for operation
Linux Error: 1: Operation not permitted
Listener failed to start. See the error message(s) above...
[ora9@redhat48 bin]$ vi /tmp/listener.log
4770 execve("/u01/app/oracle/ora9/9.2.0.8/db_1/bin/lsnrctl", ["lsnrctl", "start"], [/* 24 vars */]) = 0
4770 uname({sys="Linux", node="redhat48", ...}) = 0
4770 brk(0) = 0x6b1000
4770 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2a95556000
4770 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
4770 open("/u01/app/oracle/ora9/9.2.0.8/db_1/lib/tls/x86_64/libclntsh.so.9.0", O_RDONLY) = -1 ENOENT (No such file or directory)
4770 stat("/u01/app/oracle/ora9/9.2.0.8/db_1/lib/tls/x86_64", 0x7fbfffee00) = -1 ENOENT (No such file or directory)
4770 open("/u01/app/oracle/ora9/9.2.0.8/db_1/lib/tls/libclntsh.so.9.0", O_RDONLY) = -1 ENOENT (No such file or directory)
4770 stat("/u01/app/oracle/ora9/9.2.0.8/db_1/lib/tls", 0x7fbfffee00) = -1 ENOENT (No such file or directory)
4770 open("/u01/app/oracle/ora9/9.2.0.8/db_1/lib/x86_64/libclntsh.so.9.0", O_RDONLY) = -1 ENOENT (No such file or directory)
4770 stat("/u01/app/oracle/ora9/9.2.0.8/db_1/lib/x86_64", 0x7fbfffee00) = -1 ENOENT (No such file or directory)
4770 open("/u01/app/oracle/ora9/9.2.0.8/db_1/lib/libclntsh.so.9.0", O_RDONLY) = 3
4770 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P;\25\0\0\0\0\0"..., 832) = 832
4770 fstat(3, {st_mode=S_IFREG|0755, st_size=13386484, ...}) = 0
4770 mmap(NULL, 13576392, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2a95557000
4770 mprotect(0x2a960d8000, 1513672, PROT_NONE) = 0
4770 mmap(0x2a961d7000, 393216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb80000) = 0x2a961d7000
4770 mmap(0x2a96237000, 75976, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2a96237000
4770 close(3) = 0
"/tmp/listener.log" 716L, 49482C
4772 fstat(8, {st_mode=S_IFREG|0644, st_size=171, ...}) = 0
4772 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2a969e3000
4772 read(8, "# Do not remove the following li"..., 4096) = 171
4772 close(8) = 0
4772 munmap(0x2a969e3000, 4096) = 0
4772 getpid() = 4772
4772 open("/etc/hosts", O_RDONLY) = 8
4772 fcntl(8, F_GETFD) = 0
4772 fcntl(8, F_SETFD, FD_CLOEXEC) = 0
4772 fstat(8, {st_mode=S_IFREG|0644, st_size=171, ...}) = 0
4772 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2a969e3000
4772 read(8, "# Do not remove the following li"..., 4096) = 171
4772 close(8) = 0
4772 munmap(0x2a969e3000, 4096) = 0
4772 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 8
4772 setsockopt(8, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
4772 uname({sys="Linux", node="redhat48", ...}) = 0
4772 open("/etc/hosts", O_RDONLY) = 9
4772 fcntl(9, F_GETFD) = 0
4772 fcntl(9, F_SETFD, FD_CLOEXEC) = 0
4772 fstat(9, {st_mode=S_IFREG|0644, st_size=171, ...}) = 0
4772 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2a969e3000
4772 read(9, "# Do not remove the following li"..., 4096) = 171
4772 close(9) = 0
4772 munmap(0x2a969e3000, 4096) = 0
4772 bind(8, {sa_family=AF_INET, sin_port=htons(1521), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
4772 listen(8, 128) = 0
4772 getsockname(8, {sa_family=AF_INET, sin_port=htons(1521), sin_addr=inet_addr("0.0.0.0")}, [253403070480]) = 0
4772 getpeername(8, 0x7fbfff9720, [253403070480]) = -1 ENOTCONN (Transport endpoint is not connected)
4772 uname({sys="Linux", node="redhat48", ...}) = 0
4772 open("/etc/hosts", O_RDONLY) = 9
4772 fcntl(9, F_GETFD) = 0
4772 fcntl(9, F_SETFD, FD_CLOEXEC) = 0
4772 fstat(9, {st_mode=S_IFREG|0644, st_size=171, ...}) = 0
4772 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2a969e3000
4772 read(9, "# Do not remove the following li"..., 4096) = 171
4772 close(9) = 0
4772 munmap(0x2a969e3000, 4096) = 0
4772 fcntl(8, F_SETFD, FD_CLOEXEC) = 0
4772 rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_IGN}, 8) = 0
4772 uname({sys="Linux", node="redhat48", ...}) = 0
4772 open("/etc/hosts", O_RDONLY) = 9
4772 fcntl(9, F_GETFD) = 0
4772 fcntl(9, F_SETFD, FD_CLOEXEC) = 0
4772 fstat(9, {st_mode=S_IFREG|0644, st_size=171, ...}) = 0
4772 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2a969e3000
4772 read(9, "# Do not remove the following li"..., 4096) = 171
4772 close(9) = 0
4772 munmap(0x2a969e3000, 4096) = 0
4772 lseek(6, 19456, SEEK_SET) = 19456
4772 read(6, "\21\0+\4\0\0n\0.\4\0\0\211\0/\4\0\0\246\0000\4\0\0\266\0001\4\0\0\304\0"..., 512) = 512
4772 lseek(3, 0, SEEK_CUR) = 24651
4772 write(3, "Listening on: (DESCRIPTION=(ADDR"..., 79) = 79
4772 access("/var/tmp/.oracle", F_OK) = 0
4772 chmod("/var/tmp/.oracle", 01777) = -1 EPERM (Operation not permitted)
4772 socket(PF_FILE, SOCK_STREAM, 0) = 9
4772 getpid() = 4772
4772 access("/var/tmp/.oracle/s#4772.1", F_OK) = -1 ENOENT (No such file or directory)
4772 bind(9, {sa_family=AF_FILE, path="/var/tmp/.oracle/s#4772.1"}, 110) = 0
4772 chmod("/var/tmp/.oracle/s#4772.1", 0777) = 0
4772 listen(9, 100) = 0
4772 getsockname(9, {sa_family=AF_FILE, path="/var/tmp/.oracle/s#4772.1"}, [20495583936540]) = 0
4772 chmod("/var/tmp/.oracle/s#4772.1", 0777) = 0
4772 fcntl(9, F_SETFD, FD_CLOEXEC) = 0
4772 rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_IGN}, 8) = 0
4772 socket(PF_FILE, SOCK_STREAM, 0) = 10
4772 access("/var/tmp/.oracle/sEXTPROC", F_OK) = 0
4772 bind(10, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC"}, 110) = -1 EADDRINUSE (Address already in use)
4772 connect(10, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC"}, 110) = -1 ECONNREFUSED (Connection refused)
4772 access("/var/tmp/.oracle/sEXTPROC", F_OK) = 0
4772 unlink("/var/tmp/.oracle/sEXTPROC") = -1 EPERM (Operation not permitted)
4772 close(10) = 0
4772 lseek(6, 19456, SEEK_SET) = 19456
4772 read(6, "\21\0+\4\0\0n\0.\4\0\0\211\0/\4\0\0\246\0000\4\0\0\266\0001\4\0\0\304\0"..., 512) = 512
4772 lseek(3, 0, SEEK_CUR) = 24730
4772 write(3, "Error listening on: (DESCRIPTION"..., 72) = 72
[ora9@redhat48 bin]$ cd $ORACLE_HOME/network/admin
[ora9@redhat48 admin]$ ls
libnk59.def listener.ora samples shrept.lst snmp_ro.ora sqlnet.log sqlnet.ora sqlnet.ora.1
[ora9@redhat48 admin]$ vi listener.ora
# LISTENER.ORA Network Configuration File: /u01/app/oracle/ora9/9.2.0.8/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/ora9/9.2.0.8/db_1)
# (PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = redhat48)(PORT = 1521) (IP=FIRST))
)
(ADDRESS_LIST =
# (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
"listener.ora" 24L, 576C written
[ora9@redhat48 admin]$ lsnrctl start
LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 28-MAR-2017 10:04:02
Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.
Starting /u01/app/oracle/ora9/9.2.0.8/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 9.2.0.8.0 - Production
System parameter file is /u01/app/oracle/ora9/9.2.0.8/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/ora9/9.2.0.8/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=redhat48)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=redhat48)(PORT=1521)(IP=FIRST)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 9.2.0.8.0 - Production
Start Date 28-MAR-2017 10:04:02
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security OFF
SNMP OFF
Listener Parameter File /u01/app/oracle/ora9/9.2.0.8/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/ora9/9.2.0.8/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=redhat48)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully