Oracle OCP笔记(10)警报日志与跟踪文件
一.关于警报日志和跟踪文件
警报日志中记录关键操作包括:
·所有启动和关闭命令,包括中间命令,如alter database mount
·实例的所有内部错误(ORA-600错误,只能报告给Oracle Support解决)
·任何检测到的数据文件块损坏情况
·任何已经发生的记录锁定死锁.
·影响数据库物理结构的所有操作,如创建或重命名数据文件和联机重做日志。
·调整内部参数值的alter system命令
·所有日志开关和日志归档文件.
跟踪文件由各个后台进程生成,一般在遇到错误时发生,在诊断问题时,生成的跟踪文件非常有用
二.旧版本中的警报日志和跟踪文件
在Oracle10g及以前版本中,警报日志和跟踪文件的位置由参数background_dump_dest确定
select value from v$parameter where name='background_dump_dest';
默认位置: /u01/app/oracle/product/12.1.0/db_1/rdbms/log
警报日志: alert_sid.log (文本格式)
跟踪文件: sid_***.trc
三.新版本中的警报日志和跟踪文件
在Oracle11g以后版本中,警报日志和跟踪文件的位置有改变.
select * from v$diag_info;
1.查看警报日志
select value from v$diag_info where name ='Diag Alert';
默认位置: /u01/app/oracle/diag/rdbms/sid/sid/alert
警报日志: log.xml (xml格式)
2.查看跟踪文件
select value from v$diag_info where name ='Diag Trace';
默认位置: /u01/app/oracle/diag/rdbms/sid/sid/trace
跟踪文件: sid_***.trc
警报日志: alert_sid.log (文本格式)
参数background_dump_dest位置也有一部分跟踪文件
select value from v$parameter where name='background_dump_dest';
默认位置: /u01/app/oracle/product/12.1.0/db_1/rdbms/log
跟踪文件: sid_***.trc
四.SQL語句跟踪
1.用户级自我跟踪
alter session set sql_trace=true;
在同一个session中执行SQL语句,将会产生跟踪文件sid_ora_spid.trc(spid为系统进程id):
/u01/app/oracle/diag/rdbms/sid/sid/trace/sid_ora_spid.trc
spid:系统进程id,可以通过语句查看:
select s.username,s.sid,s.serial#,p.spid,s.program
from v$session s,v$process p
where s.paddr = p.addr
and s.username is not null
and p.background is null;
alter session set sql_trace=false;
2.系统级跟踪
alter system set sql_trace=true scope=memory;
在任何session中执行SQL语句,产生跟踪文件sid_ora_spid.trc(spid为系统进程id):
/u01/app/oracle/diag/rdbms/sid/sid/trace/sid_ora_spid.trc
alter system set sql_trace=false scope=memory;
3.用户级的DBA跟踪
使用Oracle的PL/SQL包DBMS_SYSTEM
(1)从v$session中查出用户的sid和serial#.
select s.username,s.sid,s.serial#,p.spid,s.program
from v$session s,v$process p
where s.paddr = p.addr
and s.username is not null
and p.background is null;
USERNAME SID SERIAL# SPID PROGRAM
------------------------------ ---------- ---------- ------------------------ -----------------------------
SYSTEM 13 35114 9172 plsqldev.exe
SYSTEM 248 32295 9225 plsqldev.exe
SYS 14 36202 9111 sqlplus@gymvm (TNS V1-V3)
(2)跟踪用户会话
execute sys.dbms_system.set_sql_trace_in_session(248,32295,true);
在任何id为248的session中执行SQL语句,产生跟踪文件sid_ora_spid.trc(spid为系统进程id):
/u01/app/oracle/diag/rdbms/sid/sid/trace/sid_ora_9225.trc
(3)停止跟踪
execute sys.dbms_system.set_sql_trace_in_session(248,32295,true);
4.SQL_TRACE跟踪SQL语句执行情况的内容
·解析、执行、取数据的计数
·CPU时间和占用时间
·物理读和逻辑读
·处理行数目
·所解析的用户名
·每次提交和回滚的情况.
五.格式化跟踪文件(tkprof)
使用tkprof程序可以将跟踪文件转化成可以阅读的文本文件,tkprof语法:
tkprof tracefile outputfile [explain=user/password] [table=schema.tablename]
[print=integer] [insert= ] [sys= ] [sort= ] ...
$ tkprof tracefile outputfile