搜索
首页数据库mysql教程如何使用SQL_TRACE和10046事件

提到了使用SQL_TRACE和10046事件。SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具。在日常的数据库问题

Eygle大师的微信讲堂昨天开课,第一堂课和大家分享了一些学习Oracle的基本方法,其中提到了使用SQL_TRACE和10046事件。SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具。在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法。

对于这个工具,我很早就听过,但是从来就没用过,“纸上得来终觉浅,绝知此事要躬行”,操练起来。

1.环境准备

      我们在Oracle11g中进行测试。

SQL>
 
SQL> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

PL/SQL Release 11.2.0.3.0 - Production

CORE 11.2.0.3.0 Production

TNS for Linux: Version 11.2.0.3.0 - Production

NLSRTL Version 11.2.0.3.0 - Production

SQL>

2.启用SQL_TRACE
      在Oracle中初始化设置中SQL_TRACE默认是关闭的,它可以作为初始化参数在全局启用,也可以通过命令行方式在具体session启用。
 

1. 在全局启用

在参数文件(pfile/spfile)中指定:

SQL_TRACE =true

在全局启用SQL_TRACE会导致所有进程的活动被跟踪,包括后台进程及所有用户进程,这通常会导致比较严重的性能问题,所以在生产环境中要谨慎使用,这个参数在10g之后是动态参数,可以随时调整,在某些诊断中非常有效。

提示: 通过在全局启用SQL_TRACE,,我们可以跟踪到所有后台进程的活动,很多在文档中的抽象说明,通过跟踪文件的实时变化,我们可以清晰的看到各个进程之间的紧密协调。

2. 在当前session级设置
      大多数时候我们使用SQL_TRACE跟踪当前进程.通过跟踪当前进程可以发现当前操作的后台数据库递归活动(这在研究数据库新特性时尤其有效),研究SQL执行,发现后台错误等。

    我在测试中启用session级别的SQL_TRACE,如下所示。


SQL>
 
SQL> show parameter SQL_TRACE

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

SQL_TRACE boolean FALSE

SQL>

SQL> alter session set SQL_TRACE=true;

Session altered.

SQL>

SQL> show parameter SQL_TRACE

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

SQL_TRACE boolean TRUE

SQL>

 
3.连接soctt用户,执行查询语句
    登陆scott用户,执行两条简单的查询语句。


[oracle@hoegh admin]$ sqlplus scott/tiger
 


SQL*Plus: Release 11.2.0.3.0 Production on Wed May 27 09:59:48 2015

Copyright (c) 1982, 2011, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from cat;

TABLE_NAME TABLE_TYPE

------------------------------ -----------

BONUS TABLE

DEPT TABLE

EMP TABLE

SALGRADE TABLE

SQL> select * from dept;

    DEPTNO DNAME LOC

---------- -------------- -------------

        10 ACCOUNTING NEW YORK

        20 RESEARCH DALLAS

        30 SALES CHICAGO

        40 OPERATIONS BOSTON


4.生成trace文件

plustrace角色

      和Oracle10g一样,11g中plustrace角色默认也是disabled的。如果使用非授权用户打开Oracle trace功能会得到以下的错误。


SQL>
 
SQL> show user

USER is "SCOTT"

SQL>

SQL> set autotrace on

SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled

SP2-0611: Error enabling STATISTICS report

SQL>
      这时需要执行$ORACLE_HOME/sqlplus/admin/plustrce.sql脚本,手工创建plustrace角色,在此不做演示。因为我们更多的时候是需要跟踪其他用户的进程,而很多这样的用户可能没有被授予或者不允许授予plustrace角色。这时可以使用DBMS_SYSTEM包来实现对进程的跟踪,这儿需要提供用户进程的sid和serial#。
10046事件
    在这儿就不得不提到10046事件,10046事件是Oracle提供的内部事件,是对SQL_TRACE的增强。
 

10046事件可以设置以下四个级别:

1 - 启用标准的SQL_TRACE功能,等价于SQL_TRACE

4 - Level 1 加上绑定值(bind values)

8 - Level 1 等待事件跟踪

12 - Level 1 Level 4 Level 8
      和SQL_TRACE类似,10046事件可以在全局设置,也可以在session级设置。

生成trace文件
    首先,我们通过查询v$session视图获取scott用户进程的sid和serial#;
    然后执行dbms_system.set_ev过程来实现对进程的跟踪。


SQL>
 
