高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——

高级SQL优化(一) ——《12年资深DBA教你Oracle开发与优化——性能优化部分

1 autotrace

set autotrace on

2 使用SQL调优顾问

删除掉bigtab和smalltab上的所有索引:

declare

my_task_name varchar2(30);

my_sqltext clob;

begin

my_sqltext := 'select count(*) from bigtable a, smalltable b where a.object_name=b.table_name';

my_task_name := DBMS_SQLTUNE.create_tuning_task(

sql_text => my_sqltext,

user_name => 'ZJ',

scope => 'COMPREHENSIVE',

time_limit => 60,

task_name => 'bigtable_jointo_smalltab_sql',

description => '优化smalltable 和 bigtable连接的例子');

Dbms_Sqltune.execute_tuning_task(task_name => 'bigtable_jointo_smalltab_sql');

end;

创建完成后验证是否完成:

select task_name,status from user_advisor_log where task_name = 'bigtable_jointo_smalltab_sql';

也可以通过SQL语句来查看结果,此方法是我们最喜欢的方法:

select dbms_sqltune.report_tuning_task('bigtable_jointo_smalltab_sql') from dual;

/*  依据优化结果创建索引*/

create index idx_smalltable_tablename on smalltable(table_name) tablespace users;

create index idx_bigtable_tablename on bigtable(object_name) tablespace users;

3  实时SQL监视

实时SQL监视(real-time SQL Monitorning)是Oracle 11g的另外一个新功能,其作用是允许用户监视正在执行的SQL。默认情况下,当使用并行查询、或者当SQL执行的CPU或I/O超过5秒钟时会自动启动。

也可以使用优化提示强制使用实时SQL监视功能,如下:

select /*+ monitor */

count(*)

from bigtab a, smalltab b

where a.object_name = b.table_name

如果要强制不使用实时SQL监视功能,则也可以使用优化提示:

select /*+ no_monitor */

count(*)

from bigtab a, smalltab b

where a.object_name = b.table_name

与实时SQL监视相关的系统视图包括:

uV$SQL_MONITOR

uV$SQL_PLAN_MONITOR

uV$ACTIVE_SESSION_HISTORY

uV$SESSION

uV$SESSION_LONGOPS

uV$SQL

uV$SQL_PLAN

对于刚刚监视的结果,可以使用DBMS包读取:

select dbms_sqltune.report_sql_monitor from dual;

SQL*PLUS下使用AUTOTRACE、sql顾问、实时sql监控的更多相关文章

  1. [转]ms sql 2000 下批量 附加/分离 数据库(sql语句)

    这次公司要把MS SQL Server 2000 服务器上的数据库复制到新的服务器上面去,于是几百个数据库文件就交给我附加到新服务器上了   以前一直没接触过这方面的东西,于是果断谷歌了也百度了  找 ...

  2. SQL Server下ADO.NET 怎么获取数据库SQL语句INSERT,UPDATE,DELETE了多少行数据

    ADO.NET 在发送SQL语句到SQL Server数据库后,怎么知道真正INSERT,UPDATE,DELETE了多少行数据呢? 使用SQL Server内置的全局变量@@ROWCOUNT即可,@ ...

  3. Web安全学习笔记 SQL注入下

    Web安全学习笔记 SQL注入下 繁枝插云欣 --ICML8 SQL注入小技巧 CheatSheet 预编译 参考文章 一点心得 一.SQL注入小技巧 1. 宽字节注入 一般程序员用gbk编码做开发的 ...

  4. Oracle 11g实时SQL监控 v$sql_monitor

    Oracle 11g实时SQL监控: 前面提到,在Oracle Database 11g中,v$session视图增加了一些新的字段,这其中包括SQL_EXEC_START和SQL_EXEC_ID, ...

  5. 性能优化之永恒之道(实时sql优化vs业务字段冗余vs离线计算)

    在项目中,随着时间的推移,数据量越来越大,程序的某些功能性能也可能会随之下降,那么此时我们不得不需要对之前的功能进行性能优化.如果优化方案不得当,或者说不优雅,那可能将对整个系统产生不可逆的严重影响. ...

  6. 59、Spark Streaming与Spark SQL结合使用之top3热门商品实时统计案例

    一.top3热门商品实时统计案例 1.概述 Spark Streaming最强大的地方在于,可以与Spark Core.Spark SQL整合使用,之前已经通过transform.foreachRDD ...

  7. util包下的Date与sql包下的Date之间的转换

    Java中的时间类型 java.sql包下给出三个与数据库相关的日期时间类型,分别是: Date:表示日期,只有年月日,没有时分秒.会丢失时间: Time:表示时间,只有时分秒,没有年月日.会丢失日期 ...

  8. PL/SQL Developer下设置“长SQL自己主动换行”

    ***********************************************声明*************************************************** ...

  9. EOS下控制台以及图形界面打印sql语句

    EOS下控制台以及图形界面打印sql语句 场景需求:在eos中打印sql语句,包括数据实体,查询实体和命名sql的sql语句. 所需资源: P6spy:负责拦截sql,并打印. Sqlprofiler ...

随机推荐

  1. 利用Meida Service的Java SDK来调用Azure Media Services的Index V2实现视频字幕自动识别

    Azure Media Services新的Index V2 支持自动将视频文件中的语音自动识别成字幕文件WebVtt,非常方便的就可以跟Azure Media Player集成,将一个原来没字幕的视 ...

  2. Genymotion中文手册(官方用户手册翻译)

    目录 1.概述    2 2.特点    2 2.1最擅长于虚拟Android    2 2.2高可控性    2 2.3管理你的设备    2 2.4从Eclipse中开启虚拟设备    3 3.要 ...

  3. childNodes在IE与Firefox中的区别

    嗯,这是前几天写一个遍历双层List集合,动态输出对应的表格并且控制固定表头的效果时发现的一个知识点,程序编好后在IE8浏览器下测试没问题,在Firefox35.0.1总是报错,后来发现是IE与FF对 ...

  4. eclipse删除已经记录的用户名和密码

    1.从windows > preference > Team > SVN #SVN Interface这个位置看看. 2.如果是用的JavaHL, 删除C:\Users\[YourU ...

  5. cordova android ios

    一 . cordova android 中js 调用JAVA 方法: 二 . cordova ios --->js 调用object (一); 三 .cordova ios --->OC ...

  6. jQ复制按钮的插件zclip

    zclip官网:http://www.steamdev.com/zclip/ swf文件国内下载:ZeroClipboard.swf jQuery-zclip是一个复制内容到剪贴板的jQuery插件, ...

  7. solr5.5教程-solr.home 配置

    solr/home是solr实例化core核的依据和入口,是必不可少的配置. 1.在web.xml中设置 <env-entry> <env-entry-name>solr/ho ...

  8. banner淡出效果

    <div class="banner"> <div class="ban"></div> <ul class=&quo ...

  9. s3c6410_u-boot-2010.03移植【续】

    本文接上一篇:http://www.cnblogs.com/tanghuimin0713/p/3965528.html 6.3)重新编译,烧写,运行 U-Boot - ::) for SMDK6410 ...

  10. Java do while求和

    用do while结构求0~100的整数数字之和. 代码如下: public class DoWhileDemo { public static void main(String[] args) { ...