strace诊断一次监听无法启动之TNS-12555 TNSpermission denied

本文记录了一次Oracle数据库监听器启动失败的问题排查过程,通过strace跟踪启动执行过程,发现连接被拒绝错误,并最终解决了权限问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TNSLSNR for Linux: Version 10.2.0.4.0 - Production
System parameter file is /u01/app/oracle/network/admin/listener.ora
Log messages written to /u01/app/oracle/network/log/listener.log
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
TNS-12555: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00525: Insufficient privilege for operation
Linux Error: 1: Operation not permitted








以前都是OK的,于是跟踪启动执行过程:


strace lsnrctl start


"startn", 1024) = 6
getuid32() = 501
open("/etc/passwd", O_RDONLY) = 5
fcntl64(5, F_GETFD) = 0
fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
fstat64(5, {st_mode=S_IFREG|0644, st_size=2751, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf6f76000
read(5, "root:x:0:0:root:/root:/bin/bashn"..., 4096) = 2751
close(5) = 0
munmap(0xf6f76000, 4096) = 0
gettimeofday({1256161691, 700999}, NULL) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
chmod(umovestr: Input/output error
0x2, 0777) = -1 EFAULT (Bad address)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161691, 777393}, NULL) = 0
nanosleep({0, 100000000}, NULL) = 0
gettimeofday({1256161691, 892650}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161691, 934364}, NULL) = 0
nanosleep({0, 200000000}, NULL) = 0
gettimeofday({1256161692, 167237}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161692, 281844}, NULL) = 0
nanosleep({0, 10000000}, NULL) = 0
gettimeofday({1256161692, 339362}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161692, 490320}, NULL) = 0
nanosleep({0, 20000000}, NULL) = 0
gettimeofday({1256161692, 557319}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161692, 701283}, NULL) = 0
nanosleep({0, 40000000}, NULL) = 0
gettimeofday({1256161692, 791268}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161692, 974221}, NULL) = 0
nanosleep({0, 80000000}, NULL) = 0
gettimeofday({1256161693, 114147}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161693, 273149}, NULL) = 0
nanosleep({0, 160000000}, NULL) = 0
gettimeofday({1256161693, 476978}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161693, 627450}, NULL) = 0
nanosleep({0, 320000000}, NULL) = 0
gettimeofday({1256161694, 2784}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161694, 131925}, NULL) = 0
nanosleep({0, 10000000}, NULL) = 0
gettimeofday({1256161694, 188909}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161694, 359530}, NULL) = 0
nanosleep({0, 20000000}, NULL) = 0
gettimeofday({1256161694, 426892}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161694, 567824}, NULL) = 0
nanosleep({0, 40000000}, NULL) = 0
gettimeofday({1256161694, 654494}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161694, 802878}, NULL) = 0
nanosleep({0, 80000000}, NULL) = 0
gettimeofday({1256161694, 927949}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161695, 73586}, NULL) = 0
nanosleep({0, 160000000}, NULL) = 0
gettimeofday({1256161695, 267671}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161695, 306543}, NULL) = 0
nanosleep({0, 320000000}, NULL) = 0
gettimeofday({1256161695, 641420}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161695, 682471}, NULL) = 0
nanosleep({0, 10000000}, NULL) = 0
gettimeofday({1256161695, 709874}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161695, 736598}, NULL) = 0
nanosleep({0, 20000000}, NULL) = 0
gettimeofday({1256161695, 773469}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
gettimeofday({1256161695, 817491}, NULL) = 0
nanosleep({0, 40000000}, NULL) = 0
gettimeofday({1256161695, 871378}, NULL) = 0
close(5) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = -1 ECONNREFUSED (Connection refused)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
close(5) = 0
gettimeofday({1256161695, 922622}, NULL) = 0
open("/etc/hosts", O_RDONLY) = 5
fcntl64(5, F_GETFD) = 0
fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
fstat64(5, {st_mode=S_IFREG|0644, st_size=146, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf6f76000
read(5, "# Do not remove the following li"..., 4096) = 146
close(5) = 0
munmap(0xf6f76000, 4096) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 5
connect(5, {sa_family=AF_INET, sin_port=htons(1521), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 ECONNREFUSED (Connection refused)
close(5) = 0
getsockopt(5, SOL_SOCKET, SO_SNDBUF, 0xfeff7ff8, 0xfeff7ff4) = -1 EBADF (Bad file descriptor)
getsockopt(5, SOL_SOCKET, SO_RCVBUF, 0xfeff7ff8, 0xfeff7ff4) = -1 EBADF (Bad file descriptor)
lseek(4, 19456, SEEK_SET) = 19456
read(4, "17$4b%4207&4245'4311"..., 512) = 512
write(1, "Starting /u01/app/oracle/bin/tns"..., 54Starting /u01/app/oracle/bin/tnslsnr: please wait...


) = 54
gettimeofday({1256161696, 61302}, NULL) = 0
pipe([5, 6]) = 0
pipe([7, 8]) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xf6fdd708) = 1091
--- SIGCHLD (Child exited) @ 0 (0) ---
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 8) = 0
rt_sigaction(SIGPIPE, {0x1aca520, ~[ILL ABRT BUS FPE SEGV USR2 XCPU XFSZ SYS RTMIN RT_1], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x143890}, {SIG_DFL}, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 8) = 0
waitpid(1091, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0) = 1091
close(5) = 0
close(8) = 0
read(7, "NTP0 1092n", 64) = 10
fcntl64(7, F_SETFD, FD_CLOEXEC) = 0
gettimeofday({1256161696, 773573}, NULL) = 0
write(6, "25410191,1020O2301"..., 172) = 172
read(7, "f4"1246", 2064) = 12
read(7, "12606@TNSLSNR for Linux: Ver"..., 2064) = 432
close(6) = 0
close(7) = 0
write(1, "TNSLSNR for Linux: Version 10.2."..., 422TNSLSNR for Linux: Version 10.2.0.4.0 - Production
System parameter file is /u01/app/oracle/network/admin/listener.ora
Log messages written to /u01/app/oracle/network/log/listener.log
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
TNS-12555: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00525: Insufficient privilege for operation
Linux Error: 1: Operation not permitted
) = 422
write(1, "n", 1
) = 1
lseek(4, 19968, SEEK_SET) = 19968
read(4, "f0054P0064j00742060084240"..., 512) = 512
write(1, "Listener failed to start. See th"..., 61Listener failed to start. See the error message(s) above...




发现许多的:Connection refused错误,进入目录:/var/tmp


[root@localhost tmp]# ll -a
总用量 24
drwxrwxrwx 3 root root 4096 10月 21 00:06 .
drwxrwxrwx 25 root root 4096 2008-10-16 ..
drwxrwxrwt 2 root root 4096 10月 22 04:19 .oracle 


属于root用户,但是其他用户有全部的控制权。。迷糊了。。。。。。。。


[root@localhost tmp]# chown oracle:dba .oracle
[root@localhost tmp]# ll
总用量 0
[root@localhost tmp]# ll -a
总用量 24
drwxrwxrwx 3 root root 4096 10月 21 00:06 .
drwxrwxrwx 25 root root 4096 2008-10-16 ..
drwxrwxrwt 2 oracle dba 4096 10月 22 05:51 .oracle


重新启动:


read(0, start
"startn", 1024) = 6
getuid32() = 501
open("/etc/passwd", O_RDONLY) = 5
fcntl64(5, F_GETFD) = 0
fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
fstat64(5, {st_mode=S_IFREG|0644, st_size=2751, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf6f76000
read(5, "root:x:0:0:root:/root:/bin/bashn"..., 4096) = 2751
close(5) = 0
munmap(0xf6f76000, 4096) = 0
gettimeofday({1256161942, 583858}, NULL) = 0
socket(PF_FILE, SOCK_STREAM, 0) = 5
chmod(umovestr: Input/output error
0x2, 0777) = -1 EFAULT (Bad address)
access("/var/tmp/.oracle/sEXTPROC1", F_OK) = 0
connect(5, {sa_family=AF_FILE, path="/var/tmp/.oracle/sEXTPROC1"}, 110) = 0
fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_IGN}, 8) = 0
gettimeofday({1256161942, 723899}, NULL) = 0
write(5, "32110191,20110177377s101"..., 209) = 209
read(5, "I4"=(DESCRIPTION=(TMP=)("..., 2064) = 73
close(5) = 0
lseek(4, 20992, SEEK_SET) = 20992
read(4, "nR4DS4|T4241U4300V4"..., 512) = 512
write(1, "TNS-01106: Listener using listen"..., 74TNS-01106: Listener using listener name LISTENER has already been started
) = 74
write(1, "LSNRCTL> ", 9LSNRCTL> ) = 9
read(0, 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值