Oracle trace & tkprof

本文提供了一套详细的步骤来管理SQL性能问题,包括如何启用SQL跟踪设施、收集跟踪文件、使用TKPROF进行分析以及如何通过客户端设置进行简化操作。通过本指南,读者能够有效地诊断和优化数据库性能。
NOTE1>: There are 3 methods to manage the SQL trace facility:
      a> oradebug -- execute it using sysdba by 'sqlplus / as sysdba'
      b> alter session -- you only need alter session privilege.
      c> execute DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION
NOTE2>:Make sure the environment ORALCE_SID is set correctly.
   
Step 1> Get the Unix-PID using sysdba after one interface is run.
    select a.machine, a.username, b.spid, a.program, a.logon_time, a.serial#
    from   v$session a, v$process b
    where b.addr = a.paddr
    and a.machine = '<Main Name>'
    order by logon_time;

Step 2> Enabling the SQL Trace Facility
     execute below SQL with sysdba
       sqlplus / as sysdba
       oradebug setospid ${unix_pid}
       oradebug unlimit
       oradebug event 10046 trace name context forever, level ${trace_level}
     OR enable the SQL trace for current SQL session
       sqlplus> ALTER SESSION SET SQL_TRACE = TRUE;
     OR enable the SQL trace for other user session
       sqlplus> execute DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(<UNIX-PID>, serial#, true); --serial# is from V$SESSION
     OR You can enable the SQL Trace facility for an instance by setting the value of the SQL_TRACE initialization parameter to TRUE in the initialization file $ORACLE_HOME/admin/pfile/init<sid>.ora.     
          SQL_TRACE = TRUE
      After the instance has been restarted with the updated initialization parameter file, SQL Trace is enabled for the instance and statistics are collected for all sessions. If the SQL Trace facility has been enabled for the instance, you can disable it for the instance by setting the value of the SQL_TRACE parameter to FALSE.

Step 3> Wait for the interface is finished.

Step 4> To disable the SQL Trace facility for the session, enter:
     execute below SQL
       oradebug setospid ${unix_pid}
       oradebug event 10046 trace name context off
     OR disable the SQL trace for current SQL session
       sqlplus> ALTER SESSION SET SQL_TRACE = FALSE;
     OR disable the SQL trace for other user session
       sqlplus> execute DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(<UNIX-PID>, serial#, false); --serial# is from V$SESSION

Step 5> Get the dump folder where trace file is created.
      select u_dump.value dump_foler
        from v$parameter u_dump
       cross join v$parameter db_name
       where u_dump.name = 'user_dump_dest'
         and db_name.name = 'db_name';

Step 6> Get the trace file
The trace file for <Unix-PID> is located under:
      <Dump folder>/<DB NAME>_ora_<UNIX-PID>.trc
      E.g. /opt/app/oracle/admin/sdgmain/udump/sdgmain_ora_348.trc
It is located in the DB server.

Step 7> Formatting Trace Files with TKPROF
Usage: tkprof tracefile outputfile [explain= username/password ] [table= <DB>.<table name>]
              [print= ] [insert= ] [sys= ] [sort= ]

Example: tkprof may_ora_1069212.trc report.txt explain=monica/arbor123 table=MAY.claire_temp sort=fchela


====================================================================================
Easier way to run tkprof for a current SQL session

Step 1. Enabling the SQL Trace Facility
     sqlplus> ALTER SESSION SET SQL_TRACE = TRUE;

Step 2. Do something you want to create trace for them, such as 'select <...> from cdr_data where ....'

Step 3. disable the SQL Trace facility
      sqlplus> ALTER SESSION SET SQL_TRACE = FALSE;

Step 4. Following SQL returns the trace file fullname

select u_dump.value || '/' || db_name.value || '_ora_' || v$process.spid ||
       nvl2(v$process.traceid, '_' || v$process.traceid, null) || '.trc' "Trace File"
from v$parameter u_dump
cross join v$parameter db_name
cross join v$process
join v$session on v$process.addr = v$session.paddr
where u_dump.name = 'user_dump_dest'
   and db_name.name = 'db_name'
   and v$session.audsid = sys_context('userenv', 'sessionid');

Trace File

--------------------------------------------------------------
/oradump/cust1/udump/cust1_ora_2216704.trc

It is located in the DB server.

Step 5> Formatting Trace Files with TKPROF (Same as upper)


============================================================

An easier way to trace an application

The application should execute the following to set the client_identifier:

dbms_session.set_identifier (‘my_client_identifier’);

SQL> execute dbms_session.set_identifier ('REPORT_USAGE');

PL/SQL procedure successfully completed


The actual enabling / disabling of traces can then be done using the following calls (via sqlplus, system or sysdba):

·         To enable: exec dbms_monitor.client_id_trace_enable ('REPORT_XYZ', FALSE, FALSE) ;
·         To disable: exec dbms_monitor.client_id_trace_disable ('REPORT_XYZ') ;

物联网通信协议测试是保障各类设备间实现可靠数据交互的核心环节。在众多适用于物联网的通信协议中,MQTT(消息队列遥测传输)以其设计简洁与低能耗的优势,获得了广泛应用。为确保MQTT客户端与服务端的实现严格遵循既定标准,并具备良好的互操作性,实施系统化的测试验证至关重要。 为此,采用TTCN-3(树表结合表示法第3版)这一国际标准化测试语言构建的自动化测试框架被引入。该语言擅长表达复杂的测试逻辑与数据结构,同时保持了代码的清晰度与可维护性。基于此框架开发的MQTT协议一致性验证套件,旨在自动化地检验MQTT实现是否完全符合协议规范,并验证其与Eclipse基金会及欧洲电信标准化协会(ETSI)所发布的相关标准的兼容性。这两个组织在物联网通信领域具有广泛影响力,其标准常被视为行业重要参考。 MQTT协议本身存在多个迭代版本,例如3.1、3.1.1以及功能更为丰富的5.0版。一套完备的测试工具必须能够覆盖对这些不同版本的验证,以确保基于各版本开发的设备与应用均能满足一致的质量与可靠性要求,这对于物联网生态的长期稳定运行具有基础性意义。 本资源包内包含核心测试框架文件、一份概述性介绍文档以及一份附加资源文档。这些材料共同提供了关于测试套件功能、应用方法及可能包含的扩展工具或示例的详细信息,旨在协助用户快速理解并部署该测试解决方案。 综上所述,一个基于TTCN-3的高效自动化测试框架,为执行全面、标准的MQTT协议一致性验证提供了理想的技术路径。通过此类专业测试套件,开发人员能够有效确保其MQTT实现的规范符合性与系统兼容性,从而为构建稳定、安全的物联网通信环境奠定坚实基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值