iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >【SQL】Oracle SQL monitor
  • 807
分享到

【SQL】Oracle SQL monitor

2024-04-02 19:04:59 807人浏览 八月长安
摘要

据说,在oracle企业版数据库中有一个免费的工具,乃sql优化之利器,那就是Oracle SQL monitor。下面,由DBA+社群原创专家周俊,给大家科普一下这一被埋没的神器。专家简介周俊DBA+社群原创专家具有14年以上Oracle

据说,在oracle企业版数据库中有一个免费的工具,乃sql优化之利器,那就是Oracle SQL monitor。下面,由DBA+社群原创专家周俊,给大家科普一下这一被埋没的神器。

专家简介


Oracle SQL monitor_Oracle SQL monitor


周俊


DBA+社群原创专家


具有14年以上Oracle数据库技术支持经验,在IBM的7年间担任华东区非IBM loGo产品技术支持团队team leader,同时是IBM中国区Oracle 软件支持服务的技术负责人。目前任职于Oracle公司,专注于Oracle数据集成方案设计和实施。获得Oracle 8i~11g OCP、Oracle 10g OCM、DB2 administrator、PMP等证书。


一前言


说实话,我以前也不太爱用花哨的图形界面工具进行SQL优化,最近参加了Oracle RWP培训,我发现Oracle 11g 引入的SQL monitor确实蛮好用的,是个被埋没的SQL优化利器。最重要的是Oracle SQL monitor在Oracle企业版数据库中是免费供大家使用的。下面我和大家分享如何利用SQL monitor简化我们的SQL优化工作。


二如何打开SQL monitor report


方法一


Step1:打开Oracle EM console主页,切换到性能页面,点击右下角的SQL监控


Oracle SQL monitor_Oracle SQL monitor_02

Step2:选择 时间范围,可以按照持续时间或者数据库时间对SQL语句进行排序


Oracle SQL monitor_Oracle SQL monitor_04


在Oracle 11g中,当SQL满足以下条件之一就会被sql monitor捕获到,监控数据被记录在v$sql_monitor视图中。


当SQL并行执行时,会立即被实时监控到


当SQL单进程运行时,如果消耗超过5秒的CPU或I/O时间,它也会被监控到


使用提示的sql语句


Step3:选择您想要进行SQL优化语句前,点击第一列状态栏中勾号,Oracle就会将该SQL语句的执行情况华丽丽的展现在您面前。


Oracle SQL monitor_Oracle SQL monitor_05


方法二


在性能页面左下角的顶级会话中,点击您想要查看的SQL语句ID。


Oracle SQL monitor_Oracle SQL monitor_06


在SQL监控页面点击第一列状态栏中的图标。


Oracle SQL monitor_Oracle SQL monitor_06


方法三


如果您没有配置Oracle EM,但是知道待优化SQL语句对应的SQLID,可以通过以下脚本利用SQL monitor查看SQL语句在数据库中真实的执行计划。


在SecureCRT中启用log跟踪,选择保存的日志文件(后缀html)


在SQLPLUS 中执行


set trimspool on


set arraysize 512


set trim on


set pagesize 0


set linesize 1000


set long 1000000


set lonGChunksize 1000000


spool sqlmon.html


select  dbms_sqltune.report_sql_monitor (sql_id=>'input your SQL ID', report_level=>'ALL', type=>'ACTIVE') from dual;


spool off


cat sqlmon.html


在SecureCRT中关闭log跟踪,打开保存的文件就可以看到SQL执行计划了。


三如何利用SQL monitor进行SQL优化


使用SQL monitor打开SQL执行计划后,


我们通常会根据最右边CPU和wait的activity,找到SQL执行计划中资源消耗较高的步骤。


然后查看一下Oracle估算的返回行数和实际的返回行数是否相差很大,如果估算的行数和实际的行数相差不大,至少表明目前对应数据库对象上的统计信息是准确的。


