oracle var/tmp,[20141128]目录/var/tmp/oracle.txt

[20141128]目录/var/tmp/oracle.txt

--昨天帮别人解决监听问题,用户整理机器,删除了/var/tmp/oracle目录里面的文件(估计已经删除很久了),导致执行lsnrctl status报错。

--我自己以前也遇到一次,记忆比较深刻,今天在自己机器上测试重复错误。

SYS@test> @ver1

PORT_STRING                    VERSION        BANNER

------------------------------ -------------- --------------------------------------------------------------------------------

x86_64/Linux 2.4.xx            11.2.0.3.0     Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

# lsof | grep /var/tmp/.oracle

tnslsnr   18430 oracle11g   10u     unix 0x000001002550d680                53579 /var/tmp/.oracle/s#18430.1

tnslsnr   18430 oracle11g   11u     unix 0x000001002550d380                53581 /var/tmp/.oracle/sEXTPROC1521

tnslsnr   18430 oracle11g   12u     unix 0x000001002576c980                53583 /var/tmp/.oracle/s#18430.2

--可以发现监听使用这些文件。

$ cd /var/tmp/.oracle

$ mkdir laji

$ ls -l

total 4

drwxr-xr-x  2 oracle11g oinstall 4096 2014-11-28 11:22:01 laji

srwxrwxrwx  1 oracle11g oinstall    0 2014-09-09 11:38:28 s#18430.1

srwxrwxrwx  1 oracle11g oinstall    0 2014-09-09 11:38:28 s#18430.2

srwxrwxrwx  1 oracle11g oinstall    0 2014-07-15 09:33:42 s#5027.1

srwxrwxrwx  1 oracle11g oinstall    0 2014-07-15 09:33:42 s#5027.2

srwxrwxrwx  1 oracle11g oinstall    0 2014-09-09 11:38:28 sEXTPROC1521

-- 对比前面的发现s#5027.*这两个文件,可能是某一次死机或者断电,没有清除留下的文件。据对方讲里面很多文件,使用版本10.2.0.3,监听

-- 中断了许多次,估计是遇到bug之类的问题。

--首先移动文件。

$ mv s* laji/

# lsof | grep /var/tmp/.oracle

tnslsnr   18430 oracle11g   10u     unix 0x000001002550d680                53579 /var/tmp/.oracle/s#18430.1

tnslsnr   18430 oracle11g   11u     unix 0x000001002550d380                53581 /var/tmp/.oracle/sEXTPROC1521

tnslsnr   18430 oracle11g   12u     unix 0x000001002576c980                53583 /var/tmp/.oracle/s#18430.2

bash      18634 oracle11g  cwd       DIR                8,3      4096     472369 /var/tmp/.oracle

--奇怪,这些文件并没有标识delete。

--这个时候外面的用户是可以连上数据库的。

$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 28-NOV-2014 11:28:52

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hisdg)(PORT=1521)))

TNS-12541: TNS:no listener

TNS-12560: TNS:protocol adapter error

TNS-00511: No listener

Linux Error: 2: No such file or directory

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

TNS-12541: TNS:no listener

TNS-12560: TNS:protocol adapter error

TNS-00511: No listener

Linux Error: 2: No such file or directory

--可以发现报错。

$ lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 28-NOV-2014 11:29:46

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hisdg)(PORT=1521)))

TNS-12541: TNS:no listener

TNS-12560: TNS:protocol adapter error

TNS-00511: No listener

Linux Error: 2: No such file or directory

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

TNS-12541: TNS:no listener

TNS-12560: TNS:protocol adapter error

TNS-00511: No listener

Linux Error: 2: No such file or directory

--执行lsnrctl stop也一样。

--执行跟踪看看。

$  strace -f -o /tmp/aaa.txt lsnrctl status

--查看跟踪可以发现:

$ grep  '\/var\/tmp/\.oracle' /tmp/aaa.txt

20352 access("/var/tmp/.oracle", F_OK)  = 0

20352 chmod("/var/tmp/.oracle", 01777)  = 0

20352 access("/var/tmp/.oracle/s#18430.2", F_OK) = -1 ENOENT (No such file or directory)

20352 access("/var/tmp/.oracle/sEXTPROC1521", F_OK) = -1 ENOENT (No such file or directory)

$ grep  "No such file or directory" /tmp/aaa.txt

