Oracle OCP笔记(10)警报日志与跟踪文件

本文是Oracle OCP认证学习笔记的第十部分,主要探讨了Oracle数据库的警报日志和跟踪文件,包括它们的作用、查看方法及如何分析问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值