2013-10-23 18 views
0

Oracle的JDBC驅動程序在11.2中的新功能,從而它可以記錄所有的網絡數據包,但在日誌文件中的每個數據包顯示爲一個單獨的十六進制轉儲,格式如下:搜索十六進制字符串轉儲

Oct 23, 2013 9:14:46 AM oracle.net.ns.Packet receive 
TRACE_20: 11EEA7F0 Debug: type=6, length=1410, flags=0 
65 20 43 6F 72 70 6F 72  |e.Corpor| 
6F 6E 2E 20 43 6F 70 79  |on..Copy| 
72 69 67 68 74 20 32 30  |right.20| 
30 33 20 4F 72 61 63 6C  |03.Oracl| 
01 00 01 03     |.... | 

如何在日誌文件中搜索字符串,因爲它們可能會跨越日誌文件中的多行?

+0

在您放下這個兔子洞之前,請檢查您是否正在運行另一個應用程序實例,或者其他人正在連接到數據庫,並且同時更改數據!這就是我的情況。 –

回答

0
sed -e :a -e '$!N;s/\n [0-9A-F][0-9A-F] [0-9A-F ][0-9A-F ] [0-9A-F ][0-9A-F ] [0-9A-F ][0-9A-F ] [0-9A-F ][0-9A-F ] [0-9A-F ][0-9A-F ] [0-9A-F ][0-9A-F ] [0-9A-F ][0-9A-F ]  |\([^|]\+\)|/\1/;ta' -e 'P;D' logfile 

在Linux上,將轉換的十六進制轉儲logfile成字符串(與控制字符和空格保存爲週期),讓其他線路不變。因此,您可以將其重定向到一個文件或將其傳送到您最喜歡的傳呼機中,例如減。您可能需要考慮到控制字符和空格顯示爲搜索多個字符串時的時間段這一事實。

對於非GNU sed,可能需要將\+更改爲*

相關問題