- 浏览: 455933 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (233)
- 技术日志 (87)
- portal (7)
- jBPM/Activiti (34)
- Roller学习 (18)
- Java基础、网站开发 (19)
- 收藏URL (4)
- UML (3)
- linux操作 (7)
- 工作环境准备 (8)
- Mina (15)
- tomcat (8)
- Mylyn (3)
- sina网站 (2)
- 规则引擎 (3)
- 工作记录 (11)
- html(5) (9)
- 手机开发 (3)
- oracle (26)
- 常用的 (2)
- maven (8)
- hadoop (0)
- xml (7)
- 错误解决 (5)
- linux (1)
- c# (2)
- c++ (1)
- node.js (1)
- 银行业务知识 (1)
- Java调试 (0)
最新评论
-
tomcatmeng:
请问候选用户是怎样task自己的任务,看网上说先根据任务id先 ...
jBPM4.4:ForEach的使用--动态设置参与人数 -
maoweiwer:
友情提醒:如果是在MYSQL下创建数据库,则还需要更改\jbp ...
jBPM4.4: 创建数据库表 -
zybing:
ganjiang 写道有点疑惑,请lz指点,1.那个“depl ...
jBPM4.4:如何图示化显示当前的流程执行到了哪一步骤 -
zybing:
ganjiang 写道有点疑惑,请lz指点,1.那个“depl ...
jBPM4.4:如何图示化显示当前的流程执行到了哪一步骤 -
ganjiang:
有点疑惑,请lz指点,1.那个“deployId”不知是那个i ...
jBPM4.4:如何图示化显示当前的流程执行到了哪一步骤
方法1: 根据服务器processID获取执行的SQL语句
prompt 根据服务器processID获取执行的SQL语句 ACCEPT pid NUMBER prompt '输入服务器的进程编号: ' ; set serveroutput on set verify off declare sqltext varchar2(4000) ; Cursor c_GetSQLText is select sql_text from V$SQLTEXT_WITH_NEWLINES sqlwn, ( select s.sid, s.serial#, s.sql_address, s.sql_hash_value from v$process p, v$session s where p.addr = s.paddr and spid=&pid ) b where sqlwn.address = b.sql_address and sqlwn.hash_value = b.sql_hash_value order by piece asc; begin dbms_output.enable(1000000); dbms_output.put_line(' ------------------------------------ '); for r_indx in c_GetSQLText loop dbms_output.put( r_indx.sql_text); end loop; dbms_output.put_line(' '); dbms_output.put_line(' ------------------------------------ '); end; /
方法2: 跟踪用户当前的session,通过tkproc解析trace文件
首先查到在服务器上的processid,然后执行脚本,对该进程进行trace
通过 dbms_system.set_sql_trace_in_sessin(sid, serial#, true/false) 来进行
-- 首先查到用户的sid, serial#, 通过执行dbms_system.set_sql_trace_in_session(sid, serial#, true/false)来进行对用户session的跟踪。 -- 跟踪的结果写在usertrace目录中,通过tkprof可以将trace文件进行转换成用户可以阅读的格式; -- 如果跟踪的是Oracle后台进程,跟踪的结果是写在background_dump_dest中,而不是user_dump_dest ACCEPT spid NUMBER prompt '输入服务器的进程编号: ' ; set serveroutput on set verify off declare c_name INTEGER; ignore INTEGER; Cursor c_getSession is Select s.sid, s.serial#, s.username from v$session s , v$process p where p.spid = &spid and p.addr = s.paddr; trace_dir varchar2(2000); instance_name varchar2(2000); begin DBMS_OUTPUT.ENABLE(1000000); Select value Into trace_dir From v$parameter Where name='user_dump_dest'; Select value Into instance_name From v$parameter Where name='instance_name'; c_name := DBMS_SQL.OPEN_CURSOR; for r_indx in c_getSession loop DBMS_OUTPUT.PUT_LINE( 'User Name : ' || r_indx.username ); DBMS_OUTPUT.PUT_LINE( 'sid : ' || r_indx.sid ); DBMS_OUTPUT.PUT_LINE( 'serial# : ' || r_indx.serial# ); DBMS_SQL.parse( c_name, 'begin sys.dbms_system.set_sql_trace_in_session( ' || r_indx.sid || ' , ' || r_indx.serial# || ' , true ); end;' , DBMS_SQL.NATIVE ); ignore := DBMS_SQL.execute(c_name); DBMS_OUTPUT.PUT_LINE( ' Trace File Name : ' || trace_dir || '/' || instance_name || '_ora_' || &spid ||'.trc' ); end loop; DBMS_SQL.close_cursor(c_name); end; /
3. 通过Oracle事件方式进行
可以通过Oracle事件10046方式对用户session进行跟踪;
自己的
如果是自己了session,可以执行:
Alter Session set events '10046 trace name context forever, level 12'
关闭可以:
Alter Session set events '10046 trace name context off';
对其他用户session进行设置
通过dbms_system.set_ev来进行;
exec dbms_system.set_ev( sid, serial#, 10046, 级别1/4/8/12, '名字' );
关闭的话,只要把级别设置成0就可以了
-------------------------------------------------------------------------------------------------------------------
说明:
1. 在跟踪的时候,消耗的时间因素很重要,因此最好把timed_statistics设置成true
如果是自己的session ,可以 alter session set timed_statistics=true;
如果是别人的session ,可以 sys.dbms_system.set_bool_param_in_session( sid, serial#, 'timed_statistics', true);
2. 可以设置一下trace文件的大小
dbms_system.set_int_param_in_session( sid, serial#, 'max_dump_file_size', 大小为字节单位 )
3. 出来的结果,需要用tkprof进行分析,tkprof的使用可以见这里;
发表评论
-
查询某个字段都是字母
2017-02-07 14:33 669select * from (select case whe ... -
Oracle的全文检索
2016-08-09 15:43 508Oracle的全文检索,以前用过,效果还可以,就是耗资 ... -
eXtremeDB微秒级实时数据库简介
2011-10-26 13:47 1633eXtremeDB微秒级实时数据库简介 eXtreme ... -
【实践】对于绑定变量看执行计划
2011-05-12 14:41 1493基础: 从Oracle9i,开始的Bind ... -
【技术】执行计划 --- 几种方式
2011-05-12 14:30 1152看Oracle的执行计划: 1. 使用SQL_TRAC ... -
【脚本】trace当前最忙的进程
2011-05-11 15:31 987跟踪当前系统最忙的Oracle进程,生成trace文件, ... -
【技术】执行计划中的一些参数理解
2011-05-10 17:57 1285执行计划出来,有一 ... -
【脚本】获取当前最忙的进程的sql语句
2011-05-10 13:50 1729# # 获取当前最忙进程执行的SQL语句 # ... -
gongzuojilu
2011-05-09 13:10 01. 得出当前最忙客户再做什么 使用说明: ... -
【技术】Oracle跟踪事件的包括那些
2011-05-05 13:41 992以下的文章主要是对Oracle跟踪事件的具体描述, ... -
【技术】一个Oracle巡检工具
2011-05-04 15:32 1989Oracle巡检工具,不错的 -
【技术】找出oracle没有创建索引的外键
2011-05-04 14:59 2303/* Formatted on 2011 ... -
【实践】将无用的索引提取出来
2011-05-03 16:54 1051将无用的索引提取出来: 条件: 1. monitoring ... -
【技术】得到外键对应的索引MatchForeignKeyIndex
2011-05-03 15:27 990Create Or Replace FUNCTIO ... -
【实践】对v$object_usage的内容进行检查(2011.4月份进行统计的)
2011-05-03 15:18 1350重温一下监控的语句: alter inde ... -
SYS_CONTEXT可以获取的一些环境参数
2011-05-03 10:35 1112selectSYS_CONTEXT('USERENV', ... -
[转载]ORACLE中SQL TRACE和TKPROF的使用
2011-04-14 11:01 1390[转载]ORACLE中SQL TRACE和TKPROF的使 ... -
重温Oracle的进程
2011-04-14 09:48 1363在跟踪繁忙Oracle进程时,发现在 user_dump_de ... -
索引 -- 检查优化
2011-04-12 14:56 01、 索引的效率: 对索引进行分析: alte ... -
【实践】通过v$object_usage监控索引的使用情况
2011-04-12 11:37 1745v$object_usage可以用来监控系统中索引的使用 ...
相关推荐
这一步骤对于理解死锁的原因至关重要,因为它可以揭示进程正在执行的具体SQL语句。 4. **存储死锁信息**:将从`DBCC INPUTBUFFER`获取的信息分别插入到`#tempbelocktracestatus`和`#templocktracestatus`中,然后再...
SQLMonitor通过捕获并分析本地进程通过SQL*Net协议发送的SQL语句,帮助用户识别和优化那些影响系统性能的慢速查询。SQL*Net是Oracle数据库的一种网络通信协议,它使得客户端应用程序能够与数据库服务器进行交互。 ...
在SQL Server环境中,有时我们需要跟踪特定进程以了解其执行的具体SQL语句,这对于排查性能问题、定位阻塞或死锁等情况至关重要。以下是如何在MSSQL Server中跟踪进程对应语句的详细步骤: 1. **查找进程PID**: ...
将此属性设置为一个输出日志的方法,例如控制台输出,就可以在执行查询时看到生成的SQL语句。 例如: ```csharp using (var context = new YourDbContext()) { context.Database.Log = Console.WriteLine; var ...
开发者可以使用QSqlQuery或QSqlTableModel等类来执行SQL语句,操作数据库。例如,通过调用`QSqlQuery::exec()`执行SQL命令,`QSqlQueryModel::clear()`清除查询结果,以及`QSqlTableModel::setData()`更新数据库记录...
它的工作原理类似于黑盒测试,无需修改应用程序代码,只需在SQLMonitor中选择要监控的程序,就能捕获到该程序发出的所有SQL语句。这对于那些使用PowerBuilder等工具开发的应用程序尤其有用,因为这些应用程序的内部...
- **SQLTrace**:一种追踪工具,用于捕获SQL语句的执行情况,包括执行时间、CPU时间等信息。 - **tkprof**:将SQLTrace文件转换成易于阅读的报告,有助于识别性能问题所在。 #### 五、Rule-Based Optimizer vs Cost...
- **SQL Server Profiler**:用于捕获有关数据库活动的详细信息,包括查询计划、执行时间和阻塞情况等。 - **性能监视器(Perfmon)**:提供了一组计数器,用于监控SQL Server的性能,特别是在事务处理方面。 **2. ...
在SQL Server中,存储过程`killspid`被创建在`master`数据库中,用于杀死指定数据库的所有活动进程,这在执行数据库恢复之前可能是必要的,以确保没有其他事务正在运行。 4. **连接数据库**: - 代码中使用了`get...
【标题】"一个简单的SQL记事本"是一个用于学习和实践SQL语句的简单工具,它可能是一个轻量级的应用程序或文本编辑器,专为编写和执行SQL查询而设计。这样的工具通常具有基础的代码高亮、自动完成和结果查看功能,...
- 这个命令用于显示指定会话ID的最近执行的T-SQL语句。 - 示例命令: ```sql DBCC INPUTBUFFER(会话ID); ``` - 将“会话ID”替换为实际被阻塞的会话ID,可以帮助分析阻塞的具体原因。 3. **使用SQL Server ...
7. 停止捕获:在不需要继续捕获时,应关闭捕获进程,以减少不必要的资源消耗。 8. 应用结果:根据分析结果,调整数据库配置、优化SQL语句或改进应用程序代码,以提高性能或增强安全性。 需要注意的是,DB2捕获操作...
3. **会话SQL查询**:用于查看某个会话当前正在执行的SQL语句。 ```sql SELECT sid, status_id, sql_id FROM v$session WHERE sid = 68; ``` 结合`v$sql`视图,我们可以进一步获取SQL文本信息: ```sql ...
声明部分定义变量和游标,执行部分包含SQL语句和PL/SQL语句,异常处理部分处理运行时错误。 2. **变量(Variables)**:PL/SQL支持各种数据类型,如NUMBER、VARCHAR2、DATE等,可以声明局部变量用于存储中间结果。 ...
我们可以使用`try...catch`语句来捕获异常并弹出错误信息。 远程连接SQL Server数据库 在实际应用中,SQL Server数据库可能位于远程服务器上。这时,我们需要在连接字符串中指定服务器的IP地址和端口号,以便实现...
它基于ADO.NET,为开发人员提供了易于使用的类库,如SqlConnection、SqlCommand等,可以方便地编写和执行SQL语句。 3. **JDBC驱动程序**: 对于Java开发者,SQL Server 2005也提供了JDBC驱动,使得Java应用程序可以...
7. **FMDB库**:FMDB是由SQLite封装的Objective-C框架,它提供了简单易用的接口来执行SQL语句,处理查询结果,以及管理数据库事务。使用FMDB,开发者可以更方便地进行数据库操作,无需直接与SQLite的C API交互。 8....