我学oracle不久,领导让我试试水平,把不停产生的日志文件导入到数据库中在进行分析,输出分析结果,那日志文件时如下这样的:2009-11-17 8:47:35 192.168.1.94 No
2009-11-17 8:47:36 192.168.1.142 No
2009-11-17 8:47:42 192.168.1.142 Ok
2009-11-17 8:47:50 192.168.1.94 Ok
2009-11-17 8:48:11 192.168.1.94 No
2009-11-17 8:48:17 192.168.1.94 Ok
2009-11-17 8:48:32 192.168.1.94 No
2009-11-17 8:48:38 192.168.1.94 Ok
2009-11-17 8:50:09 192.168.1.142 No
2009-11-17 8:50:15 192.168.1.142 Ok 数据量还是比较大的,总共好几万条吧,我是这样设计的:造一个外部表跟这个日志文件关联上,然后每次将新添加进的数据insert进另一个表中(例如logtable),前面两项可以合并为一个date数据类型。
想问下每次insert是日志文件中新近进入的数据,那么就要每次得到logtable表中时间的max值了,看下数据就知道是按时间顺序排的,那么在logtable建一个索引是不是有助于得到这个max值呢,有没有更好的办法,其实max值就是logtable最后一条记录的时间值。
另外,要分析每个ip地址的中断时间,就是从状态no到ok的时间间隔,然后输出每个ip在一条内的中断时间间隔,可以根据设定,例如选择中断了10秒以上的输出。logtable跟另外一个记录ip地址信息的表外键相连,我有个笨办法一条条的分析每个ip地址在一天时间内的中断时间,但不知道有没有更好的办法,我想这么笨办法会不会数据量大了很慢。
一个题外的,我尽量的在oracle中把该做的部分做了,建立触发器,存储过程,索引等,vc直接调用就好,但我想用一个初始化过程将例如建立用户,建表,建触发器、存储过程、索引等全解决了,不用手动去oracle里用pl/sql写了,这也是想做的更好些,这块以前没涉及过不知道可不可行。
2009-11-17 8:47:36 192.168.1.142 No
2009-11-17 8:47:42 192.168.1.142 Ok
2009-11-17 8:47:50 192.168.1.94 Ok
2009-11-17 8:48:11 192.168.1.94 No
2009-11-17 8:48:17 192.168.1.94 Ok
2009-11-17 8:48:32 192.168.1.94 No
2009-11-17 8:48:38 192.168.1.94 Ok
2009-11-17 8:50:09 192.168.1.142 No
2009-11-17 8:50:15 192.168.1.142 Ok 数据量还是比较大的,总共好几万条吧,我是这样设计的:造一个外部表跟这个日志文件关联上,然后每次将新添加进的数据insert进另一个表中(例如logtable),前面两项可以合并为一个date数据类型。
想问下每次insert是日志文件中新近进入的数据,那么就要每次得到logtable表中时间的max值了,看下数据就知道是按时间顺序排的,那么在logtable建一个索引是不是有助于得到这个max值呢,有没有更好的办法,其实max值就是logtable最后一条记录的时间值。
另外,要分析每个ip地址的中断时间,就是从状态no到ok的时间间隔,然后输出每个ip在一条内的中断时间间隔,可以根据设定,例如选择中断了10秒以上的输出。logtable跟另外一个记录ip地址信息的表外键相连,我有个笨办法一条条的分析每个ip地址在一天时间内的中断时间,但不知道有没有更好的办法,我想这么笨办法会不会数据量大了很慢。
一个题外的,我尽量的在oracle中把该做的部分做了,建立触发器,存储过程,索引等,vc直接调用就好,但我想用一个初始化过程将例如建立用户,建表,建触发器、存储过程、索引等全解决了,不用手动去oracle里用pl/sql写了,这也是想做的更好些,这块以前没涉及过不知道可不可行。
create table logtable_ext(
logdate varchar2(20),
logtime varchar2(20),
ip varchar2(20),
status varchar2(5)
)
organization external(
type oracle_loader
default directory loganalyse_dir
access parameters(fields terminated by ' ')
location('log.txt')
)
reject limit unlimited怎么总是第一条记录第一列第一个字符乱码呢,上面的数据显示如下:LOGDATE LOGTIME IP STATUS
-------------------- -------------------- -------------------- ------
锘?009-11-17 8:47:35 192.168.1.94 No
2009-11-17 8:47:36 192.168.1.142 No
2009-11-17 8:47:42 192.168.1.142 Ok
2009-11-17 8:47:50 192.168.1.94 Ok
2009-11-17 8:48:11 192.168.1.94 No
2009-11-17 8:48:17 192.168.1.94 Ok
2009-11-17 8:48:32 192.168.1.94 No
2009-11-17 8:48:38 192.168.1.94 Ok
2009-11-17 8:50:09 192.168.1.142 No
2009-11-17 8:50:15 192.168.1.142 Ok总是那个乱码,怎么回事呢