【发布时间】:2015-08-21 16:35:16
【问题描述】:
我需要为一组查询顺序生成report_sql_monitor,并将其假脱机到文件中。 所以我有以下内容:
- 查询所在的文件(例如 test.sql)
- 假脱机文件(例如 output.txt)
Test.sql / 以下是修正后的版本:
set pagesize 1000
set echo off
set feedback on
set timing on
set autotrace on stat
define file=./output.txt
define file
col prev_sql_id new_value SQLID --get the SQL_ID of previous query to put it further into report_sql_monitor
select /*+ Monitor */ name, last_name from family --first query
/
select prev_id from v$session where sid = sys_context('USERENV','SID') --get SQL_ID
/
spool &file
select dbms_sqltune.report_sql_monitor(
sql_id => '&SQLID',
type = > 'TEXT',
report_level => 'ALL') as report from dual --Report was generated
/
spool off --close spooling
--the second query
select /*+ Monitor */ salary,month from salary
/
select prev_sql_id from v$session where sid =sys_context('USERENV','SID') --get SQL_ID
/
spool &file append
select dbms_sqltune.report_sql_monitor(
sql_id => '&SQLID',
type = > 'TEXT',
report_level => 'ALL') as report from dual -- REPORT IS NOT GENERATED
/
spool off
问题是上面的 test.sql 只为第一个带有“统计”的查询生成 report_sql_monitor 报告。生成的文件 (output.txt) 应具有以下内容:
- 在 test.sql 中每个查询的 SQL 监控报告 - 未完成
- 在 SQL 监控报告之后应该有标准的查询统计数据 - 已完成:
统计
xx recursive call
xx db block gets
xx consistent gets
xx physical reads
and so forth
【问题讨论】:
-
那么,你的问题是什么?
-
@OldProgrammer report_sql_monitor 不会为第二个查询生成,只为第一个查询生成。但是我需要为 test.sql 中的 每个顺序 查询生成它