[20181219]記錄自己工作中的錯誤.txt

lfree發表於2018-12-20

[20181219]記錄自己工作中的錯誤.txt


--//本來想截獲標準輸入,標準輸出,標準錯誤更好顯示輸出資訊.測試時遇到一些問題,做1個記錄.


1.環境:

SCOTT@book> @ ver1

PORT_STRING                    VERSION        BANNER

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

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


SCOTT@book> @ spid

       SID    SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50

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

       274          9 64263                    DEDICATED 64264       21          5 alter system kill session '274,9' immediate;

--//sqlplus程式號64263.連線資料庫程式號是64264.


2.分析:

$ ps -ef | grep 6426[3]

oracle   64263 64259  0 17:05 pts/2    00:00:00 /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/sqlplus

oracle   64264 64263  0 17:05 ?        00:00:00 oraclebook (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))


$ ls -l /proc/64263/fd

total 0

lrwx------ 1 oracle oinstall 64 2018-12-19 17:05:04 0 -> /dev/pts/2

lrwx------ 1 oracle oinstall 64 2018-12-19 17:06:52 1 -> /dev/pts/2

lrwx------ 1 oracle oinstall 64 2018-12-19 17:06:22 2 -> /dev/pts/2

lr-x------ 1 oracle oinstall 64 2018-12-19 17:06:52 3 -> /u01/app/oracle/product/11.2.0.4/dbhome_1/sqlplus/mesg/sp1us.msb

lr-x------ 1 oracle oinstall 64 2018-12-19 17:06:52 4 -> /u01/app/oracle/product/11.2.0.4/dbhome_1/sqlplus/mesg/sp2us.msb

lr-x------ 1 oracle oinstall 64 2018-12-19 17:06:52 5 -> /u01/app/oracle/product/11.2.0.4/dbhome_1/sqlplus/mesg/cpyus.msb

lr-x------ 1 oracle oinstall 64 2018-12-19 17:06:52 6 -> /u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/mesg/ocius.msb

l-wx------ 1 oracle oinstall 64 2018-12-19 17:06:52 8 -> pipe:[58683104]

lr-x------ 1 oracle oinstall 64 2018-12-19 17:06:52 9 -> pipe:[58683105]


# lsof -p 64263 -nnn | egrep "5868310[45]"

sqlplus 64263 oracle    8w  FIFO    0,8      0t0  58683104 pipe

sqlplus 64263 oracle    9r  FIFO    0,8      0t0  58683105 pipe

--//控制程式碼9對應讀.9對應寫.


$ ls -l /proc/64264/fd

total 0

lr-x------ 1 oracle oinstall 64 2018-12-19 17:07:26 0 -> /dev/null

l-wx------ 1 oracle oinstall 64 2018-12-19 17:07:26 1 -> /dev/null

l-wx------ 1 oracle oinstall 64 2018-12-19 17:07:26 10 -> pipe:[58683105]

l-wx------ 1 oracle oinstall 64 2018-12-19 17:07:26 2 -> /dev/null

lrwx------ 1 oracle oinstall 64 2018-12-19 17:07:26 256 -> /mnt/ramdisk/book/system01.dbf

lr-x------ 1 oracle oinstall 64 2018-12-19 17:07:26 3 -> /dev/null

lr-x------ 1 oracle oinstall 64 2018-12-19 17:07:26 4 -> /u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/mesg/oraus.msb

lr-x------ 1 oracle oinstall 64 2018-12-19 17:07:26 5 -> /proc/64264/fd

lr-x------ 1 oracle oinstall 64 2018-12-19 17:07:26 6 -> /dev/zero

lr-x------ 1 oracle oinstall 64 2018-12-19 17:07:26 7 -> pipe:[58683104]


# lsof -p 64264 -nnn | egrep "5868310[45]"

oracle  64264 oracle    7r  FIFO    0,8       0t0  58683104 pipe

oracle  64264 oracle   10w  FIFO    0,8       0t0  58683105 pipe

--//你可以發現正好與上面相對,我使用本地連線,這兩個程式間相互通訊是使用管道,如果你使用網路,使用socket.大家可以自行測試.


3.如果你使用 cat 管道檔案,就可能導致連線無法在使用.


$ cat /proc/64263/fd/8

^c


--//再回到資料庫連線會話,無論打什麼命令都是無法響應.


$ ps -elf | egrep "6426[34]|CM[D]"

F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD

0 S oracle   64263 64259  0  80   0 - 17969 pipe_w 17:05 pts/2    00:00:00 /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/sqlplus

0 S oracle   64264 64263  0  80   0 - 61250 pipe_w 17:05 ?        00:00:00 oraclebook (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2285829/,如需轉載,請註明出處,否則將追究法律責任。

相關文章