GV$OB_SQL_AUDITはグローバルSQL監査テーブルであり、各リクエストのクライアントソース、実行サーバー情報、実行状態情報、待機時間、および実行段階ごとの所要時間などを確認するために使用できます。
SQL Audit関連の設定
SQL Auditのスイッチを設定します。
obclient> ALTER SYSTEM SET enable_sql_audit = true; /*SQL Auditを有効にする*/ obclient> ALTER SYSTEM SET enable_sql_audit = false; /*SQL Auditを無効にする*/SQL Auditが使用するメモリがテナントメモリに占める割合を設定します。デフォルトのメモリ割合は3で、設定範囲は[0,80]です。
obclient> SET global ob_sql_audit_percentage = 3; Query OK, 0 rows affected
SQL Auditのメモリ回収メカニズム
テナントのバックグラウンドタスクは、1秒ごとにOBServerノードおよびSQL Auditのメモリ使用状況を確認し、SQLのメモリ回収をトリガーするかどうかを判断します。SQL Auditのメモリ上限は、ob_sql_audit_percentageに基づいて割り当てられる利用可能な最大メモリです。
SQL Auditの実際のメモリ使用量が指定されたしきい値に達すると、メモリ回収を開始する条件が満たされ、メモリ回収が開始されます。SQL Auditの実際のメモリ使用量が指定されたしきい値まで下がると、メモリ回収を停止する条件が満たされ、メモリ回収が停止します。SQL Auditのメモリ回収メカニズムは以下の表のとおりです。
トリガーメカニズム |
SQL Auditメモリ範囲 |
メモリ回収のトリガー条件 |
メモリ回収の停止条件 |
|---|---|---|---|
| メモリ使用 | [0,64M] | メモリ上限 *50% | 0 M |
| メモリ使用 | [64M,100M] | メモリ上限-20M | メモリ上限-40 M |
| メモリ使用 | [100M,5G] | メモリ上限 *80% | メモリ上限 *60% |
| メモリ使用 | [5G,+∞) | メモリ上限-1G | メモリ上限-2 G |
| レコード数 | なし | 900 万 | 800万 |
GV$OB_SQL_AUDIT フィールド説明
フィールド名 |
タイプ(MySQLモード) |
タイプ(Oracleモード) |
説明 |
|---|---|---|---|
| SVR_IP | varchar(46) | varchar(46) | IPアドレス |
| SVR_PORT | bigint(20) | number(38) | ポート番号 |
| REQUEST_ID | bigint(20) | number(38) | リクエストのID番号 |
| SQL_EXEC_ID | bigint(20) | number(38) | SQL計画が実行されている場合、対応するSQL IDを表示します |
| TRACE_ID | varchar(128) | varchar(128) | このステートメントのTrace ID |
| SID | bigint(20) unsigned | number(38) | セッションID |
| CLIENT_IP | varchar(46) | varchar(46) |
|
| CLIENT_PORT | bigint(20) | number(38) | リクエストを送信したClient Port |
| TENANT_ID | bigint(20) | number(38) | リクエストを送信したテナントID |
| TENANT_NAME | varchar(64) | varchar(46) | リクエストを送信したテナント名 |
| EFFECTIVE_TENANT_ID | bigint(20) | number(38) | テナントID |
| USER_ID | bigint(20) | number(38) | リクエストを送信したユーザーID |
| USER_NAME | varchar(64) | varchar(46) | リクエストを送信したユーザー名 |
| USER_GROUP | bigint(20) | number(38) | ユーザーが属するリソースグループのID |
| USER_CLIENT_IP | varchar(32) | varchar(32) | リクエストを送信したクライアントのIP |
| DB_ID | bigint(20) unsigned | number(38) | データベースID |
| DB_NAME | varchar(128) | varchar(128) | データベース名 |
| SQL_ID | varchar(32) | varchar(32) | このSQLのID |
| QUERY_SQL | longtext | CLOB | 実際のSQLステートメント |
| PLAN_ID | bigint(20) | number(38) | 実行計画ID |
| AFFECTED_ROWS | bigint(20) | number(38) | 影響行数 |
| RETURN_ROWS | bigint(20) | number(38) | 戻り行数 |
| PARTITION_CNT | bigint(20) | number(38) | このリクエストに関連するパーティション数 |
| RET_CODE | bigint(20) | number(38) | 実行結果の戻りコード |
| QC_ID | bigint(20) unsigned | number(38) | 並列クエリ中のqc_id |
| DFO_ID | bigint(20) | number(38) | 並列クエリ中のdfo_id |
| SQC_ID | bigint(20) | number(38) | 並列クエリ中のsqc_id |
| WORKER_ID | bigint(20) | number(38) | スレッドID |
| EVENT | varchar(64) | varchar(64) | 最長待機イベント名 |
| P1TEXT | varchar(64) | varchar(64) | 待機イベントパラメータ1 |
| P1 | bigint(20) unsigned | number(38) | 待機イベントパラメータ1の値 |
| P2TEXT | varchar(64) | varchar(64) | 待機イベントパラメータ2 |
| P2 | bigint(20) unsigned | number(38) | 待機イベントパラメータ2の値 |
| P3TEXT | varchar(64) | varchar(64) | 待機イベントパラメータ3 |
| P3 | bigint(20) unsigned | number(38) | 待機イベントパラメータ3の値 |
| LEVEL | bigint(20) | number(38) | 待機イベントのLevelレベル |
| WAIT_CLASS_ID | bigint(20) | number(38) | 待機イベントが属するClass ID |
| WAIT_CLASS# | bigint(20) | number(38) | 待機イベントが属するClassのインデックス |
| WAIT_CLASS | varchar(64) | varchar(64) | 待機イベントが属するClass名 |
| STATE | varchar(19) | varchar(19) | 待機イベントの状態 |
| WAIT_TIME_MICRO | bigint(20) | number(38) | この待機イベントが待っていた時間、単位:マイクロ秒 |
| TOTAL_WAIT_TIME_MICRO | bigint(20) | number(38) | 実行プロセス全体の待機時間の合計、単位:マイクロ秒 |
| TOTAL_WAITS | bigint(20) | number(38) | 実行プロセス全体の待機回数 |
| RPC_COUNT | bigint(20) | number(38) | 送信RPC数 |
| PLAN_TYPE | bigint(20) | number(38) | 実行計画タイプ:
|
| IS_INNER_SQL | tinyint(4) | number(38) | 内部SQLリクエストかどうか |
| IS_EXECUTOR_RPC | tinyint(4) | number(38) | 現在のリクエストがRPCリクエストかどうか |
| IS_HIT_PLAN | tinyint(4) | number(38) | プランキャッシュにヒットしたかどうか |
| REQUEST_TIME | bigint(20) | number(38) | 実行開始時刻、単位:マイクロ秒 |
| ELAPSED_TIME | bigint(20) | number(38) | リクエスト受信から実行終了までの総時間、単位:マイクロ秒 |
| NET_TIME | bigint(20) | number(38) | RPC送信からリクエスト受信までの時間、単位:マイクロ秒 |
| NET_WAIT_TIME | bigint(20) | number(38) | リクエスト受信からキュー待ち時間までの時間、単位:マイクロ秒 |
| QUEUE_TIME | bigint(20) | number(38) | リクエストのキュー待ち時間、単位:マイクロ秒 |
| DECODE_TIME | bigint(20) | number(38) | キューから出た後のデコード時間、単位:マイクロ秒 |
| GET_PLAN_TIME | bigint(20) | number(38) | 実行開始から実行計画を取得するまでの時間、単位:マイクロ秒 |
| EXECUTE_TIME | bigint(20) | number(38) | Plan の実行にかかった時間、単位:マイクロ秒 |
| APPLICATION_WAIT_TIME | bigint(20) unsigned | number(38) | すべての Application イベントの合計時間、単位:マイクロ秒 |
| CONCURRENCY_WAIT_TIME | bigint(20) unsigned | number(38) | すべての Concurrency イベントの合計時間、単位:マイクロ秒 |
| USER_IO_WAIT_TIME | bigint(20) unsigned | number(38) | すべての user_io イベントの合計時間、単位:マイクロ秒 |
| SCHEDULE_TIME | bigint(20) unsigned | number(38) | すべての Schedule イベントの時間、単位:マイクロ秒 |
| ROW_CACHE_HIT | bigint(20) | number(38) | 行キャッシュヒット数 |
| BLOOM_FILTER_CACHE_HIT | bigint(20) | number(38) | Bloom Filter キャッシュヒット数 |
| BLOCK_CACHE_hit | bigint(20) | number(38) | ブロックキャッシュヒット数 |
| DISK_READS | bigint(20) | number(38) | 物理読み取り回数 |
| RETRY_CNT | bigint(20) | number(38) | 再試行回数 |
| TABLE_SCAN | tinyint(4) | number(38) | このリクエストにフルテーブルスキャンが含まれているかどうかを判断します |
| CONSISTENCY_LEVEL | bigint(20) | number(38) | 一貫性レベル |
| MEMSTORE_READ_ROW_COUNT | bigint(20) | number(38) | MemStore で読み取った行数 |
| SSSTORE_READ_ROW_COUNT | bigint(20) | number(38) | SSSTORE で読み取った行数 |
| DATA_BLOCK_READ_CNT | bigint(20) | NO | アクセスしたデータマイクロブロック数 |
| DATA_BLOCK_CACHE_HIT | bigint(20) | NO | データマイクロブロック Cache 命中数 |
| INDEX_BLOCK_READ_CNT | bigint(20) | NO | アクセスした中間層マイクロブロック数 |
| INDEX_BLOCK_CACHE_HIT | bigint(20) | NO | 中間層マイクロブロック Cache 命中数 |
| BLOCKSCAN_BLOCK_CNT | bigint(20) | NO | 単一方向スキャンのデータマイクロブロック数 |
| BLOCKSCAN_ROW_CNT | bigint(20) | NO | 単一方向スキャンのデータ行数 |
| PUSHDOWN_STORAGE_FILTER_ROW_CNT | bigint(20) | NO | ストレージ Filter フィルタリング後の行数 |
| REQUEST_MEMORY_USED | bigint(20) | number(38) | このリクエストで消費されたメモリ |
| EXPECTED_WORKER_COUNT | bigint(20) | number(38) | リクエストが期待するワーカースレッド数 |
| USED_WORKER_COUNT | bigint(20) | number(38) | リクエストで実際に使用されたワーカースレッド数 |
| SCHED_INFO | varchar(16384) | varchar(16384) | リクエストのスケジューリング情報 |
| PS_CLIENT_STMT_ID | bigint(20) | NUMBER(38) | このフィールドは、リクエストに対応するクライアントの Prepare ID を記録するために使用されます:
|
| PS_INNER_STMT_ID | bigint(20) | NUMBER(38) | このフィールドは、リクエストに対応する内部(データベース内部)Prepare ID を記録するために使用されます:
|
| TX_ID | bigint(20) | NO | リクエストに対応するトランザクションの Hash 値 |
| SNAPSHOT_VERSION | bigint(20)unsigned | NO | 現在のステートメントのスナップショット読み取りバージョン番号 |
| REQUEST_TYPE | bigint(20) | number(38) | リクエストに対応するタイプ:
|
| IS_BATCHED_MULTI_STMT | tinyint(4) | number(38) | Batch Multi Stmt の最適化が行われているかどうかを示します |
| OB_TRACE_INFO | VARCHAR2(4096) | VARCHAR2(4096) | ユーザー設定の Trace 情報 |
| PLAN_HASH | bigint(20) unsigned | number(38) | 実行計画の Hash 値 |
| PARAMS_VALUE | longtext | CLOB | パラメータ値 |
| RULE_NAME | varchar(256) | VARCHAR2(256) | ルール名 |
| TX_INTERNAL_ROUTING | bigint(20) | NUMBER | 現在のトランザクションでトランザクションルーティングが有効かどうかを示します |
| TX_STATE_VERSION | bigint(20) unsigned | NUMBER(38) | 現在のトランザクション状態のバージョン番号 |
| FLT_TRACE_ID | varchar(1024) | varchar(1024) | フルリンクトレースの Trace ID を記録します。空の場合、フルリンクトレースの監視を受けていないことを意味します。このフィールドは UUID であり、Trace とは異なります。表記例:000600d6-a5de-038c-6c80-df07e4e79149 |
| PL_TRACE_ID | varchar(128) | VARCHAR2(128) | 現在の SQL ステートメントの外部 PL の Trace ID |
| PLSQL_EXEC_TIME | bigint(20) | NUMBER(38) | PL 実行にかかった時間 |
| TOTAL_MEMSTORE_READ_ROW_COUNT | bigint(20) | NUMBER(38) | 全作業プロセスにおいて MemStore から読み出された総行数 |
| TOTAL_SSSTORE_READ_ROW_COUNT | bigint(20) | NUMBER(38) | 全作業プロセスにおいて SSSTORE から読み出された総行数 |
| PROXY_USER | varchar(128) | VARCHAR2(128) | プロキシユーザーログインシナリオで、プロキシユーザーの名前を返します |
| FUSE_ROW_CACHE_HIT | bigint(20) | number(38) | このフィールドは現在サポートされていません。デフォルトで NULL に設定されています |
| LOCK_FOR_READ_TIME | bigint(20) |
注意このビューには、OceanBaseデータベースのOracleモードでは、現在フィールド |
データ読み取り時のロック待機時間、単位:マイクロ秒 |
| PARTITION_hit | tinyint(4) | - | ローカルパーティションにヒットしたかどうか |
| PLSQL_COMPILE_TIME | bigint(20) | NUMBER(38) | PLコンパイル時間。 |
| INSERT_DUPLICATE_ROW_COUNT | bigint(20) | NUMBER(38) | insertupまたはreplace into時の重複行数を記録します。 |
| USER_CLIENT_PORT | bigint(20) | NUMBER(38) | クライアントポート番号を表示するために使用されます。 |
| TRANS_STATUS | varchar(256) | VARCHAR2(256) | トランザクションの明示的/暗黙的開始、または非開始状態を表示するために使用されます。 |
| TX_TABLE_READ_CNT | bigint(20) | NUMBER(38) | トランザクションステータステーブルの読み取り回数。 |
| OUTROW_LOB_CNT | bigint(20) | NUMBER(38) | クエリ処理中に読み取ったoutrow lob列の数。 |
| COMMIT_TIME | bigint(20) | NUMBER(38) | トランザクション内でコミットをトリガーしたSQLがコミット時間を記録します。SQLがコミットをトリガーしなかった場合、デフォルト値は0です。 |
重要なイベント間の時間関係
このビューにおける重要なイベントに対応するフィールド ELAPSED_TIME、REQUEST_TIME、NET_WAIT_TIME、QUEUE_TIME、DECODE_TIME、GET_PLAN_TIME、EXECUTE_TIME、および COMMIT_TIME の関係は、以下の図のとおりです。

