Oracle 数据库采用外部表监控查看分析 alert 告警
一、外部表相关参数说明
1、organization external
关键字,表明定义的表为外部表。
2、type
外部表的类型
oracle_loader
定义外部表的缺省方式,只能只读方式实现文本数据的装载。
oracle_datapump
支持对数据的装载与卸载,数据文件必须为二进制dump文件。可以从外部表提取数据装载到内部表,也可以从内部表卸载数据作为二进制文件填充到外部表。
3、default directory
缺省的目录指明了外部文件所在的路径
4、location
定义了外部表的位置
5、access parameters
描述如何对外部表进行访问
records
关键字后定义如何识别数据行
delimited by 'xxx'
换行符,常用newline定义换行,并指明字符集。对于特殊的字符则需要单独定义,如特殊符号,可以使用ox'十六位值',例如tab(/t)的十六位是9,则delimitedby0x'09';cr(/r)的十六位是d,那么就是delimitedby0x'0d'。
skip x
跳过x行数据,有些文件中第一行是列名,需要跳过第一行,则使用skip 1。
fields
关键字后定义如何识别字段,常用的如下:
fields:terminated by 'x'
字段分割符。
enclosed by 'x'
字段引用符,包含在此符号内的数据都当成一个字段。例如一行数据格式如:"abc","a""b,""c,"。使用参数terminated by ',' enclosed by '"'后,系统会读到两个字段,第一个字段的值是abc,第二个字段值是a"b,"c,。
lrtrim
删除首尾空白字符。
missing field values are null
某些字段空缺值都设为null。对于字段长度和分割符不确定且准备用作外部表文件,可以使用ultraedit、editplus等来进行分析测试,如果文件较大,则需要考虑将文件分割成小文件并从中提取数据进行测试。
6、fields terminated by ","
描述字段的终止符
7、reject limit unlimited
描述允许的错误数,此处为无限制
二、采用外部表监控查看分析 alert 告警日志
我们在自己的windows电脑下做的测试(数据库版本是19.3),测试外部表访问警告日志文件,首先需要创建一个Oracle目录(路径为告警alert日志所在位置)
create or replace directory alert_dir as 'C:\app\db_base\diag\rdbms\orcl\orcl\trace';
查看创建的目录
col directory_path for a50
select * from dba_directories;
给目录授权
grant read,write on directory alert_dir to public;
然后创建一个外部表
create table alert_log(text varchar2(4000))
organization external
(
type oracle_loader
default directory alert_dir
access parameters
(
records delimited by newline
nobadfile
nodiscardfile
nologfile
)
location('alert_orcl.log')
)
reject limit unlimited;
之后我们就可以通过外部表来查询警告日志的内容
select * from alert_log;
需要查看数据库中曾经出现过的ORA-错误,那么可以执行如下查询:
select * from alert_log where text like 'ORA-%';
SELECT * FROM alert_log where text LIKE 'Errors%';