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 ...
随机推荐
- 13 ,CSS 入门基础,行内排版内嵌式排版和外部排版样式
1.认识 CSS 2.传统 HTML 设计网页版面的缺点 3.CSS 的特点 4.CSS 的排版样式 13.1 认识CSS CSS的英文全名是 Cascading Style Sheets,中文可翻译 ...
- 07-HTML-内嵌标签
<html> <head> <title>内嵌标签学习</title> <meta charset="utf-8"/> ...
- 洛谷P1337 [JSOI2004]平衡点 / 吊打XXX(模拟退火)
题目描述 如图:有n个重物,每个重物系在一条足够长的绳子上.每条绳子自上而下穿过桌面上的洞,然后系在一起.图中X处就是公共的绳结.假设绳子是完全弹性的(不会造成能量损失),桌子足够高(因而重物不会垂到 ...
- ambari 卸载脚本
#!/bin/bash # Program: # uninstall ambari automatic PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bi ...
- Git 常用命令及操作总结
Git常用命令及操作总结 By:授客 QQ:1033553122 利用TortoiseGit克隆源码库到本地 1.安装TortoiseGit 2.打开Git,进入到源码库,点击图示红色选框框选按钮,弹 ...
- Python 'xxx' codec can't decode byte xxx常见编码错
'xxx' codec can't decode byte xxx常见编码错误处理 by:授客 QQ:1033553122 测试环境 python 3.3.2 win7 问题描述 利用python文件 ...
- git 入门教程之撤销更改
撤销更改 相信你已经了解了 git 的基本概念,也清楚了工作区,暂存区和版本库的关系,现在让我们用所学的知识继解决实际问题吧! 背景 正常看得见的目录是我们最为熟悉的工作区,在工作中不可能总是100% ...
- 记录一次spark连接mysql遇到的问题
版权声明:本文为博主原创文章,未经博主允许不得转载 在使用spark连接mysql的过程中报错了,错误如下 08:51:32.495 [main] ERROR - Error loading fact ...
- SQL Server Replication的分发服务器的快照文件夹位置查找
SQL Server分发服务器配置中,需要配置快照文件夹(Snapshot Folder),用于存储发布的数据和架构文件的工作目录,那么如何查找当前SQL Server数据库服务器的分发服务器的快照文 ...
- mssql sqlserver 获取指定日期为本月第几个工作日
转自:http://www.maomao365.com/?p=6771 摘要: 下文讲述工作中,需要获取指定日期在当月的工作日 下文讲述常规的指定工作日所在月的天数分析,实现思路:1 生成一个国家法定 ...