利用外部表读取告警日志文件 [转帖]_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3757 | 回复: 0   主题: 利用外部表读取告警日志文件 [转帖]        下一篇 
wayne
注册用户
等级:中校
经验:1690
发帖:221
精华:0
注册:2011-7-21
状态:离线
发送短消息息给wayne 加好友    发送短消息息给wayne 发消息
发表于: IP:您无权察看 2011-9-8 21:17:47 | [全部帖] [楼主帖] 楼主

数据库的告警日志以文本的格式保存到文件系统中,虽然可以很方便的通过操作系统命令进行查看,而且11g中Oracle甚至还提供了专门的adrci工具,但是对于只能通过SQLPLUS或者其他查询工具连接到数据库的人而言,还是非常不方便。

不过其实这个问题可以很容易的通过外部表的方式解决。最简单的办法就是将alert文件中的每一行记录都当做表中一个VARCHAR2(4000)类型列的一行记录,这样就可以轻松的通过SQL的方式来访问告警日志了。

在创建外部表之前,需要创建一个DIRECTORY,这个目录的位置就是background_dump_dest初始化参数指定的位置。

SQL> show parameter background_dump_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest string D:ORACLEPRODUCTADMINYTK102BDUMP
SQL> create directory d_alert as 'D:ORACLEPRODUCTADMINYTK102BDUMP';


目录已创建。

一旦目录创建成功后,就可以创建外部表了:

SQL> create table t_alert
2 (text varchar2(1000)
3 )
4 organization external
5 (type oracle_loader
6 default directory d_alert
7 access parameters
8 (records delimited by newline
9 fields (text (1:255) char))
10 location ('alert_ytk102.log'));


表已创建。

SQL> select * from t_alert where rownum < 10;
TEXT
-----------------------------------------------------------------------------
Dump file d:oracleproductadminytk102bdumpalert_ytk102.log
Sat Dec 25 15:55:43 2010
ORACLE V10.2.0.5.0 - Production vsnsta=0
vsnsql=14 vsnxtr=3
Windows NT Version V6.1
CPU : 4 - type 586, 2 Physical Cores
Process Affinity : 0x00000000
Memory (Avail/Total): Ph:1594M/2995M, Ph+PgF:4318M/5989M, VA:1911M/2047M
Sat Dec 25 15:55:43 2010


已选择9行。

现在已经可以正常访问告警日志了,为了确认外部表的加载没有错误,可以检查D_ALERT目录下的加载日志:

D:>cd D:oracleproductadminytk102bdump
D:oracleproductadminytk102bdump>more T_ALERT_21436_532.log


日志文件打开于 08/25/11 00:15:54

表 T_ALERT 的字段定义
记录格式 DELIMITED BY NEWLINE
文件中的数据与该平台的 endianness 格式相同
接受带有空字段的行

数据源中的字段:

TEXT CHAR (255)


记录位置 (1, 255)
像 SQL 加载程序一样修剪空白




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论