Oracle 11g实时SQL监控 v$sql_monitor
Oracle 11g实时SQL监控: 前面提到,在Oracle Database 11g中,v$session视图增加了一些新的字段,这其中包括SQL_EXEC_START和SQL_EXEC_ID,
这两个字段实际上代表了Oracle 11g的一个新特性:实时的SQL监控(Real Time SQL Monitoring)。 在Oracle 11g之前的版本,长时间运行的SQL可以通过监控v$session_longops来观察,当某个操作执行时间超过6秒,
就会被记录在v$session_longops 中,通常可以监控到全表扫描、全索引扫描、哈希联接、并行查询等操作; 而在Oracle 11g中,当SQL并行执行时,会立即被实时监控到,或者当SQL单进程运行时,如果消耗超过5秒的CPU或I/O时间,它也会被监控到。
监控数据被记录在v$sql_monitor视图中,当然也可以通过Oracle 11g新增的 package DBMS_MONITOR 来主动对SQL执行监控部署。 来看一下主要视图v$sql_monitor的结构: Name Type Nullable Default Comments
------------------------- -------------- -------- ------- --------
KEY NUMBER Y
STATUS VARCHAR2(19) Y
USER# NUMBER Y
USERNAME VARCHAR2(30) Y
MODULE VARCHAR2(64) Y
ACTION VARCHAR2(64) Y
SERVICE_NAME VARCHAR2(64) Y
CLIENT_IDENTIFIER VARCHAR2(64) Y
CLIENT_INFO VARCHAR2(64) Y
PROGRAM VARCHAR2(48) Y
PLSQL_ENTRY_OBJECT_ID NUMBER Y
PLSQL_ENTRY_SUBPROGRAM_ID NUMBER Y
PLSQL_OBJECT_ID NUMBER Y
PLSQL_SUBPROGRAM_ID NUMBER Y
FIRST_REFRESH_TIME DATE Y
LAST_REFRESH_TIME DATE Y
REFRESH_COUNT NUMBER Y
SID NUMBER Y
PROCESS_NAME VARCHAR2(5) Y
SQL_ID VARCHAR2(13) Y
SQL_TEXT VARCHAR2(2000) Y
IS_FULL_SQLTEXT VARCHAR2(1) Y
SQL_EXEC_START DATE Y
SQL_EXEC_ID NUMBER Y
SQL_PLAN_HASH_VALUE NUMBER Y
EXACT_MATCHING_SIGNATURE NUMBER Y
FORCE_MATCHING_SIGNATURE NUMBER Y
SQL_CHILD_ADDRESS RAW(8) Y
SESSION_SERIAL# NUMBER Y
PX_IS_CROSS_INSTANCE VARCHAR2(1) Y
PX_MAXDOP NUMBER Y
PX_MAXDOP_INSTANCES NUMBER Y
PX_SERVERS_REQUESTED NUMBER Y
PX_SERVERS_ALLOCATED NUMBER Y
PX_SERVER# NUMBER Y
PX_SERVER_GROUP NUMBER Y
PX_SERVER_SET NUMBER Y
PX_QCINST_ID NUMBER Y
PX_QCSID NUMBER Y
ERROR_NUMBER VARCHAR2(40) Y
ERROR_FACILITY VARCHAR2(4) Y
ERROR_MESSAGE VARCHAR2(256) Y
BINDS_XML CLOB Y
OTHER_XML CLOB Y
ELAPSED_TIME NUMBER Y
QUEUING_TIME NUMBER Y
CPU_TIME NUMBER Y
FETCHES NUMBER Y
BUFFER_GETS NUMBER Y
DISK_READS NUMBER Y
DIRECT_WRITES NUMBER Y
IO_INTERCONNECT_BYTES NUMBER Y
PHYSICAL_READ_REQUESTS NUMBER Y
PHYSICAL_READ_BYTES NUMBER Y
PHYSICAL_WRITE_REQUESTS NUMBER Y
PHYSICAL_WRITE_BYTES NUMBER Y
APPLICATION_WAIT_TIME NUMBER Y
CONCURRENCY_WAIT_TIME NUMBER Y
CLUSTER_WAIT_TIME NUMBER Y
USER_IO_WAIT_TIME NUMBER Y
PLSQL_EXEC_TIME NUMBER Y
JAVA_EXEC_TIME NUMBER Y
RM_LAST_ACTION VARCHAR2(48) Y
RM_LAST_ACTION_REASON VARCHAR2(30) Y
RM_LAST_ACTION_TIME DATE Y
RM_CONSUMER_GROUP VARCHAR2(30) Y SQL> 注意这里的SQL_EXEC_ID就是v$session视图中新增字段的来源。这个视图还记录了SQL的CPU_TIME以及BUFFER_GETS等重要信息,
对于诊断SQL性能问题具有极大的帮助。结合v$sql_monitor视图与v$sql_plan_monitor视图可以进一步查询SQL的执行计划等信息。
联合一些其他视图,如v$active_session_history、v$session、v$session_longops、v$sql、v$sql_plan等,可以获得关于SQL的更多信息。 v$sql_monitor 收集的信息每秒刷新一次,接近实时,当SQL执行完毕,信息并不会立即从v$sql_monitor中删除,至少会保留1分钟,
v$sql_plan_monitor 视图中的执行计划信息也是每秒更新一次,当SQL执行完毕,它们同样至少被保留1分钟。 实时SQL监控需要 statistics_level 初始化参数设置为TYPICAL或ALL:
SQL> show parameter statistics_level NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
statistics_level string TYPICAL SQL> select statistics_name,session_status,system_status,activation_level,session_settable
2 from v$statistics_level
3 where statistics_name = 'SQL Monitoring'; STATISTICS_NAME SESSION_STATUS SYSTEM_STATUS ACTIVATION_LEVEL SESSION_SETTABLE
---------------------------------------------------------------- -------------- ------------- ---------------- ----------------
SQL Monitoring ENABLED ENABLED TYPICAL YES 同时CONTROL_MANAGEMENT_PACK_ACCESS参数必须是DIAGNOSTIC+TUNING(这是缺省设置): SQL> show parameter control_manage NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_management_pack_access string DIAGNOSTIC+TUNING 在如上设置下,数据库会启动自动的实时SQL监控,Oracle还提供Hints可以强制制定对SQL执行监控或者不允许监控,这两个Hints是monitor与no_monitor。 强制对某个SQL使用实时监控可以如下改写SQL:
select /*+ monitor */ count(*) from emp where sal > 5000;
指定不执行实时监控:
select /*+ no_monitor */ count(*) from emp where sal > 5000 查看数据库中已经生成的监控信息可以使用DBMS_SQLTUNE包来实现: SQL> set long 10000000
SQL> set longchunksize 10000000
SQL> set linesize 200
SQL> select dbms_sqltune.report_sql_monitor from dual; REPORT_SQL_MONITOR
-------------------------------------------------------------------------------------
SQL Monitoring Report SQL Text
------------------------------
select /*+ monitor */ count(*) from emp where sal > 5000 Global Information
------------------------------
Status : DONE (ALL ROWS)
Instance ID : 1
Session : SCOTT (142:43)
SQL ID : 2bhgjhbypqw17
SQL Execution ID : 16777216
Execution Started : 10/29/2018 23:46:53
First Refresh Time : 10/29/2018 23:46:53
Last Refresh Time : 10/29/2018 23:46:53
Duration : .001s
Module/Action : SQL*Plus/-
Service : SYS$USERS
Program : sqlplus@prod (TNS V1-V3)
Fetch Calls : 1 Global Stats
======================================
| Elapsed | Cpu | Fetch | Buffer |
| Time(s) | Time(s) | Calls | Gets |
======================================
| 0.00 | 0.00 | 1 | 7 |
====================================== SQL Plan Monitoring Details (Plan Hash Value=2083865914)
==========================================================================================================================
| Id | Operation | Name | Rows | Cost | Time | Start | Execs | Rows | Activity | Activity Detail |
| | | | (Estim) | | Active(s) | Active | | (Actual) | (%) | (# samples) |
==========================================================================================================================
| 0 | SELECT STATEMENT | | | | 1 | +0 | 1 | 1 | | |
| 1 | SORT AGGREGATE | | 1 | | 1 | +0 | 1 | 1 | | |
| 2 | TABLE ACCESS FULL | EMP | 1 | 3 | | | 1 | | | |
==========================================================================================================================
Oracle 11g实时SQL监控 v$sql_monitor的更多相关文章
- SQL*PLUS下使用AUTOTRACE、sql顾问、实时sql监控
高级SQL优化(三) 常用优化工具 ——<12年资深DBA教你Oracle开发与优化—— 高级SQL优化(一) ——<12年资深DBA教你Oracle开发与优化——性能优化部分 1 aut ...
- Oracle 11g 中SQL性能优化新特性之SQL性能分析器(SQLPA)
Oracle11g中,真实应用测试选项(the Real Application Testing Option)提供了一个有用的特点,叫SQL性能分析器(SQL Performance Analyze ...
- Oracle 11G CRUD操作监控单个表
前言: 线上oracle数据库有张表的数据有些乱,依据应用db的log和应用的log也没有检查出来谁改动了.所以决定把这张单表做个具体的insert.update.delete监控.一:使用数据 ...
- Oracle 11g 禁用 SQL Tuning Advisor 与 auto space advisor
生产上有一套11g数据库alert.log报错ORA-16957: SQL Analyze time limit interrupt. 查询MOS相关文档Troubleshooting: ORA-1 ...
- Oracle 11g 常用sql记录
--表备份 create table xxx_bak as select * from xxx; --表数据清除 truncate table xxx --锁表问题处理sql开始 select ses ...
- Oracle 11g PL/SQL Developer登入时候报ORA-12638: 身份证明检索失败的解决办法(安装了6遍,吐血之作)
1.报这个错的时候会弹出一个对话框,先点击终止 2.然后汇报出这个是错误的窗口,然后点击确认,但是不要关这个安装窗口也不要其他不必要操作,窗口最小化 3.找到product文件夹,一般在app文件里 ...
- In Oracle 11g, how to change the order of the results of a sql without “order by”?(转)
oracle 11g 当sql语句中不加order by的时候,好像是按rowid的顺序返回结果的.我也看过一些相关的文档,oracle的官方意思就是不加order by,就不保证输出的顺序. 那么, ...
- PL/SQL Developer连接本地Oracle 11g 64位数据库
转摘:http://www.cnblogs.com/ymj126/p/3712727.html 用于学习,笔记,以备后用. 1.登录PL/SQL Developer 这里省略Oracle数据库和PL/ ...
- 【转】Win7 64bit Oracle 11g 使用PL/SQL Developer 连接时提示“SQL*Net not properly installed”
转载:http://www.cnblogs.com/xihuaodc/p/3189257.html 因为之前的Oracle不能用了,所以重新安装了64位的Oracle,安装一路正常 完了之后安装了P ...
随机推荐
- SpringMVC 异步与定时使用示例
1.Spring 的xml配置: <aop:aspectj-autoproxy/> <task:annotation-driven executor="annotation ...
- 在PeopleSoft中,什么是AlterAudit,Sysaudit和DDDAudit报告
Alter Audit-是一个进程,它标识任何需要SQL Alter process的记录.即:如果AD中定义的record与数据库的中定义不匹配则标识该记录为应该修改. SQL Alter-AD中的 ...
- python+selenium+PhantomJS爬取网页动态加载内容
一般我们使用python的第三方库requests及框架scrapy来爬取网上的资源,但是设计javascript渲染的页面却不能抓取,此时,我们使用web自动化测试化工具Selenium+无界面浏览 ...
- 通过git上传本地代码到github仓库
最近呢,武汉天气燥热,在公司没啥事,就自己写了一下小demo. 作为一个菜鸟,只在github上扒过别人的代码,还没自己上传过,就试了一下,遇到了一些坑,记录一下. 前提是电脑上安装了git,没有安装 ...
- 使用 new XMLHttpRequest() 制作下载文件进度条
mui 进度控件使用方法: 检查当前容器(container控件)自身是否包含.mui-progressbar类: 当前容器包含.mui-progressbar类,则以当前容器为目标控件,直接显示进度 ...
- Linux 之父自传《just for fun》读书笔记
一次偶然的机会,看到了阮一峰老师关于这本书的介绍,当时我就觉得这本书相当有趣. 在没有读这本书之前,我觉得 linus 作为发明 Linux 系统的人,应该是一个比较严肃的人,就像我的老师一样.但事实 ...
- VS调试IDAPython脚本
本文最后修改时间:20180213 1.安装VS插件PTVS , 这一步与第2步中安装版本应该一致,否则最后调试时会连不上 https://github.com/Microsoft/PTVS/ 2.安 ...
- Percona XtraBackup 备份还原篇
Percona XtraBackup 安装介绍篇已经对Percona XtraBackup的功能和安装做了比较详细的介绍,那么本篇我们直接进入主题,如何使用XtraBackup做备份.还原,下面主要介 ...
- A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. No Java virtual machine was found after searching the following locations: /usr/local/eclipse/
linux系统下jdk是已经安装好的情况之下软件出现 A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be av ...
- kali2016.2(debian)快速安装mysql5.7.17
糊里糊涂的删除了kali原本的mysql5.6.27版本,原本的mysql与很多软件关联在一起,每次安装都失败,后来把相关的都卸载了(悲催的浪费了一天) 下载地址 debian mysql下载地址 ...