利用外部表讀取告警日誌檔案

yangtingkun發表於2011-08-24

資料庫的告警日誌以文字的格式儲存到檔案系統中,雖然可以很方便的透過作業系統命令進行檢視,而且11gOracle甚至還提供了專門的adrci工具,但是對於只能透過SQLPLUS或者其他查詢工具連線到資料庫的人而言,還是非常不方便。

 

 

不過其實這個問題可以很容易的透過外部表的方式解決。最簡單的辦法就是將alert檔案中的每一行記錄都當做表中一個VARCHAR2(4000)型別列的一行記錄,這樣就可以輕鬆的透過SQL的方式來訪問告警日誌了。

在建立外部表之前,需要建立一個DIRECTORY,這個目錄的位置就是background_dump_dest初始化引數指定的位置。

SQL> show parameter background_dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest                 string      D:\ORACLE\PRODUCT\ADMIN\YTK102\BDUMP
SQL> create directory d_alert as 'D:\ORACLE\PRODUCT\ADMIN\YTK102\BDUMP';

目錄已建立。

一旦目錄建立成功後,就可以建立外部表了:

SQL> create table t_alert
  2  (text varchar2(1000)
  3  )
  4  organization external
  5  (type oracle_loader
  6  default directory d_alert
  7  access parameters
  8  (records delimited by newline
  9  fields (text (1:255) char))
 10  location ('alert_ytk102.log'));

表已建立。

SQL> select * from t_alert where rownum < 10;

TEXT
-----------------------------------------------------------------------------
Dump file d:\oracle\product\admin\ytk102\bdump\alert_ytk102.log
Sat Dec 25 15:55:43  2010
ORACLE V10.2.0.5.0 - Production vsnsta=0
vsnsql=14 vsnxtr=3
Windows NT Version V6.1
CPU                 : 4 - type 586, 2 Physical Cores
Process Affinity    : 0x00000000
Memory (Avail/Total): Ph:1594M/2995M, Ph+PgF:4318M/5989M, VA:1911M/2047M
Sat Dec 25 15:55:43  2010

已選擇9行。

現在已經可以正常訪問告警日誌了,為了確認外部表的載入沒有錯誤,可以檢查D_ALERT目錄下的載入日誌:

D:\>cd D:\oracle\product\admin\ytk102\bdump

D:\oracle\product\admin\ytk102\bdump>more T_ALERT_21436_532.log

 日誌檔案開啟於 08/25/11 00:15:54

T_ALERT 的欄位定義
 
記錄格式 DELIMITED BY NEWLINE
 
檔案中的資料與該平臺的 endianness 格式相同
 
接受帶有空欄位的行

  資料來源中的欄位:

    TEXT                            CHAR (255)
     
記錄位置 (1, 255)
     
SQL 載入程式一樣修剪空白

 

 

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

相關文章