• 10046 trace 产生方法


     Generate 10046 SQL Trace  (Doc ID 2978727.1)   

     
    Its preferred to flush the cursor from the shared pool before start the tracing.

    Using The DBMS_SHARED_POOL Package (Doc ID 457309.1)
    For example:

    select address, hash_value from v$SQLAREA where sql_id='';
    exec dbms_shared_pool.purge ('

    ,','C');
    Then use one of the below methods:

    A. Use Alter session_trace_enable command:

    Alter session set tracefile_identifier = 'xyz';
    exec dbms_session.session_trace_enable(waits => true,binds => false);

    -- Run the SQL
    select * from dual;
    exec dbms_session.session_trace_disable;


    B. Using dbms_system

    select username, status, sid, serial# from v$session where username ='&username' order by 1;
    In below example, sid =1084 , serial# = 18003
    exec dbms_system.set_sql_trace_in_session(1084 ,18003 ,true);
    exec dbms_system.set_sql_trace_in_session(1084 ,18003 ,FALSE);

    C. Using oradebug
    *. Identify the shadow process ospid:

    SELECT p.spid,p.addr,p.pid,s.sid,SUBSTR(s.username,1,15) "USERNAME",SUBSTR(s.program,1,15) "PROGRAM"
      FROM v$process p,v$session s
      WHERE s.paddr=p.addr
      AND addr in (SELECT paddr FROM v$session WHERE UPPER(program) LIKE '%%');
    Verify the session is running at OS level

    ps -ef | grep
    *. In sqlplus, use oradebug to attach to this (O)SPID, set trace file size to unlimited and turn on Event 10046 at level 12

    oradebug setospid xxx ----------- (xxx = ospid)
    oradebug unlimited
    oradebug Event 10046 trace name context forever, level 12
    *. Start the the process you want to trace

    *. When the process ended, disable the trace -- this after collecting the steps below

     oradebug Event 10046 trace name context off
    D. Using dbms_monitor:

    In below example, sid =1084 , serial# = 18003
    exec dbms_monitor.session_trace_enable(session_id=> 1084 ,serial_num=>18003 ,binds=>true,waits=>true);
    --Run the SQL
    exec dbms_monitor.session_trace_disable(session_id=>1084,serial_num=>18003);
    E. Using Alter session set events:

    show parameter diagnostic_dest

    alter session set tracefile_identifier='10046';

    alter session set timed_statistics = true;
    alter session set statistics_level=all;
    alter session set max_dump_file_size = unlimited;

    alter session set events '10046 trace name context forever,level 12';

    -- Execute the queries or operations to be traced here --
    -- Once the command, make sure to close the cursor using the below simple query
    select * from dual;
    --To get the trace file name, run the below command:
    SELECT value FROM v$diag_info WHERE NAME='Default Trace File';
    exit;
     F. To trace a specific SQL than runs from application and you can not run it from sqlplus:

    alter system set timed_statistics=true;
    alter system set statistics_level=all;
    alter system set max_dump_file_size=unlimited;
    alter system set events 'sql_trace[sql: SQLID] level=12';  -- replace the SQLID here

    --Make sure the SQL has executed, then you need to disable the tracing

    alter system set events 'sql_trace[sql: SQLID] off'; -- replace the SQLID here
    alter system set statistics_level=typical;

     

  • 相关阅读:
    基于arcgis访问postgis的方法
    【Android】使用SeekBar控制数据的滚动
    阿里云体验有奖:使用PolarDB-X与Flink搭建实时数据大屏
    今抖云创—短视频需要的那些自媒体工具
    Vulnstack----5、ATT&CK红队评估实战靶场五
    3.Maven 环境搭建
    Linux计划任务管理,网络管理
    Cloudflare KV 数据备份及迁移
    深度学习batch、batch_size、epoch、iteration以及小样本中episode、support set、query set关系
    中英文说明书丨艾美捷细胞衰老β-半乳糖苷酶染色试剂盒
  • 原文地址:https://blog.csdn.net/jnrjian/article/details/134036663