本文介紹了通過使用oracle外部表的方式訪問oracle告警日誌。
1、創建用戶、賦予權限
SQL>create user checker identified by password default tablespace users quota unlimited on users;
SQL>grant connect,resource,create any directory to checker;
2、創建目錄對象
SQL>show parameter background_dump_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest string /u01/app/oracle/orcl/bdump
SQL> conn checker/password
SQL>create directory bdump as '/u01/app/oracle/orcl/bdump';
3、創建外部表
SQL> create table alert_log( text varchar2(400) )
organization external (type oracle_loader
default directory bdump
access parameters (records delimited by newline)
location('alert_orcl.log'));
4、使用外部表查看告警日誌
SQL> select text from alert_log; //查看全部的告警日誌
SQL>select text from alert_log where text like 'ORA-%'; //查看告警日誌中的錯誤信息
SQL> select * from (select text from alert_log order by rowid desc) where rownum <50; //查看最近50行告警日誌。
擴展知識:
外部表就像是在數據庫中創建的一個視圖,數據庫中只存儲表的元數據,真正的記錄存放在操作系統上。對於外部表的使用有一些限制:
1、只能讀取外部表中的內容,不能對外部表進行DML操作,不能爲其創建索引。
2、使用外部表必須使用目錄對象。
3、同一個操作系統數據文件只能使用一種分隔符,如逗號或分號。
4、刪除外部表時應遵循先刪除所有的外部表然後再刪除目錄對象的原則,如果直接刪除目錄對象,系統不會自動檢查它上面外部表,可能會造成外部表不可用。可以通過查詢dba_external_locations查詢系統當前所有的目錄對象以及相關的外部表,還會查詢出這些外部表所對應的操作系統文件的名字。
來源:http://www.chinaoug.net/space.php?uid=356676&do=blog&id=1843