首页 » OceanBase » Oceanbase中的Session SQL Trace DBMS_MONITOR (Similar to Oracle 10046 event)

Oceanbase中的Session SQL Trace DBMS_MONITOR (Similar to Oracle 10046 event)

在oracle中诊断session级SQL执行跟踪是最常见的SQL Trace的方法有很多,如sql_trace、10046 event,   DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION,  DBMS_SUPPORT.START_TRACE,  DBMS_MONITOR.SESSION_TRACE_ENABLE  还有Oracle 11g 后更加灵活的Events++ 语法, 甚至还有围绕trace file 解读的一堆工具,如trprof, TRCSESS , tvdxtat, 10046.pl, orasrp等工具。但在国产数据库中生态工具并不完善,之前记录过达梦的10053 event, 这里简单记录Oceanbase 数据库中配置 session SQL Trace使用DBMS_MONITOR的方法OB_SESSION_TRACE_ENABLE,功能基本雷同Oracle DBMS_MONITOR的 SESSION_TRACE_ENABLE.

— 仅用于OB 企业版

语法

DBMS_MONITOR.OB_SESSION_TRACE_ENABLE(
    session_id   IN  BINARY_INTEGER DEFAULT NULL,
    level        IN  INT,
    sample_pct   IN  NUMBER,
    record_policy IN VARCHAR2);
Parameter Description
session_id The session_id for enabling end-to-end diagnosis. If empty, it represents the session_id of the current session.
level The trace collection level for end-to-end diagnosis, which is an integer.
sample_pct The sampling percentage, with a range of [0,1].
record_policy The printing policy, including the following options:

  • ALL: Print trace for all sampled queries.
  • ONLY_SLOW_QUERY: Print trace only for slow queries.
  • SAMPLE_AND_SLOW_QUERY: Print trace for slow queries, while other requests are printed based on the probability of _print_sample_percentage.

level:打印日志的粒度。目前支持三个粒度等级,其中 Level1 为模块级别的粗粒度,Level3 的粒度最精细。

调用 DBMS_MONITOR.OB_SESSION_TRACE_ENABLE开启 跟踪

session 1执行SQL过程中,session 2跟踪

确保目标会话处于活动状态

#  session 1 
obclient(SYS@orcl)[SYS]> select count(*) from dba_tables;
+----------+
| COUNT(*) |
+----------+
|      196 |
+----------+
1 row in set (0.655 sec)

obclient(SYS@orcl)[SYS]> select count(*) from dba_tables,dba_tables,dba_tables,dba_tables;

---  结果出来前跟踪
+------------+
| COUNT(*)   |
+------------+
| 1475789056 |
+------------+
1 row in set (6 min 22.082 sec)

#session 2

[admin@observer1 ~]$ sh connorcl.sh
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 275746
Server version: OceanBase 4.2.5.3 (r103000142025033110-f5b88cd987f23383677f2eb53cf76ed38a48979b) (Built Mar 31 2025 11:04:29)

Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

obclient(SYS@orcl)[SYS]> select * from v$version;
+---------------------------------------------------------------------------------------------------------------+--------+
| BANNER                                                                                                        | CON_ID |
+---------------------------------------------------------------------------------------------------------------+--------+
| OceanBase 4.2.5.3 (r103000142025033110-f5b88cd987f23383677f2eb53cf76ed38a48979b) (Built Mar 31 2025 11:04:29) |      0 |
+---------------------------------------------------------------------------------------------------------------+--------+
1 row in set (0.034 sec)


obclient(SYS@orcl)[SYS]> select * from dual;
+-------+
| DUMMY |
+-------+
| X     |
+-------+
1 row in set (0.002 sec)

