用外部表格的方式查詢當天資料庫alert記錄檔中當天所有的ora-錯誤資訊

來源:互聯網
上載者:User

外部表格:表中的資料以作業系統檔案的方式來存放,現在表中的資料不是放在資料庫中了而是放在作業系統上面,Oracle提供了一種直接讀取外部資料的機制。

外部表格好處:1.資料二次開發

           2.大資料量遷移

           3.充分利用作業系統空間

           4.不佔用資料庫空間

           5.支援標準SQL條件檢索

外部表格也需要目錄對象的支援,通過目錄對象可以知道從哪個目錄讀取文本資料

LEO1@LEO1>create directory alert as'/u02/app/oracle/diag/rdbms/leo1/LEO1/trace';

Directory created.

這是Oracle 11g警示日誌目錄

grant read,write on directory alert topublic;            對這個目錄對象授予讀/寫入權限,並授予所有使用者

LEO1@LEO1>select * from dba_directories;

OWNER         DIRECTORY_NAME                 DIRECTORY_PATH

--------------------------------------------------------------------------------------------------------------

SYS             EXP_DUMP                      /home/oracle/exp_dump

SYS            XMLDIR                         /u02/app/oracle/product/11.2.0/db_1/rdbms/xml

SYS             ALERT                        /u02/app/oracle/diag/rdbms/leo1/LEO1/trace

SYS             DATA_PUMP_DIR                /u02/app/oracle/admin/LEO1/dpdump/

SYS             ORACLE_OCM_CONFIG_DIR       /u02/app/oracle/product/11.2.0/db_1/ccr/state

我們下面就是Oracle警示記錄檔當作資料庫的一個外部資料源來訪問,我們使用外部表格的方式抽取alert日誌資料,然後使用標準SQL語句來檢索“ora-錯誤資訊”。

下面我們就來建立一個外部表格

LEO1@LEO1>create table leo_alert(content varchar2(4000))     alert日誌資料量多因此字串設定的大一點

organization external

(

type oracle_loader                                       如果你設定的是oracle_datapump請修改為loader

default directory alert

access parameters (

records delimited by newline                              每條記錄用換行區分

nobadfile                                               沒有壞檔案,丟棄檔案,記錄檔

nodiscardfile

nologfile

)

location ('alert_LEO1.log')                                 載入警示記錄檔內容

); 2    3    4   5    6    7   8    9   10  11   12   13  

LEO1@LEO1>select count(*) fromleo_alert;                  一共7198條

  COUNT(*)

----------------

     7198

我們抽取其中10條ORA-開頭的錯誤記錄顯示出來

LEO1@LEO1>select * from leo_alert wherecontent like '%ORA-%' and rownum<=10;

CONTENT

------------------------------------------------------------------------------------------------------------------------------------------------------------------

ORA-210 signalled during: create tablespacetest datafile '/u02/app/oracle/oradata/LEO1/test01.dbf' size 10m autoextendoff...

ORA-00210: cannot open the specifiedcontrol file

ORA-00202: control file:'/u02/app/oracle/oradata/LEO1/control01.ctl'

ORA-27041: unable to open file

ORA-00210: cannot open the specifiedcontrol file

ORA-00202: control file:'/u02/app/oracle/oradata/LEO1/control01.ctl'

ORA-27041: unable to open file

ORA-00210: cannot open the specifiedcontrol file

ORA-00202: control file:'/u02/app/oracle/oradata/LEO1/control01.ctl'

ORA-27037: unable to obtain file status

10 rows selected.

小結:這裡需要注意幾個問題,我們在建立外部表格的時候需要設定沒有壞檔案,丟棄檔案,記錄檔參數否則會報錯ORA-29913: error in executing ODCIEXTTABLEOPEN callout。


sql*loader     exp/imp       expdp/impdp       organization_external       direct



Leonarding
2013.6.22
北京&summer
分享技術~成就夢想
Blog:www.leonarding.com

 

本文出自 “leonarding Blog” 部落格,請務必保留此出處http://leonarding.blog.51cto.com/6045525/1227492

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.