Orcle 12c 新特性---增强实时监控操作

1 说明

Real-time database operations monitoring allows database administrators to easily monitor and troubleshoot performance problems in long running jobs. This feature helps make long running database operations like a batch job, an ETL (extraction, loading, and transformation) operation, or a scheduler job, transparent so that administrators can see exactly what the operation is doing and at what time. It does this by tracking the SQL and PL/SQL commands that make up a database operation along with their time lines.
用于监控长时间运行的事务,包括job,ETL相关操作,SQL查询等。可以很方便DBA监控和解决相关性能问题。

在11G中,Real-Time SQL Monitoring可以让你监控单个SQL或PL-SQL的执行情况。从12c开始,提供了实时监控更为复杂的操作。例如,并行查询,DML,DDL等语句。默认情况下,当SQL语句并行运行时,或在单个执行中消耗至少5秒的CPU或I / O时间时,Real-Time SQL Monitoring就会自动启动。

下图是数据库操作的架构图
Orcle 12c 新特性---增强实时监控操作_第1张图片

1.1 监控数据库操作

使用DBMS_SQL_MONITOR包来开始,结束监控数据的操作,然后会生成一份报告用于查询操作的详细信息。
Orcle 12c 新特性---增强实时监控操作_第2张图片
查看监控数据库操作的相关视图

  • V$SQL_MONITOR
  • V$SQL_PLAN_MONITOR
  • V$SQL_MONITOR_SESSTAT

更详细的信息请查看官方文档说明
http://docs.oracle.com/database/121/TGSQL/tgsql_monit.htm#TGSQL94599

1.2 启用和禁用监控数据库操作

默认上开启的,会自动监控长时间运行的查询。statistics_level需要设置为TYPICAL(默认值)或ALL。但是前提条件是CONTROL_MANAGEMENT_PACK_ACCESS必须是DIAGNOSTIC+TUNING(默认值)。

设置方式如下:

SQL> SHOW PARAMETER statistics_level

NAME             TYPE        VALUE
----------------------------------- ----------- -----
statistics_level       string      BASIC

SQL> ALTER SYSTEM SET STATISTICS_LEVEL='TYPICAL';

1.2.1 启用和禁用语句级别的监控

虽然系统级别启用了监控,但是可以通过HINT来禁用,启用语句的监控。

–启用

SELECT /*+ MONITOR */ SYSDATE FROM DUAL;

–禁用

SQL> SELECT * /*+NO_MONITOR*/ FROM sales ORDER BY time_id;

2 实验

2.1 创建表并插入数据

drop table cndba1;
drop table cndba2;


CREATE TABLE cndba1 AS
SELECT level AS id,
       'Description for ' || level AS description
FROM   dual
CONNECT BY level <= 1000000;
 

CREATE TABLE cndba2 AS
SELECT level AS id,
       'Description for ' || level AS description
FROM   dual
CONNECT BY level <= 1000000;

2.2 开始监控

VARIABLE l_dbop_eid NUMBER;
BEGIN
  :l_dbop_eid := DBMS_SQL_MONITOR.begin_operation (
                   dbop_name       => 'db_op_1',
                   dbop_eid        => :l_dbop_eid,
                   forced_tracking => DBMS_SQL_MONITOR.force_tracking
                 );
END;
/

2.3 对表进行操作

对cndba1进行查询,对cndba2删除1000行数据

BEGIN
  FOR cur_rec IN (SELECT * FROM cndba1) LOOP
    NULL;
  END LOOP;


  delete from cndba2 where rownum<=1000;
  commit;
END;
/

2.4 结束监控操作

BEGIN
  DBMS_SQL_MONITOR.end_operation (
    dbop_name       => 'db_op_1',
    dbop_eid        => :l_dbop_eid
  );
END;
/

2.5 查看监控的状态

SET LINESIZE 200
SELECT dbop_name, dbop_exec_id, status
FROM   v$sql_monitor
WHERE  username = 'LEI';
DBOP_NAME       DBOP_EXEC_ID STATUS
-------------   ----------------- ------------ 
db_op_1        1    DONE
 	       0    DONE (ALL ROWS)

2.6 查看监控报告

–HTML格式的

SET LONG 1000000
SET LONGCHUNKSIZE 1000000
SET LINESIZE 1000
SET PAGESIZE 0
SET TRIM ON
SET TRIMSPOOL ON
SET ECHO OFF
SET FEEDBACK OFF

SPOOL ./report_sql_monitor.htm
SELECT DBMS_SQL_MONITOR.report_sql_monitor(
  dbop_name    => 'db_op_1',
  type         => 'HTML',
  report_level => 'ALL') AS report
FROM dual;
SPOOL OFF

效果图:
Orcle 12c 新特性---增强实时监控操作_第3张图片

如果是ACTIVE格式,需要联网才能查看,因为需要下载一些公用代码。

ACTIVE效果图: 非常好看,统计的信息也非常的全
Orcle 12c 新特性---增强实时监控操作_第4张图片

3 总结

是对11g的Real-Time SQL Monitoring特性一个提升,提供更为详细的信息。对于性能的开销和瓶颈非常容易查看。

你可能感兴趣的:(Oracle,12c)