obclient(SYS@orcl)[SYS]> show processlist;
+------------+-----------+---------------------+------+---------+-------+--------+------------------------------------------------------------------+
| ID         | USER      | HOST                | DB   | COMMAND | TIME  | STATE  | INFO                                                             |
+------------+-----------+---------------------+------+---------+-------+--------+------------------------------------------------------------------+
| 3221534888 | SYS       | 172.20.22.216:36646 | SYS  | Sleep   |   570 | SLEEP  | NULL                                                             |
| 3221496489 | SYS       | 172.20.22.216:28608 | SYS  | Sleep   |   270 | SLEEP  | NULL                                                             |
| 3221491471 | STANDBYRO | 172.20.22.215:45160 | SYS  | Sleep   |     9 | SLEEP  | NULL                                                             |
|     275746 | SYS       | 172.20.22.213:30850 | SYS  | Query   |     0 | ACTIVE | show processlist                                                 |
| 3221551946 | SYS       | 172.20.22.216:36644 | SYS  | Sleep   | 22470 | SLEEP  | NULL                                                             |
| 3221506606 | STANDBYRO | 172.20.22.214:58074 | SYS  | Sleep   |   393 | SLEEP  | NULL                                                             |
| 3221489078 | STANDBYRO | 172.20.22.213:8590  | SYS  | Sleep   |     0 | SLEEP  | NULL                                                             |
| 3221586354 | STANDBYRO | 172.20.22.213:35262 | SYS  | Sleep   |   663 | SLEEP  | NULL                                                             |
| 3221618043 | STANDBYRO | 172.20.22.213:22396 | SYS  | Sleep   |     2 | SLEEP  | NULL                                                             |
| 3221629216 | STANDBYRO | 172.20.22.214:59684 | SYS  | Sleep   |     1 | SLEEP  | NULL                                                             |
| 3222031496 | STANDBYRO | 172.20.22.213:45336 | SYS  | Sleep   |     0 | SLEEP  | NULL                                                             |
| 3222251396 | SYS       | 172.20.22.216:53378 | SYS  | Sleep   |  2070 | SLEEP  | NULL                                                             |
| 3222251938 | SYS       | 172.20.22.216:53380 | SYS  | Sleep   |   270 | SLEEP  | NULL                                                             |
| 3222240781 | SYS       | 172.20.22.216:12076 | SYS  | Sleep   |   270 | SLEEP  | NULL                                                             |
| 3222175226 | STANDBYRO | 172.20.22.215:25498 | SYS  | Sleep   |     4 | SLEEP  | NULL                                                             |
| 3222231890 | STANDBYRO | 172.20.22.214:34154 | SYS  | Sleep   |     2 | SLEEP  | NULL                                                             |
| 3222012528 | STANDBYRO | 172.20.22.214:45740 | SYS  | Sleep   |   699 | SLEEP  | NULL                                                             |
| 3222074146 | STANDBYRO | 172.20.22.213:8458  | SYS  | Sleep   |     4 | SLEEP  | NULL                                                             |
| 3222172888 | STANDBYRO | 172.20.22.213:59154 | SYS  | Sleep   |   180 | SLEEP  | NULL                                                             |
| 3221896511 | STANDBYRO | 172.20.22.213:65266 | SYS  | Sleep   |  7717 | SLEEP  | NULL                                                             |
| 3221939020 | SYS       | 172.20.22.216:37564 | SYS  | Sleep   |   270 | SLEEP  | NULL                                                             |
| 3221773566 | STANDBYRO | 172.20.22.214:51246 | SYS  | Sleep   |     3 | SLEEP  | NULL                                                             |
| 3221775524 | STANDBYRO | 172.20.22.213:51446 | SYS  | Sleep   |     0 | SLEEP  | NULL                                                             |
| 3221808181 | SYS       | 172.20.22.216:23330 | SYS  | Sleep   |   270 | SLEEP  | NULL                                                             |
| 3221899722 | STANDBYRO | 172.20.22.214:10296 | SYS  | Sleep   |   338 | SLEEP  | NULL                                                             |
| 3221775365 | STANDBYRO | 172.20.22.215:40524 | SYS  | Sleep   |     9 | SLEEP  | NULL                                                             |
| 3221889661 | STANDBYRO | 172.20.22.213:65268 | SYS  | Sleep   |     0 | SLEEP  | NULL                                                             |
|     285297 | SYS       | 172.20.22.213:12560 | SYS  | Query   |    10 | ACTIVE | select count(*) from dba_tables,dba_tables,dba_tables,dba_tables |
+------------+-----------+---------------------+------+---------+-------+--------+------------------------------------------------------------------+
28 rows in set (0.056 sec)

