runstats是《Oracle Database 9i/10g/11g编程艺术:深入数据库体系结构》作者编写的一个工具,能对做同一件事情的两个不同方法进行比较,得出孰优孰劣的结果。我们只需要提供两个不同的方法,余下的事情都由runstats负责。runstats只负责测量3个要素:
- 墙上时钟或耗时时间:知道墙上时钟或耗时时间很有用,不过这不是最重要的信息。
- 系统统计结果:会并排地i显示每个方法做某件事(如执行一个解析调用)的次数,并展示出两者之差
- 闩定(latching):这是这个报告的关键输出。
要使用runstats,需要能访问几个V$视图,并创建一个表来存储统计结果,还要创建runstats包。为此,需要访问4个V$表(就是那些神奇的动态性能表):V$STATNAME、V$MYSTAT和V$LATCH和V$TIMER。这四个表其实是别名,真正对象的名称应为V_$STATNAME、V_$MYSTAT、 V_$LATCH、 V_$TIMER,并且都是在sys账户下。如果其他账户要访问这四张表, 需要进行授权。我们需要再scott下进行操作,因此需要将这四张表的select权限授予给scott账户。下面进行具体操作。
1在sys账户下
1.1将V_$表的查询权限授权给scott
2在scott账户下
2.1查询V_$表
2.2创建视图
2.3创建信息收集表
2.4创建runstats包
2.5创建包体
3.使用runstats
3.1创建表T
3.2创建存储过程proc1,使用了一条带绑定变量的SQL语句
3.3创建存储过程proc2,分别为要插入的每一行构造一条独立的SQL语句
3.4使dbms_output.put_line 生效
要使用dbms_output.put_line ,则必须在sqlplus中显式声明:
set serverout on
比如:
SQL> set serverout on SQL> exec dbms_output.put_line('asda'); asda--输出结果 PL/SQL procedure successfully completed
3.5执行runstats中的方法以及两个存储过程
输出结果为:
本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2012/06/14/2548952.html,如需转载请自行联系原作者