如何使用外部表访问监听日志_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2470 | 回复: 0   主题: 如何使用外部表访问监听日志        下一篇 
dwx8023
注册用户
等级:上尉
经验:612
发帖:114
精华:0
注册:2011-11-8
状态:离线
发送短消息息给dwx8023 加好友    发送短消息息给dwx8023 发消息
发表于: IP:您无权察看 2015-3-31 18:01:24 | [全部帖] [楼主帖] 楼主

使用外部表加载监听日志信息,观察并分析用户连接数变化趋势,按照eygle循序渐进oracle的教程一步步进行:

测试使用外部表先创建目录:

connect  / as sysdba
create(replace) directory sqldr as 'E:\app\john.tam\oradata\sqldr';
SQL> select * from dba_directories where directory_name = 'SQLDR';
OWNER DIRECTORY_ DIRECTORY_PATH
------------------------------ ---------- ------------------------------
SYS SQLDR E:\app\john.tam\oradata\sqldr


然后可以创建外部表了,下面是流程:

创建指向监听器日志目录的Driectory:

 SQL> select * from dba_directories where directory_name = 'SQLDR';
OWNER DIRECTORY_ DIRECTORY_PATH
------------------------------ ---------- ------------------------------
SYS SQLDR E:\app\john.tam\oradata\sqldr
SQL> create or replace directory LISTENER_LOG
2 as 'E:\app\john.tam\product\11.2.0\dbhome_1\NETWORK\log'
3 /
SQL> select * from dba_directories where DIRECTORY_NAME='LISTENER_LOG';
OWNER DIRECTORY_ DIRECTORY_PATH
------------------------------ ---------- ------------------------------
SYS LISTENER_L E:\app\john.tam\product\11.2.0
OG \dbhome_1\NETWORK\log


创建外部表:
创建指向监听器日志的外部表:

 SQL> CREATE TABLE listener_log(text VARCHAR2(4000))
2 ORGANIZATION EXTERNAL (
3 TYPE oracle_loader
4 DEFAULT DIRECTORY listener_log
5 ACCESS PARAMETERS (
6 RECORDS DELIMITED BY NEWLINE
7 NOBADFILE
8 NOLOGFILE
9 NODISCARDFILE
10 )
11 LOCATION ('listener.log')
12 )
13 REJECT LIMIT UNLIMITED
14 /
Table created.


查询外部表
现在可以通过SQL查询和访问外部表的数据了:(监听日志共190000行,但12月份的信息都有19000以上行)
SQL> set pagesize 99

SQL> select * from listener_log where rownum < 12;

select * from listener_log where rownum < 12

*

ERROR at line 1:

ORA-29913: error in executing ODCIEXTTABLEFETCH callout

ORA-29400: data cartridge error

KUP-04020: found record longer than buffer size supported, 524288, in

E:\app\john.tam\product\11.2.0\dbhome_1\NETWORK\log\listener.log

数据量太大,表内容不能显示。
其实这是因为导入的txt文本没用按格式换行。系统默认一行来处理,数据量当然太大

现抽取10年12月1日的信息生成表:
创建指向监听器日志目录的Driectory:

SQL> create or replace directory LISTENER121_LOG
  2 as 'E:\app\john.tam\product\11.2.0\dbhome_1\NETWORK\log'
  3 /

SQL> select * from dba_directories where DIRECTORY_NAME='LISTENER121_LOG';

OWNER DIRECTORY_ DIRECTORY_PATH
------------------------------ ---------- ------------------------------
SYS LISTENER_L E:\app\john.tam\product\11.2.0
                              OG \dbhome_1\NETWORK\log

创建外部表:
创建指向监听器日志的外部表:
SQL> CREATE TABLE listener_log(text VARCHAR2(4000))

2 ORGANIZATION EXTERNAL (
3 TYPE oracle_loader
4 DEFAULT DIRECTORY listener121_log
5 ACCESS PARAMETERS (
6 RECORDS DELIMITED BY NEWLINE
7 NOBADFILE
8 NOLOGFILE
9 NODISCARDFILE
10 )
11 LOCATION ('listener121.log')
12 )
13 REJECT LIMIT UNLIMITED
14 /
Table created.


这次的查询就成功了。

--转自 北京联动北方科技有限公司




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