使用Oracle外部表來查詢分析警告日誌

2022-08-25 12:00:27 字數 2437 閱讀 7924

oracle中的警告日誌按照時間發生順序記錄了oracle資料庫出現的內部錯誤,以便通過這個警告日誌提醒使用者,使用者通過查詢警告日誌來分析oracle出現的內部錯誤,來解決和防範oracle的致命錯誤。監控警告日誌是每個dba日常必需的工作,警告日誌存放在初始化引數檔案中有bdump引數指定位置上。

oracle dba可以利用外部表特性直接使用sql來查詢警告日誌,通過執行下面的指令碼,來建立乙個儲存過程。通過執行這個儲存過程,可以讀取警告日誌,並且把警告日誌存放到資料庫中的一張稱為alert_log_external的表中,然後通過檢索這張表來查詢警告日誌記錄。

程式指令碼:

createorreplaceprocedureexternal_alert_logis

path_bdumpvarchar2(4000);

name_alertvarchar2(100);

begin

selectvalueintopath_bdump

fromsys.v_$parameter

wherename= 'background_dump_dest';

select'alert_' ||value|| '.log'

intoname_alert

fromsys.v_$parameter

wherename= 'db_name';

executeimmediate'create or replace directory background_dump_dest_dir as ''' ||

path_bdump || '''';

executeimmediate'create table alert_log_external' ||

'(line varchar2(4000)) ' || 'organization external ' ||

'(type oracle_loader ' ||

'default directory background_dump_dest_dir ' ||

'access parameters ( ' ||

' records delimited by newline ' || ' nobadfile ' ||

' nologfile ' || ' nodiscardfile ' ||

' fields terminated by ''#$-ui$x''' ||

' missing field values are null ' || ' (line) ' ||

' ) ' || ' location (''' || name_alert || ''') )' ||

'reject limit unlimited';

end;

執行這個指令碼後,執行select * from alert_log_external,來查詢結果,由於這個過程要使用外部表而且要動態建立結果表,所以要求執行這段程式的使用者具有create any tablecreate any directory許可權,而且要擁有訪問sys.v_$parameter檢視的許可權。每次執行之後想再次執行時要首先執行drop table alert_log_external命令,刪除存放結果的表,以便生成新的警告日誌資訊。

oracle外部表的使用 使用外部表

oracle外部表的使用 該執行緒包含一些使用外部表的有用技巧。使用外部表 1.將表指向外部檔案。如果外部檔案中的資料被更改,則表中的資料也將發生變化。2.外部表可以按照與聯接,檢視中的標準表相同的方式進行查詢.並可以使用外部表上的所有型別的功能。3.獲取有關外部表的資訊,查詢 user exter...

oracle 外部表使用詳解

外部表,相對於資料庫內部表來說的,意思是將作業系統檔案作為乙個資料庫,資料從檔案而來。我把它理解成類似指標的東西,告訴使用者,這個表的資料是從哪些檔案來的。語法如下 create table table1 id varchar2 4 name varchar2 20 organization ext...

使用Oracle外部表的五個限制

外部表是指不在資料庫中的表,如作業系統上的乙個按一定格式分割的文字檔案或者其他型別的表。這個外部表對於oracle資料庫來說,就好像是一張檢視,在資料庫中可以像試圖一樣進行查詢等操作。這個試圖允許使用者在外部資料上執行任何的sql語句,而不需要先將外部表中的資料裝載進資料庫中。不過需要注意是,外部資...