20352 connect(5, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)

20352 connect(5, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)

20352 access("/var/tmp/.oracle/s#18430.2", F_OK) = -1 ENOENT (No such file or directory)

20352 access("/var/tmp/o/s#18430.2", F_OK) = -1 ENOENT (No such file or directory)

20352 access("/var/tmp/.oracle/sEXTPROC1521", F_OK) = -1 ENOENT (No such file or directory)

20352 access("/var/tmp/o/sEXTPROC1521", F_OK) = -1 ENOENT (No such file or directory)

--很明显就是这些文件给删除了。如何解决呢?

1.方法1:

直接kill -9 tnslsnr 进程,在重启监听就可以了。

2.方法2:

$ file laji/s#18430.1

laji/s#18430.1: socket

--这个是socker类型文件,能否重新建立呢?查询相关文档。必须使用root用户建立

# cd /var/tmp/.oracle

# mksock sEXTPROC1521

# mksock s#18430.2

# mksock s#18430.1

# ls -l

total 4

drwxr-xr-x  2 oracle11g oinstall 4096 2014-11-28 11:27:34 laji

srwxr-xr-x  1 root      root        0 2014-11-28 11:48:30 s#18430.1

srwxr-xr-x  1 root      root        0 2014-11-28 11:47:09 s#18430.2

srwxr-xr-x  1 root      root        0 2014-11-28 11:46:56 sEXTPROC1521

# chown oracle:oinstall s*

# chmod 777 s*

# ls -l

total 4

drwxr-xr-x  2 oracle11g oinstall 4096 2014-11-28 11:27:34 laji

srwxrwxrwx  1 oracle    oinstall    0 2014-11-28 11:48:30 s#18430.1

srwxrwxrwx  1 oracle    oinstall    0 2014-11-28 11:47:09 s#18430.2

srwxrwxrwx  1 oracle    oinstall    0 2014-11-28 11:46:56 sEXTPROC1521

$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 28-NOV-2014 11:50:09

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hisdg)(PORT=1521)))

TNS-12541: TNS:no listener

TNS-12560: TNS:protocol adapter error

TNS-00511: No listener

Linux Error: 111: Connection refused

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

TNS-12541: TNS:no listener

TNS-12560: TNS:protocol adapter error

TNS-00511: No listener

Linux Error: 111: Connection refused

--依旧不行。

# lsof | grep /var/tmp/.oracle  --加一个head

COMMAND     PID      USER   FD      TYPE             DEVICE      SIZE       NODE NAME

tnslsnr   18430 oracle11g   10u     unix 0x000001002550d680                53579 /var/tmp/.oracle/s#18430.1

tnslsnr   18430 oracle11g   11u     unix 0x000001002550d380                53581 /var/tmp/.oracle/sEXTPROC1521

tnslsnr   18430 oracle11g   12u     unix 0x000001002576c980                53583 /var/tmp/.oracle/s#18430.2

--很明显方法2不行。应该这些文件与原来建立联系,自己建立的没有关联。移动回来。

$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 28-NOV-2014 12:03:25

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hisdg)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production

Start Date                09-SEP-2014 11:38:28

Uptime                    80 days 0 hr. 24 min. 56 sec

Trace Level               off

Security                  ON: Password or Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle11g/product/11.2.0/db_2/network/admin/listener.ora

Listener Log File         /u01/app/oracle11g/diag/tnslsnr/hisdg/listener/alert/log.xml

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxxxx)(PORT=1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Services Summary...

Service "b.com" has 1 instance(s).

Instance "test", status READY, has 1 handler(s) for this service...

Service "test.com" has 2 instance(s).

Instance "test", status UNKNOWN, has 1 handler(s) for this service...

Instance "test", status READY, has 1 handler(s) for this service...

Service "testXDB.com" has 1 instance(s).

Instance "test", status READY, has 1 handler(s) for this service...

Service "test_DGB.com" has 2 instance(s).

Instance "test", status UNKNOWN, has 1 handler(s) for this service...

Instance "test", status READY, has 1 handler(s) for this service...

Service "test_DGMGRL.com" has 1 instance(s).

Instance "test", status UNKNOWN, has 1 handler(s) for this service...

The command completed successfully

--看来以后删除文件,要先使用lsof确定这些文件是否处于打开状态。比如有些打开的文件,如果你删除了,这些空间并不会回收。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值