本例中Oracle估算的返回行数和实际返回行数相差不大,Oracle优化器采用了布隆过滤和HASH 右连的执行计划,接下去我们通常会检查SQL的筛选条件,判断是否使用了正确的索引等优化手段,这里我就不一一展开了。


Oracle SQL monitor_Oracle SQL monitor_08


Oracle SQL monitor_Oracle SQL monitor_09


下面是我最近遇到的一个利用SQL monitor进行快速SQL优化的案例分享。


SQL Text:SQL语句比较长 ,我截选了其中部分有代表性的SQL。


Oracle SQL monitor_Oracle SQL monitor_10


利用SQL monitor我们可以在执行计划中快速的定位需要重点关注的步骤。


Oracle SQL monitor_Oracle SQL monitor_11


我们看到该SQL语句已经运行了5.4小时,Oracle估算的返回行数和实际行数相差非常大,表明相关表上的统计信息不准确。


我们对DMS_CONTAINERS和DMS_CONTAINER_JN表进行了统计信息收集,统计信息重新收集后Oracle马上使用了DMS_CONTAINER_JN表上正确的IYC_CNTRID字段的索引,但是DMS_CONTAINERS表上仍旧使用了选择度不高TYPE字段索引。


进一步查看SQL语句,我们发现该SQL是通过视图YMS_GUI_LOAD_CONTAINERS_VW访问DMS_CONTAINERS表,该视图的定义如下:


Oracle SQL monitor_Oracle SQL monitor_12


由于在视图where条件中有IYC_TYPE字段,Oracle优先选用IYC_TYPE字段上的索引对DMS_CONTAINERS表进行访问,在CBO下,Oracle不会再去自动选择其他字段上单独的索引进行访问(除非手工设定AND-EQUAL提示),因此没有选择筛选度更高的YC_LSTUPDDT字段上的索引。 如果需要Oracle使用到其他字段上的索引,最简单的方法就是在IYC_TYPE和YC_LSTUPDDT字段上创建联合索引,Oracle在分析索引列的时候自动会分析两个列的组合情况,从而选择该复合索引。


Oracle SQL monitor_Oracle SQL monitor_13


总结


通过前面的介绍相信大家对Oracle SQL monitor华丽、直观的界面留下了深刻的印象,下面我再总结一下使用Oracle SQL monitor进行SQL优化的步骤:


通过SQL monitor监控我们可以快速地发现异常运行的SQL语句,如果您知道SQL对应的SQL ID也可以通过脚本利用SQL monitor查看SQL语句在数据库中真实的执行计划。


查看SQL执行计划,通过CPU和WAIT的活动比重快速找到SQL执行计划中的关键步骤。


通过比较Oracle估算的行数和实际返回行数能够快速判断是否需要重新收集统计信息,帮助我们分析Oracle优化器选择的SQL执行计划有无问题。


具体的SQL优化方法大家可以参考之前丁俊大师在DBA+社群分享过的Oracle SQL优化专题(关注DBA+社群微信公众号:dbaplus,回复“001”即可查看此文),我在这就不做进一步展开啦。


工欲善其事,必先利其器。小伙伴们,还等什么呢,赶紧去试试Oracle SQL monitor这个被埋没的SQL优化利器吧!


您可能感兴趣的文档:

--结束END--

本文标题: 【SQL】Oracle SQL monitor

