sqlplus 之跟踪文件+警告文件
扫描二维码
随时随地手机看文章
oracle数据库(以及应用服务器和oracle应用)都是可以充分测量的,数据库中这种测量性反应在以下几个方面:
V$视图 大多数V$视图都包含"调试"信息
审计命令 可以指定数据库要记录哪些事件以便日后分析
资源管理器(dbms_resource_manager) 允许对数据库中的资源(cpu、I/O等)实现微管理
oracle"事件" 基于oracle事件,能让oracle生成所需的跟踪或诊断信息
dbms_trace 这是pl/sql引擎中的一个工具,它会全面的记录存储过程的调用树、所产生的异常,以及遇到的错误
数据库事件触发器 这些触发器(如on servererror)允许你监控和记录你觉得"意外"或非正常的情况
sql_trace 这个sql跟踪工具还可以采用一种扩展方式使用,即通过10046 oracle事件
请求的跟踪文件
一般跟踪文件都是因为设置了sql_trace=true生成的结果,或者通过10046事件使用扩展的跟踪工具生成的:
sys@ORCL>alter session set events 2 '10046 trace name context forever,level 12'; 会话已更改。
1.文件位置
不论使用sql_trace还是扩展的跟踪工具,oracle都会在数据库服务器主机的以下两个位置生成一个跟踪文件:
专用服务器连接--在user_dump_dest参数指定的目录中生成跟踪文件
共享服务器连接--在background_dump_dest参数指定的目录中生成跟踪文件
sys@ORCL>select name,value from v$parameter where name like '%dump_dest%' 2 / NAME -------------------------------------------------------------------------------- VALUE -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------------------------------- background_dump_dest d:appadministratordiagrdbmsorclorcltrace user_dump_dest d:appadministratordiagrdbmsorclorcltrace core_dump_dest d:appadministratordiagrdbmsorclorclcdump
如果无法访问v$parameter视图,还可以使用dbms_utility来访问大多数(但不是全部)参数的值:
least_privs@ORCL>declare 2 l_string varchar2(255); 3 l_dummy number; 4 begin 5 l_dummy := dbms_utility.get_parameter_value 6 ('background_dump_dest', l_dummy,l_string); 7 dbms_output.put_line('background:'||l_string); 8 l_dummy := dbms_utility.get_parameter_value 9 ('user_dump_dest',l_dummy,l_string); 10 dbms_output.put_line('user:'||l_string); 11 end; 12 / background:d:appadministratordiagrdbmsorclorcltrace user:d:appadministratordiagrdbmsorclorcltrace PL/SQL 过程已成功完成。
2.命名约定
文件名的第一部分是oracle_sid
文件名的第二部分是ora
跟踪文件名中的数字是专用服务器的进程id,可以从v$process视图中得到
因为,在实际中(假设使用专用服务器模式),需要访问四个视图:
v$parameter 查找user_dump_dest指定的跟踪文件位置
v$process 查找进程ID
v$session 正确的标识其他视图中的会话信息
v$instance 得到oracle_sid
scott@ORCL>alter session set sql_trace=true; 会话已更改。 scott@ORCL>select c.value||'/'||d.instance_name|| 2 '_ora_'||a.spid||'.trc'trace 3 from v$process a, v$session b, v$parameter c ,v$instance d 4 where a.addr=b.paddr 5 and b.audsid=userenv('sessionid') 6 and c.name='user_dump_dest' 7 / TRACE -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------------------------------- d:appadministratordiagrdbmsorclorcltrace/orcl_ora_4404.trc
3.对跟踪文件加标记
有一种办法可以对跟踪文件“加标记”,这样即使你无权访问v$process 和 v$session,也能找到跟踪文件。
假设你能读取user_dump_dest目录,就可以使用会话参数tracefile_identifier.采用这种方法,可以为跟踪文件名增加一个可以唯一标识的串:
scott@ORCL>alter session set tracefile_identifier='Look_For_Me'; 会话已更改。 scott@ORCL>alter session set sql_trace=true; 会话已更改。
针对内部错误生成的跟踪文件
它们对oracle support有用。
如果得到内部错误,修改这个错误的唯一办法就是提交一个iTAR
----------------------------------------------------------------------
告警日志文件
是一类特殊的跟踪文件(trace file),命名一般为alert_
告警日志位置在ORACLE 10g中,BACKGROUND_DUMP_DEST参数确定了告警日志的位置,但是告警日志的文件名无法修改,告警日志的名称为:alert_