这两天测试oracle logmnr,中间遇到三个问题。一个是MACHINE_NAME 和 SESSION_INFO 显示为UNKNOWN的,后经测试发现是因为分析日志没有包含会话开始的日志,比如用户登陆很长时间了,中间已生成了几个归档日志,如果你分析的日志里没包含用户登陆所生成的这个归档日志,MACHINE_NAME 和 SESSION_INFO 就会显示为UNKNOWN,只需把包含该用户登陆信息的归档加入分析即可。
还有一个问题就是分析归档日志后查询出来的 SQL_REDO 字段显示的内容都是一些代码标识符,不是原始的SQL语句,只看这个语句没法看出这个SQL具体操作的实际内容。这个是由于分析归档的时候没有做生成数据字典的操作,生成语句类似如下:
exec dbms_logmnr_d.build('dict.ora','/oracle/file',dbms_logmnr_d.store_in_flat_file)。如果你追踪的表是之前生成数据字典之后创建或修改的,那么在做日志分析之前数据字典就需要重新生成,不然看到的就是一些奇怪标识符的SQL。
另外还遇到一个问题,我plsql的命令窗口分析日志后查询出来的session_info内容为:login_username=TEST client_info= OS_username=Administrator Machine_name=WORKGROU,session_info显示信息不全,只有80个字符,后面字段明显是被截断了,网上搜索半天居然没查到一个有类似的案例。后来查询了下length(session_info)长度为161,证明内容不止80个字符的,然后运行
set linesize 300
col session_info format a180
结果查询出来的内容就显示完整了,居然是这个命令行下默认显示长度问题。