一般我们需要查看alert_SID.log文件的时候都是直接登录操作系统通过文本编辑器来查看,不过现在所在单位比较奇葩,数据库是给dba权限的,但不允许登录数据库所在的小机。没办法,工作还得做,只能曲线救国一下了。
首先查询V$DIAG_INFO视图得到文件所在路径:
select value from V$DIAG_INFO where name='Diag Trace';
然后针对查询出来的路径创建一个DIRECORY:
create directory ALERT_LOG_PATH as '/u01/oracle11g/diag/rdbms/orcl/orcl/trace';
创建一个外部表:
CREATE TABLE ALERT_LOG (trace_line VARCHAR2( 4000))
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER DEFAULT DIRECTORY ALERT_LOG_PATH
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE NOBADFILE NODISCARDFILE NOLOGFILE FIELDS MISSING FIELD VALUES ARE NULL
REJECT ROWS WITH ALL NULL FIELDS
(trace_line CHAR(4000 ))
)
LOCATION ( 'alert_orcl.log')
);
这样就可以通过ALERT_LOG表读取文件内容了,有时候需要做一个10046的trace也可以如法炮制。