1.创建外部表所需的目录对象
BYS@ bys001>create or replace directory alert as '/home/oracle/' ;
Directory created.
BYS@ bys001>col directory_path for a15
BYS@ bys001>col owner for a10
BYS@ bys001>select * from dba_directories where directory_name like 'ALERT';
OWNER DIRECTORY_NAME DIRECTORY_PATH
---------- ------------------------------ ---------------
SYS ALERT /home/oracle/
2.创建外部表。
使用Oracle告警日志文件当作数据库的一个外部数据源来访问,我这里是把alert日志复制到了/home/oracle目录下。
然后用外部表的方式抽取alert日志数据,然后使用SQL语句来检索“ora-错误信息”。
create table test_alert(content varchar2(4000))
organization external
(type oracle_loader
default directory alert
access parameters(
records delimited by newline
nobadfile
nodiscardfile
nologfile)
location('alert_bys001.log'));
BYS@ bys001>select count(*) from test;
COUNT(*)
----------
1280000
3.查询
BYS@ bys001>select * from test_alert where content like '%ORA-%' and rownum<10;
CONTENT
----------------------------------------------------------------------------------------------------
ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 85.21% used
ORA-38701: Flashback database log 252 seq 1408 thread 1: "/backup/flashback_area/BYS001/flashback/o1_mf_8zdfsm83_.flb"
ORA-27072: File I/O error
ORA-38701: Flashback database log 252 seq 1409 thread 1: "/backup/flashback_area/BYS001/flashback/o1
_mf_8zdg3d06_.flb"
ORA-27072: File I/O error