Note
- For V4.3.x, this view was renamed to GV$OB_ACTIVE_SESSION_HISTORY starting from V4.3.5. For V4.2.x, this view was renamed to GV$OB_ACTIVE_SESSION_HISTORY starting from V4.2.2.
- This view was introduced starting from V4.0.0.
Purpose
The GV$ACTIVE_SESSION_HISTORY view displays the active session history of all OBServer nodes in all tenants.
Columns
| Column | Type | Nullable? | Description |
|---|---|---|---|
| SVR_IP | varchar(46) | NO | IP address of the server where the sample is located. |
| SVR_PORT | bigint(20) | NO | Port number of the server where the sample is located. |
| SAMPLE_ID | bigint(20) | NO | Unique ID of the sample on the local server. |
| SAMPLE_TIME | timestamp(6) | NO | Sampling time. |
| CON_ID | bigint(20) | NO | Tenant ID. |
| USER_ID | bigint(20) | NO | User ID of the sampled session. |
| SESSION_ID | bigint(20) | NO | The ID of the sampled session. For V4.3.x:
|
| SESSION_TYPE | varchar(10) | NO | Session type. Valid values include: |
| SESSION_STATE | varchar(7) | NO | Session state. Valid values include:EVENT field. |
| SQL_ID | varchar(32) | NO | SQL ID. |
| PLAN_ID | bigint(20) | NO | Plan ID of the sampled SQL statement in the plan cache. This field is used to associate sampling points with plans. |
| TRACE_ID | varchar(64) | NO | Trace ID of the operator. |
| EVENT | varchar(64) | NO | Description of the waiting event. |
| EVENT_NO | bigint(20) | NO | Internal ID of the waiting event. This field is used for queries across tables. |
| EVENT_ID | bigint(20) | NO | ID of the current waiting event.
Note
|
| P1TEXT | varchar(64) | NO | Name of parameter 1 of the waiting event. The name varies based on the event. |
| P1 | bigint(20) | NO | Value of parameter 1 of the waiting event. |
| P2TEXT | varchar(64) | NO | Name of parameter 2 of the waiting event. The name varies based on the event. |
| P2 | bigint(20) | NO | Value of parameter 2 of the waiting event. |
| P3TEXT | varchar(64) | NO | Name of parameter 3 of the waiting event. The name varies based on the event. |
| P3 | bigint(20) | NO | Value of parameter 3 of the waiting event. |
| WAIT_CLASS | varchar(64) | NO | Type of the waiting event. |
| WAIT_CLASS_ID | bigint(20) | NO | ID of the type of the waiting event. This field is used for queries across tables. |
| TIME_WAITED | bigint(20) | NO | Total waiting time of the waiting event in microseconds (us). |
| SQL_PLAN_LINE_ID | bigint(20) | NO | Number of the SQL operator in the SQL plan when the session was sampled. |
| GROUP_ID | bigint(20) | NO | ID of the resource group to which the sample belongs. |
| PLAN_HASH | bigint(20) unsigned | NO | Plan hash value of the current SQL statement. |
| THREAD_ID | bigint(20) | NO | ID of the thread where the active session is located. |
| STMT_TYPE | bigint(20) | NO | SQL statement type of the active session. |
| TIME_MODEL | bigint(20) | NO | time model information, which is a set of IN_XXX fields (such as IN_PARSE, IN_PL_PARSE, and so on). |
| IN_PARSE | varchar(1) | NO | Whether the session is parsing an SQL statement when the sample is taken. |
| IN_PL_PARSE | varchar(1) | NO | Whether the session is parsing a PL/SQL statement when the sample is taken. |
| IN_PLAN_CACHE | varchar(1) | NO | Whether the session is matching a plan in the plan cache when the sample is taken. |
| IN_SQL_OPTIMIZE | varchar(1) | NO | Whether the session is optimizing an SQL statement when the sample is taken. |
| IN_SQL_EXECUTION | varchar(1) | NO | Whether the session is executing an SQL statement when the sample is taken. |
| IN_PX_EXECUTION | varchar(1) | NO | Whether the session is executing a parallel SQL statement when the sample is taken. If the session is in this state, it is also in the IN_SQL_EXECUTION state. |
| IN_SEQUENCE_LOAD | varchar(1) | NO | Whether the session is loading a value from an auto-increment column or a sequence when the sample is taken. |
| IN_COMMITTING | varchar(1) | NO | Whether the sample is taken during the transaction commit phase.
NoteThis field was introduced in V4.2.1. |
| IN_STORAGE_READ | varchar(1) | NO | Whether the sample is taken during the storage read phase.
NoteThis field was introduced in V4.2.1. |
| IN_STORAGE_WRITE | varchar(1) | NO | Whether the sample is taken during the storage write phase.
NoteThis field was introduced in V4.2.1. |
| IN_REMOTE_DAS_EXECUTION | varchar(1) | NO | Whether the sample is taken during the remote DAS execution phase.
NoteThis field was introduced in V4.2.1. |
| IN_FILTER_ROWS | varchar(1) | NO | Indicates whether the current sampling point is in the storage pushdown execution phase.
NoteThis field was introduced starting from V4.2.2. |
| IN_RPC_ENCODE | varchar(1) | NO | Indicates that the current SQL is performing a serialization operation.
NoteFor V4.2.x, this field was introduced starting from V4.2.5. |
| IN_RPC_DECODE | varchar(1) | NO | Indicates that the current SQL is performing a deserialization operation.
NoteFor V4.2.x, this field was introduced starting from V4.2.5. |
| IN_CONNECTION_MGR | varchar(1) | NO | Indicates that the current SQL is performing a connection establishment operation.
NoteFor V4.2.x, this field was introduced starting from V4.2.5. |
| PROGRAM | varchar(64) | NO | The name of the program being executed at the current sampling point:
NoteThis field was introduced starting from V4.2.2. |
| MODULE | varchar(64) | NO | MODULE value recorded for the session when the sample is taken. This value is set by the DBMS_APPLICATION_INFO.SET_MODULE package. |
| ACTION | varchar(64) | NO | ACTION value recorded for the session when the sample is taken. This value is set by the DBMS_APPLICATION_INFO.SET_ACTION package. |
| CLIENT_ID | varchar(64) | NO | CLIENT_ID value recorded for the session when the sample is taken. This value is set by the DBMS_SESSION.set_identifier package. |
| BACKTRACE | varchar(512) | NO | Auxiliary debugging field that records the code call stack when the event occurs. The value of this field is always NULL. |
| TM_DELTA_TIME | bigint(20) | NO | Time interval for calculating the time model, in microseconds.
Note
|
| TM_DELTA_CPU_TIME | bigint(20) | NO | CPU time spent in the past TM_DELTA_TIME time interval, in microseconds.
Note
|
| TM_DELTA_DB_TIME | bigint(20) | NO | Database call time spent in the past TM_DELTA_TIME time interval, in microseconds.
Note
|
| TOP_LEVEL_SQL_ID | CHAR(32) | NO | Top-level SQL ID.
Note
|
| IN_PLSQL_COMPILATION | varchar(1) | NO | PL compilation status: Y/N.
Note
|
| IN_PLSQL_EXECUTION | varchar(1) | NO | PL execution status: Y/N.
Note
|
| PLSQL_ENTRY_OBJECT_ID | bigint(20) | NO | OBJECT ID of the top-level PL.
Note
|
| PLSQL_ENTRY_SUBPROGRAM_ID | bigint(20) | NO | Subprogram ID of the top-level PL.
Note
|
| PLSQL_ENTRY_SUBPROGRAM_NAME | varchar(32) | NO | Name of the subprogram of the top-level PL.
Note
|
| PLSQL_OBJECT_ID | bigint(20) | NO | ID of the PL currently being executed.
Note
|
| PLSQL_SUBPROGRAM_ID | bigint(20) | NO | ID of the subprogram currently being executed.
Note
|
| PLSQL_SUBPROGRAM_NAME | varchar(32) | NO | Name of the subprogram currently being executed.
Note
|
| TX_ID | bigint(20) | NO | ID of the current transaction.
Note
|
| BLOCKING_SESSION_ID | bigint(20) | NO | ID of the session that blocks the current session. This field takes effect only in lock conflict scenarios and displays the ID of the session that holds the lock.
Note
|
| TABLET_ID | bigint(20) | NO | ID of the tablet that the current SQL statement is processing.
Note
|
| PROXY_SID | bigint(20) | NO | ID of the proxy session.
Note
|
| TX_ID | bigint(20) | NO | The current transaction ID.
Note
|
| DELTA_READ_IO_REQUESTS | bigint(20) | NO | The number of read operations between two sampling points.
Note
|
| DELTA_READ_IO_BYTES | bigint(20) | NO | The cumulative size of files read between two sampling points.
Note
|
| DELTA_WRITE_IO_REQUESTS | bigint(20) | NO | The number of write operations between two sampling points.
Note
|
| DELTA_WRITE_IO_BYTES | bigint(20) | NO | The cumulative size of files written between two sampling points.
Note
|
Sample query
Query the active session history records of all OBServer nodes in all tenants.
obclient [oceanbase]> SELECT * FROM oceanbase.GV$ACTIVE_SESSION_HISTORY limit 1\G
The query result is as follows:
*************************** 1. row ***************************
SVR_IP: xx.xx.xx.xx
SVR_PORT: 2882
SAMPLE_ID: 1147927
SAMPLE_TIME: 2025-04-28 16:50:43.134698
CON_ID: 1002
USER_ID: 200001
SESSION_ID: 2305843009213708985
SESSION_TYPE: BACKGROUND
SESSION_STATE: ON CPU
SQL_ID: NULL
PLAN_ID: 0
TRACE_ID: YB42AC1E87E9-000XXXXXXXXXXXXXXXXXXXXXXX-0-0
EVENT:
EVENT_NO: 0
EVENT_ID: NULL
P1TEXT:
P1: 0
P2TEXT:
P2: 0
P3TEXT:
P3: 0
WAIT_CLASS: OTHER
WAIT_CLASS_ID: 100
TIME_WAITED: 0
SQL_PLAN_LINE_ID: NULL
GROUP_ID: 0
PLAN_HASH: NULL
THREAD_ID: 50802
STMT_TYPE: NULL
TIME_MODEL: 65536
IN_PARSE: N
IN_PL_PARSE: N
IN_PLAN_CACHE: N
IN_SQL_OPTIMIZE: N
IN_SQL_EXECUTION: N
IN_PX_EXECUTION: N
IN_SEQUENCE_LOAD: N
IN_COMMITTING: N
IN_STORAGE_READ: N
IN_STORAGE_WRITE: N
IN_REMOTE_DAS_EXECUTION: N
IN_FILTER_ROWS: N
IN_RPC_ENCODE: N
IN_RPC_DECODE: N
IN_CONNECTION_MGR: Y
PROGRAM: T1002_TimerWK
MODULE: TimerWK
ACTION: NULL
CLIENT_ID: NULL
BACKTRACE: NULL
TM_DELTA_TIME: 4067194
TM_DELTA_CPU_TIME: 9149
TM_DELTA_DB_TIME: 55108
TOP_LEVEL_SQL_ID: NULL
IN_PLSQL_COMPILATION: N
IN_PLSQL_EXECUTION: N
PLSQL_ENTRY_OBJECT_ID: NULL
PLSQL_ENTRY_SUBPROGRAM_ID: NULL
PLSQL_ENTRY_SUBPROGRAM_NAME: NULL
PLSQL_OBJECT_ID: NULL
PLSQL_SUBPROGRAM_ID: NULL
PLSQL_SUBPROGRAM_NAME: NULL
TX_ID: NULL
BLOCKING_SESSION_ID: NULL
TABLET_ID: NULL
PROXY_SID: 2305843009213708985
DELTA_READ_IO_REQUESTS: 0
DELTA_READ_IO_BYTES: 0
DELTA_WRITE_IO_REQUESTS: 0
DELTA_WRITE_IO_BYTES: 0
References
After retrieving the active session history, you can generate an ASH report as needed for analysis. For a detailed introduction to ASH, see ASH report.