测量/监视每次执行sql的响应时间

时间:2017-12-05 11:24:03

标签: oracle oracle11g database-performance query-performance

在Oracle 11g中,我想监视特定sql的响应时间(我知道sql的sql_id)。意思是,我想知道每次执行时sql的响应时间。我会'#34;打开它"一段时间后,我希望看到类似的数据:

var vrienden = ["Maikel", "Anna", "Peter", "Savannah"]; function zoekauto(){ var zoekString = prompt ("welke naam zoek je???") var nr = vrienden.indexOf(zoekString); if(nr > -1){ document.getElementById("p5").innerHTML += " -- gevonden " + nr + "<br>"; } else{ document.getElementById("p5").innerHTML = zoekString + " is niet gevonden"; } } zoekauto();

我们可以忽略我希望看到输出的确切格式,但有没有办法让我监控这样我可以获得每次执行sql的响应时间?

感谢。

1 个答案:

答案 0 :(得分:1)

首先,您应该跟踪您的sql(假设sql_id6b0z40gs9m759):

SQL> ALTER SESSION SET sql_trace=TRUE;

SQL> ALTER SESSION SET EVENTS 'trace[rdbms.SQL_Optimizer.*][sql:6b0z40gs9m759]';
[ SQL> ALTER SYSTEM SET EVENTS 'sql_trace [sql:&&sql_id] bind=true, wait=true'; ] -- or use this as alternative.

SQL> ALTER SESSION SET TRACEFILE_IDENTIFIER = "TrcSqlParag"; -- adds this text to your trace file and makes it more recognizable by you.

SQL> SHOW PARAMETER user_dump_dest -- trace files are produced in this directory

-- For 11g DB, you may easily query v$diag_info view to see your file destination :
SQL> SELECT value FROM   v$diag_info WHERE  name = 'Default Trace File';

-- You can identify the trace file for a specific session using the V$SESSION and V$PROCESS views :
SQL> SELECT p.tracefile FROM v$session s JOIN v$process p ON s.paddr = p.addr WHERE  s.sid = &ses_id;

-- You may finish tracing whenever you want :
SQL> ALTER SESSION SET sql_trace=FALSE; 

让我们有这样的转储文件:

/u01/app/oracle/admin/MYDB11G/udump/mydb11g_ora_TrcSqlParag.trc

跟踪文件不易读取,我们需要tkprof utility从操作系统中读取它:

$ cd /u01/app/oracle/admin/MYDB11G/udump/
$ tkprof mydb11g_ora_TrcSqlParag.trc TrcSqlParag_Translated1.txt explain=<username>/<pwd>@mydb11g table=sys.plan_table sys=no waits=yes
相关问题