例
GV$OB_SQL_AUDIT ビューを使用すると、SQL実行のさまざまな観点からの情報を簡単に照会できます。以下の例は、実行時間が100ミリ秒を超えるSQLとその FLT_TRACE_ID を照会するものです。
/* 全リンクトレースのセッションレベルトレースを有効にし、現在のセッションのすべてのSQLに関連する実行時間などの情報を記録します。サンプリング頻度は50%です。*/
obclient> CALL DBMS_MONITOR.OB_SESSION_TRACE_ENABLE(null,1,0.5,'ALL');
Query OK, 0 rows affected
obclient [oceanbase]> SELECT request_id,usec_to_time(request_time),ELAPSED_TIME,QUEUE_TIME,EXECUTE_TIME,FLT_TRACE_ID,QUERY_SQL FROM v$OB_SQL_AUDIT where ELAPSED_TIME > 100000 limit 10 ;
+------------+----------------------------+--------------+------------+--------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| request_id | usec_to_time(request_time) | ELAPSED_TIME | QUEUE_TIME | EXECUTE_TIME | FLT_TRACE_ID | QUERY_SQL |
+------------+----------------------------+--------------+------------+--------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 5950244 | 2023-09-07 16:20:47.465958 | 127623 | 26 | 127206 | 000604c0-8981-9184-518a-e234439d873c | CREATE TABLE tbl2(c1 INT PRIMARY KEY,c2 INT) |
| 5951861 | 2023-09-07 16:21:07.887121 | 333776 | 38 | 310298 | | ALTER TABLE tbl2 ADD CONSTRAINT fk1 FOREIGN KEY (c2) REFERENCES tbl3(c1) ON UPDATE SET NULL |
| 5953177 | 2023-09-07 16:21:28.215377 | 174416 | 24 | 174186 | 000604c0-8bef-5afb-f9d3-2ee0dfab4c8f | SELECT request_id,usec_to_time(request_time),ELAPSED_TIME,QUEUE_TIME,EXECUTE_TIME,FLT_TRACE_ID,QUERY_SQL FROM v$OB_SQL_AUDIT where ELAPSED_TIME > 100000 |
| 5954522 | 2023-09-07 16:21:48.317360 | 128803 | 27 | 128542 | 000604c0-8d22-1659-7b0c-a0ac0645894d | SELECT request_id,usec_to_time(request_time),ELAPSED_TIME,QUEUE_TIME,EXECUTE_TIME,FLT_TRACE_ID,QUERY_SQL FROM v$OB_SQL_AUDIT where ELAPSED_TIME > 100000 limit 10 |
+------------+----------------------------+--------------+------------+--------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4 rows in set