obclient(SYS@orcl)[SYS]> show proxysession;
+----------------------+--------+----------+--------+------+---------------------+------+-------------+-------------------+-------------------+-------+-------+-----------+-----------------+
| proxy_sessid         | Id     | Cluster  | Tenant | User | Host                | db   | trans_count | svr_session_count | state             | tid   | pid   | using_ssl | server_protocol |
+----------------------+--------+----------+--------+------+---------------------+------+-------------+-------------------+-------------------+-------+-------+-----------+-----------------+
| 12399560778330603643 | 275746 | enmotest | orcl   | sys  | 172.20.22.213:51934 | SYS  |           0 |                 1 | MCS_ACTIVE_READER | 15564 | 15564 |         0 | OceanBase 2.0   |
+----------------------+--------+----------+--------+------+---------------------+------+-------------+-------------------+-------------------+-------+-------+-----------+-----------------+
1 row in set (0.004 sec)


obclient(SYS@orcl)[SYS]> CALL DBMS_MONITOR.OB_SESSION_TRACE_ENABLE(285297, 3, 0.5, 'ONLY_SLOW_QUERY');
ORA-00600: internal error code, arguments: -4179, User session ID does not exist. not allowed
at oceanbase.DBMS_MONITOR.OB_SESSION_TRACE_ENABLE , line : 6, col : 1

obclient(SYS@orcl)[SYS]> show proxysession attribute 285297;
+----------------------------------+----------------------+----------------+
| attribute_name                   | value                | info           |
+----------------------------------+----------------------+----------------+
| proxy_sessid                     | 12399560778330603645 | cs common      |
| cs_id                            | 285297               | cs common      |
| cluster                          | enmotest             | cs common      |
| tenant                           | orcl                 | cs common      |
| user                             | sys                  | cs common      |
| host_ip                          | 172.20.22.213        | cs common      |
| host_port                        | 52816                | cs common      |
| db                               | SYS                  | cs common      |
| total_trans_cnt                  | 0                    | cs common      |
| svr_session_cnt                  | 1                    | cs common      |
| active                           | true                 | cs common      |
| read_state                       | MCS_ACTIVE_READER    | cs common      |
| tid                              | 15569                | cs common      |
| pid                              | 15564                | cs common      |
| idc_name                         |                      | cs common      |
| modified_time                    | 0                    | cs stat        |
| reported_time                    | 0                    | cs stat        |
| hot_sys_var_version              | 2                    | cs var version |
| sys_var_version                  | 11                   | cs var version |
| user_var_version                 | 1                    | cs var version |
| last_insert_id_version           | 0                    | cs var version |
| db_name_version                  | 3                    | cs var version |
| server_ip                        | 172.20.22.214        | curr used ss   |
| server_port                      | 2881                 | curr used ss   |
| server_sessid                    | 3221941901           | curr used ss   |
| ss_id                            | 265527               | curr used ss   |
| state                            | MSS_ACTIVE           | curr used ss   |
| transact_count                   | 8                    | curr used ss   |
| server_trans_stat                | 1                    | curr used ss   |
| hot_sys_var_version              | 2                    | curr used ss   |
| sys_var_version                  | 11                   | curr used ss   |
| user_var_version                 | 1                    | curr used ss   |
| last_insert_id_version           | 0                    | curr used ss   |
| db_name_version                  | 3                    | curr used ss   |
| is_checksum_supported            | 0                    | curr used ss   |
| is_safe_read_weak_supported      | 0                    | curr used ss   |
| is_checksum_switch_supported     | 1                    | curr used ss   |
| checksum_switch                  | 1                    | curr used ss   |
| enable_extra_ok_packet_for_stats | 1                    | curr used ss   |
+----------------------------------+----------------------+----------------+
39 rows in set (0.019 sec)

obclient(SYS@orcl)[SYS]> CALL DBMS_MONITOR.OB_SESSION_TRACE_ENABLE(3221941901, 3, 0.5, 'ONLY_SLOW_QUERY');
Query OK, 0 rows affected (0.003 sec)


跟踪完成后,可以在 OBServer 节点的日志目录下查看跟踪日志。

cd /home/admin/oceanbase/log
grep [trace_id] observer.log

DBMS_MONITOR 包的 OB_SESSION_TRACE_DISABLE 过程根据 Session ID 关闭指定 Session 的 Trace。如果 session_id 为 NULL,表示当前 Session。语法如下:

DBMS_MONITOR.OB_SESSION_TRACE_DISABLE(session_id IN BINARY_INTEGER);

如果不使用SESSION ID,也可以使用Client Identifier,Module/Action 等。希望后期能做解读trace file的工具。

打赏

,

目前这篇文章还没有评论(Rss)

我要评论