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 table和create 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語句,而不需要先將外部表中的資料裝載進資料庫中。不過需要注意是,外部資...