【翻譯自mos文章】 在錯誤的從os級別remove掉 trace file 之後,怎麽找到該trace file的內容?
阿新 • • 發佈:2017-05-22
否則 lin reat -m evel data node name rate des
在錯誤的從os級別remove掉 trace file 之後,怎麽找到該trace file的內容?
Oracle Database - Enterprise Edition - Version 8.1.7.4 to 11.2.0.1.0 [Release 8.1.7 to 11.2]
Generic UNIX
Generic Linux
目標:
當錯誤的從從os級別remove(這個remove是指rm)掉 trace file 之後,oracle進程的trace file 是不會被又一次創建的。
那怎麽看到這些trace file的內容?
Bug 8367394: A NEW TRACE FILE IS NOT BEING CREATED IF THE INITIAL ONE WAS REMOVED
給出了。 REG 3,1 767 20728692 /bdump/v10204_dbw0_11283.trc
從上面的結果中,我們能夠看到fd 為2。例如以下也能驗證fd 為2
ls -lA /proc/11283/fd | grep dbw0
l-wx------ 1 oracle dba-64 Mar 25 16:24 2 -> /bdump/v10204_dbw0_11283.trc
從os級別 remove掉trace file 。fd 依舊存在,僅僅是file 被delete掉了。
ls -lA /proc/11283/fd | grep dbw0
l-wx------ 1 oracle dba-64 Mar 25 16:24 2 -> /bdump/v10204_dbw0_11283.trc (deleted)
這個fd (file descriptor)在它被關閉 或者 進程被重新啟動之前 是存在的。
你能夠訪問它的內容:
cat /proc/11283/fd/2 > /tmp/v10204_dbw0_11283.trc
在錯誤的從os級別remove掉 trace file 之後,怎麽找到該trace file的內容?
參考原文:
Oracle Database - Enterprise Edition - Version 8.1.7.4 to 11.2.0.1.0 [Release 8.1.7 to 11.2]
Generic UNIX
Generic Linux
目標:
當錯誤的從從os級別remove(這個remove是指rm)掉 trace file 之後,oracle進程的trace file 是不會被又一次創建的。
那怎麽看到這些trace file的內容?
解決方式:
Bug 8367394: A NEW TRACE FILE IS NOT BEING CREATED IF THE INITIAL ONE WAS REMOVED
給出了。
--->註意:我看了一下該bug的workground,是restart instance。
在以下的樣例中,請註意從11g開始,trace file的位置不在bdump 下。而是在{ADR_HOME}/trace/下。
當進程是alive的時候,進程不會在 trace file上運行close()函數。
進程依舊持有 指向trace file 的 file descriptor。
trace file 的名字包含進程的pid,
因此,除非進程被重新啟動,否則我們不能關閉 file descriptor,也不能創建一個用新文件名稱或者老文件名稱的新文件
這並不意味著,在緊急情況下,你不能訪問該trace file。
當該trace file 被delete掉後。僅僅要file descriptor依舊open,你就能夠獲得該文件的內容。該內容依舊被正常寫。
通過例如以下方法經過file descriptor 來訪問 file
ps -ef|grep v10204|grep dbw0
oracle 11283 1 0 16:23 ? 00:00:00 ora_dbw0_v10204
lsof -p 11283|grep dbw0
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
oracle 11283 oracle 2
從上面的結果中,我們能夠看到fd 為2。例如以下也能驗證fd 為2
ls -lA /proc/11283/fd | grep dbw0
l-wx------ 1 oracle dba-64 Mar 25 16:24 2 -> /bdump/v10204_dbw0_11283.trc
從os級別 remove掉trace file 。fd 依舊存在,僅僅是file 被delete掉了。
ls -lA /proc/11283/fd | grep dbw0
l-wx------ 1 oracle dba-64 Mar 25 16:24 2 -> /bdump/v10204_dbw0_11283.trc (deleted)
這個fd (file descriptor)在它被關閉 或者 進程被重新啟動之前 是存在的。
你能夠訪問它的內容:
cat /proc/11283/fd/2 > /tmp/v10204_dbw0_11283.trc
【翻譯自mos文章】 在錯誤的從os級別remove掉 trace file 之後,怎麽找到該trace file的內容?