本文链接: http://www.lsjlt.com/news/49284.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【SQL】Oracle SQL monitor
    据说,在Oracle企业版数据库中有一个免费的工具,乃SQL优化之利器,那就是Oracle SQL monitor。下面,由DBA+社群原创专家周俊,给大家科普一下这一被埋没的神器。专家简介周俊DBA+社群原创专家具有14年以上Oracle...
    99+
    2024-04-02
  • SQL Monitor Report怎么用
    这篇文章主要为大家展示了“SQL Monitor Report怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQL Monitor Report怎么用”这...
    99+
    2024-04-02
  • oracle SQL优化器SQL Tuning Advisor (STA)
    一  创建测试数据 SQL> conn scott/oracle Connected. SQL> create table obj as select * from...
    99+
    2024-04-02
  • Oracle在PL/SQL中嵌入SQL语句
    PL/SQL块中只能直接嵌入SELECT、DML(INSERT,UPDATE,DELETE)以及事务控制语句(COMMIT,ROLLBACK,SAVEPOINT), 而不能直...
    99+
    2024-04-02
  • Oracle中PL/SQL与SQL有什么区别
    PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库中的一...
    99+
    2024-04-19
    Oracle PL/SQL SQL
  • oracle automatic sql tuning advisor
    1. oracle11g 新特性 新的asta任务默认每晚运行。创建数据库时默认启动。sys_auto_sql_tuning_task,作为自动管理任务框架的成分每晚自动运行。 从AWR中基...
    99+
    2024-04-02
  • 怎么使用sql monitor获取更加详细的执行计划
    这篇文章主要讲解了“怎么使用sql monitor获取更加详细的执行计划”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用sql monitor获取更加...
    99+
    2024-04-02
  • Oracle中SQL有哪些
    这篇文章将为大家详细讲解有关Oracle中SQL有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。100、---------------修改表结构,添加字段------...
    99+
    2024-04-02
  • Oracle case when改写SQL
    Oracle case when 改写 SQL --- 说明:案例来自《 收获,不止SQL 优化 》 创建测试数据: SQL >   drop &...
    99+
    2024-04-02
  • 怎么调优Oracle SQL
    本篇内容介绍了“怎么调优Oracle SQL”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SQL调优是尝试...
    99+
    2024-04-02
  • ORACLE SQL 查询练手
    SQL> conn scott/tiger@clonepdb_plugConnected.SQL> desc empName ...
    99+
    2024-04-02
  • oracle在哪里写sql
    oracle中编写sql代码的位置有:1. sql developer工具的sql工作区;2. sql*plus命令行工具;3. 其他工具和位置,如oracle enterprise m...
    99+
    2024-04-19
    oracle sql语句
  • oracle怎么写sql语句
    编写 oracle sql 语句需要遵循以下步骤:1. 连接到数据库;2. 选择要检索的列;3. 指定条件(可选);4. 对结果进行排序(可选);5. 限制结果数量(可选);6. 使用聚...
    99+
    2024-04-19
    oracle sql语句 聚合函数
  • oracle中sql如何操作
    这篇文章将为大家详细讲解有关oracle中sql如何操作,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。oracle用户sys、system区别:sys用户是超级用户,具有...
    99+
    2024-04-02
  • SQL中如何连接Oracle
    SQL中如何连接Oracle,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、设置PL/SQL,添加服务名称打开Net Manager:开始&...
    99+
    2024-04-02
  • Oracle DG运维常用SQL
    =====运维SQL --查看switch状态 select switchover_status from v$database; --查看数据库状态  set lin...
    99+
    2024-04-02
  • Oracle中执行动态SQL
    一、概述 在一般的sql操作中,sql语句基本上都是固定的,如: SELECT t.empno,t.ename FROM scott.emp t WHERE...
    99+
    2024-04-02
  • Oracle系列:(31)Oracle SQL语句优化
    (01)选择最有效率的表名顺序(笔试常考)       ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,     &nb...
    99+
    2024-04-02
  • oracle中sql正则怎么写
    本篇内容介绍了“oracle中sql正则怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Oracle中使用正则表达式需先使用REGEXP...
    99+
    2023-07-05
  • oracle如何防止sql注入
    oracle防止sql注入的方法:oracle中的DBMS_ASSERT包中包含了相关的函数,将传入的参数进行检查,若不符合相关规则,那sql语句执行会报错,从而达到防止sql注入的风险,例如:ENQUOTE_LITERAL:输入字符串,并...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作