SQL> select sid,serial#,username from v$session where username='SCOTT';

      SID SERIAL# USERNAME

---------- ---------- ------------------------------

        21 2615 SCOTT

SQL>

SQL> exec dbms_system.set_ev(21,2615,10046,12,'SCOTT');

PL/SQL procedure successfully completed.

SQL>
 

5.查看trace文件

存放目录

      在11g中trace文件的存放目录有了变化,其中,11gR1 或 11gR1 以上版本可以通过查询diagnostic_dest参数获得;而11gR1以前版本则是通过user_dump_dest参数来指定。


SQL> show parameter diagnostic_dest
 


NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

diagnostic_dest string /u01/app/oracle

SQL>
      在测试数据库中,trace文件的具体路径为:/u01/app/oracle/diag/rdbms/hoegh/HOEGH/trace/。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何在MySQL中删除或修改现有视图?如何在MySQL中删除或修改现有视图?May 16, 2025 am 12:11 AM

todropaviewInmySQL,使用“ dropviewifexistsview_name;” andTomodifyAview,使用“ createOrreplaceViewViewViewview_nameAsSelect ...”。whendroppingaview,asew dectivectenciesanduse和showcreateateviewViewview_name;“ tounderStanditSsstructure.whenModifying

MySQL视图:我可以使用哪些设计模式?MySQL视图:我可以使用哪些设计模式?May 16, 2025 am 12:10 AM

mySqlViewScaneFectectialized unizedesignpatternslikeadapter,Decorator,Factory,andObserver.1)adapterPatternadaptSdataForomDifferentTablesIntoAunifiendView.2)decoratorPatternenhancateDataWithCalcalcualdCalcalculenfields.3)fieldfields.3)

在MySQL中使用视图的优点是什么?在MySQL中使用视图的优点是什么?May 16, 2025 am 12:09 AM

查看InMysqlareBeneForsImplifyingComplexqueries,增强安全性,确保dataConsistency,andOptimizingPerformance.1)他们simimplifycomplexqueriesbleiesbyEncapsbyEnculatingThemintoreusableviews.2)viewsEnenenhancesecuritybyControllityByControllingDataAcces.3)

如何在MySQL中创建一个简单的视图?如何在MySQL中创建一个简单的视图?May 16, 2025 am 12:08 AM

toCreateAsimpleViewInmySQL,USEthecReateaTeviewStatement.1)defitEtheetEtheTeViewWithCreatEaTeviewView_nameas.2)指定usethectstatementTorivedesireddata.3)usethectStatementTorivedesireddata.3)usetheviewlikeatlikeatlikeatlikeatlikeatlikeatable.views.viewssimplplifefifydataaccessandenenanceberity but consisterfort,butconserfort,consoncontorfinft

MySQL创建用户语句:示例和常见错误MySQL创建用户语句:示例和常见错误May 16, 2025 am 12:04 AM

1)foralocaluser:createUser'localuser'@'@'localhost'Indidendify'securepassword'; 2)foraremoteuser:creationuser's creationuser'Remoteer'Remoteer'Remoteer'Remoteer'Remoteer'Remoteer'Remoteer'Remoteer'Rocaluser'@'localhost'Indidendify'seceledify'Securepassword'; 2)

在MySQL中使用视图的局限性是什么?在MySQL中使用视图的局限性是什么?May 14, 2025 am 12:10 AM

mysqlviewshavelimitations:1)他们不使用Supportallsqloperations,限制DatamanipulationThroughViewSwithJoinSorsubqueries.2)他们canimpactperformance,尤其是withcomplexcomplexclexeriesorlargedatasets.3)

确保您的MySQL数据库:添加用户并授予特权确保您的MySQL数据库:添加用户并授予特权May 14, 2025 am 12:09 AM

porthusermanagementInmysqliscialforenhancingsEcurityAndsingsmenting效率databaseoperation.1)usecReateusertoAddusers,指定connectionsourcewith@'localhost'or@'%'。

哪些因素会影响我可以在MySQL中使用的触发器数量?哪些因素会影响我可以在MySQL中使用的触发器数量?May 14, 2025 am 12:08 AM

mysqldoes notimposeahardlimitontriggers,butacticalfactorsdeterminetheireffactective:1)serverConfiguration impactactStriggerGermanagement; 2)复杂的TriggerSincreaseSySystemsystem load; 3)largertablesslowtriggerperfermance; 4)highConconcConcrencerCancancancancanceTigrignecentign; 5); 5)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)