`
onho
  • 浏览: 16936 次
  • 来自: ...
社区版块
存档分类
最新评论

如何知道封装类所执行的SQL语句?

阅读更多
danielxiao.spaces.live.com/blog/cns!FAABA4EEE25A494D!208.entry#comment
如果我们使用的是第三方组件或者类,不知道源代码,但是又想知道在这些类当中执行了哪些SQL语句,那么能采用的办法除了使用“小颖”之类的工具之外,就只能在Oracle上想办法了。

    我们可以利用oracle本身的10046事件来跟踪SQL语句。
 
步骤如下:
 
1、首先启动您的web应用
 
2、在Oracle上获得spid、sid、serial#,machine为你的机器名
 
SQL> select b.spid,a.sid,a.serial#,a.machine from v$session a,v$process b where a.paddr = b.addr and a.machine='your_name';
SPID SID SERIAL# MACHINE
9497 115 10347 your_name
 
注意:有的时候,您的应用可能会有多个session,这就要你自己去判断了。
 
2、利用10046事件开始跟踪

--SQL>execute sys.dbms_system.set_ev(115, 10347,10046,1,'');
SQL> exec sys.dbms_system.set_sql_trace_in_session(115, 10347, TRUE);
PL/SQL procedure successfully completed.

3、这时候你可以运行web 应用,执行一些与数据库交互数据的动作。

4、然后,如果你需要查看这段时间web应用到底执行了哪些sql语句,就可以执行下面的语句结束跟踪

--SQL>execute sys.dbms_system.set_ev(115,10347,10046,0,'');
SQL> exec sys.dbms_system.set_sql_trace_in_session(115, 10347, FALSE);
PL/SQL procedure successfully completed.

5、SQL trace 工具会收集这个过程中执行的SQL的性能状态数据,记录到一个跟踪文件中.这个跟踪文件提供了许多有用的信息,例如解析次数.执行次数,CPU使用时间等。

6、这时候你可以通过下面的语句获得产生的跟踪文件所在的目录
SQL> select value from v$parameter where name = 'user_dump_dest';
VALUE
--------------------------------------------------------------------------------
c:\oracle\my_database\udump

7、在c:\oracle\my_database\udump下找到your_nameoracle_ora_9497.trc。9497是你当前应用的spid。

8、注意your_nameoracle_ora_9497.trc是不能直接读取的,我们需要执行oracle的tkprof命令(这是MS-DOS命令),将your_nameoracle_ora_9497.trc转化为我们可读的文本文件。
 
c:\tkprof your_nameoracle_ora_9497.trc your_nameoracle_ora_9497.sql
 
这样你就可以在your_nameoracle_ora_9497.sql文件中看到所有的sql语句执行次数,CPU使用时间等数据。
分享到:
评论

相关推荐

    mybatis直接执行sql语句后续之一

    这篇博客“mybatis直接执行sql语句后续之一”可能探讨了如何在MyBatis中高效且有效地执行SQL操作。下面我们将深入探讨MyBatis的SQL执行机制及相关知识点。 首先,MyBatis的核心组件是SqlSessionFactory,它是创建...

    连接sqlserver数据库,批量执行sql语句

    在本案例中,我们关注的是使用VC++和MFC(Microsoft Foundation Classes)库连接到SQL Server数据库并批量执行SQL语句的过程。下面将详细介绍这个过程涉及的关键知识点。 首先,`VC++`是微软开发的一款集成开发环境...

    SQL 执行超长语句

    本文将围绕“SQL执行超长语句”这一主题进行深入探讨,包括超长语句可能出现的原因、如何编写更加高效合理的超长SQL语句以及如何优化执行性能等方面。 #### 一、超长SQL语句的定义与常见场景 ##### 定义 超长SQL...

    java批量执行SQL

    在Java开发过程中,经常需要与数据库进行交互,尤其是在处理大量数据时,如何高效地执行SQL语句变得尤为重要。本文将详细介绍如何利用Java进行批量SQL执行,包括其背景、实现原理、代码示例及优化策略等。 #### 一...

    泛型封装的sql语句

    这个类可以包含执行SQL语句的方法,如`ExecuteNonQuery()`用于执行非查询操作,`ExecuteReader()`用于执行查询操作并返回数据读取器,以及`ExecuteScalar()`用于获取单个值等。 在`SqlExecutor<T>`类中,我们可以...

    动态封装SQL语句,配置文件的调用与封装

    在IT行业中,数据库操作是应用开发中的重要环节,而动态封装SQL语句和配置文件的调用与封装是提升程序灵活性、可维护性的重要技术手段。下面将详细讲解这两个概念及其应用。 首先,动态封装SQL语句指的是在运行时...

    SQL语句封装

    - **Python中的SQLAlchemy**:一个强大的SQL工具包,支持SQL语句的动态执行和编译,并允许用户定义SQL表达式为Python类的方法。 ```python from sqlalchemy import create_engine, MetaData, Table, select engine ...

    sql语句命令-sql语句命令sql语句命令

    总结来说,SQL语句命令在数据库操作中扮演着核心角色,而ADO.NET提供了SqlConnection、SqlCommand、SqlDataAdapter等类,使得与SQL Server和其他OLE DB兼容数据库的交互变得更加便捷。理解并熟练掌握这些工具,对于...

    C# SQL执行语句类的封装

    sql ExcuteNonQuery、ExcuteScalar封装

    DBHelper 执行简单Sql语句的

    通过封装常见的数据库操作(如执行SQL命令、查询数据等),该类使得开发人员可以更加高效地进行数据库交互。本文将详细介绍如何利用`DBHelper`类来执行简单的SQL语句,并重点关注带有参数的SQL语句的执行。 #### 二...

    若依微服务数据库执行sql

    本篇将深入探讨如何在若依微服务中执行SQL语句,以及与之相关的数据库管理和微服务设计原则。 首先,SQL(Structured Query Language)是用于管理和处理关系型数据库的标准语言,包括数据查询、更新、插入和删除等...

    C#不写SQL语句的数据库操作

    传统的数据库操作往往涉及到编写大量的SQL语句,这种方式虽然直接且高效,但对于一些初级开发者或专注于业务逻辑的开发者来说,可能会觉得繁琐。本主题将探讨如何在C#中进行不写SQL语句的数据库操作,实现对数据的增...

    java操作mysql数据库,不写sql语句版

    在Java编程中,与MySQL数据库交互通常涉及到使用SQL语句来执行CRUD(创建、读取、更新、删除)操作。然而,为了提高代码的可维护性和安全性,开发者可以选择使用ORM(对象关系映射)框架,如Hibernate或MyBatis,...

    用C#实现的SqlServer封装类

    这个Demo可能包括如何创建实例、如何执行SQL语句、如何处理事务等示例代码。通过学习和使用这个Demo,无论是初学者还是有经验的开发者,都能有效地提升开发效率,避免编写大量重复的数据库访问代码。 总的来说,"用...

    C# SQL封装类类

    `SqlHelper`类就是一个这样的封装,它集成了执行SQL语句的基本功能,包括查询、插入、更新和删除等操作。下面我们将详细讨论`SqlHelper`类的设计原理、常用方法及其在实际开发中的应用。 首先,`SqlHelper`类通常会...

    JAVA的SQL帮助类,帮助快速使用SQL语句更新,删除,查询数据

    在Java编程中,数据库操作是不可或缺的一部分,而`SQL帮助类`的作用就是简化这一过程,使得开发者能够更高效地执行SQL语句,如更新、删除和查询数据。本篇文章将详细探讨Java中的SQL帮助类以及如何利用JDBC(Java ...

    Java 使用注解拼接SQL语句

    综上所述,使用Java自定义注解来拼接SQL语句是一种高效且灵活的编程方式,它可以提高代码的可读性和可维护性,同时减少错误的可能性。然而,也需要权衡其带来的性能影响,并遵循最佳实践来确保代码的质量和安全。

    C# sqlserver数据库操作封装类

    C#的sqlserver数据库操作封装类,封装了sql语句的查询、修改、插入、删除操作,以及存储过程的执行,包括有输入、输出参数的存储过程,存储过程的执行无需输入任何参数名称,只需输入参数值即可。同时封装了大批量...

    ASP.NET-[其他类别]Web页面执行SQL语句.zip

    在ASP.NET中,你可以使用DbContext类来执行SQL语句,或者通过LINQ(Language Integrated Query)进行查询。 8. **DbContext**:这是Entity Framework的核心类,代表数据库会话。你可以创建DbContext实例,然后通过...

Global site tag (gtag.js) - Google Analytics