GV$OB_SQL_AUDITはグローバルSQL監査テーブルであり、各リクエストの送信元クライアント、実行サーバー情報、実行状態情報、待機時間、および実行段階ごとの所要時間などを確認するために使用できます。
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) | リクエストを送信したクライアントのポート番号 |
| 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ステートメント。
説明このフィールドはV4.3.5 BP4バージョンからSYSテナントでのみ表示が可能です。 |
| 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) | 待機イベントのレベル |
| 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 | データマイクロブロックのキャッシュヒット数 |
| INDEX_BLOCK_READ_CNT | bigint(20) | NO | アクセスした中間層マイクロブロック数 |
| INDEX_BLOCK_CACHE_HIT | bigint(20) | NO | 中間層マイクロブロックのキャッシュヒット数 |
| BLOCKSCAN_BLOCK_CNT | bigint(20) | NO | 単一方向スキャンのデータマイクロブロック数 |
| BLOCKSCAN_ROW_CNT | bigint(20) | NO | 単一方向スキャンのデータ行数 |
| PUSHDOWN_STORAGE_FILTER_ROW_CNT | bigint(20) | NO | ストレージにプッシュダウンしたフィルターによる絞り込み後の行数 |
| REQUEST_MEMORY_USED | bigint(20) | number(38) | このリクエストの実行中にSQLエンジンが使用したメモリのピーク値(peak)。単位:バイト。この値は実行中の瞬間的な最高メモリ使用量であり、累積メモリ割り当て総量ではありません。統計範囲にはMemStoreおよびLoggerメモリは含まれません |
| 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) | プロキシユーザーログインシナリオで、プロキシユーザーの名前を返します |
| SEQ_NUM | bigint(20) | NUMBER(38) | トランザクション内のステートメント番号。
説明このフィールドはV4.3.5バージョンから導入されました。デフォルトでNULLです。 |
| USER_CLIENT_PORT | bigint(20) | NO | クライアントポート番号を表示するために使用されます。
説明このフィールドはV4.3.5 BP4バージョンから導入されました。デフォルトでNULLです。 |
| TRANS_STATUS | varchar(256) | NO | トランザクションの明示的/暗黙的開始、または非開始状態を表示するために使用されます。
説明このフィールドはV4.3.5 BP4バージョンから導入されました。デフォルトでNULLです。 |
| 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時の重複行数を記録します。
説明
|
説明
REQUEST_MEMORY_USED は、単一のSQLリクエストの実行プロセスにおけるSQLエンジンのメモリ使用量の最高値(ピーク値)を記録するものであり、累積メモリ割り当て量ではありません。例えば、あるSQLの実行プロセスでメモリ使用量が100MBまで増加してから20MBまで減少した場合、このフィールドの値は100MB(ピーク値)となり、120MB(累積値)とはなりません。統計範囲はSQL実行エンジンのメモリ(演算子ワークメモリ、式計算メモリなど)のみを含み、MemStore(増分データのメモリ書き込み)やLogger(ログメモリ)は含まれません。
SQL Audit関連設定
SQL Auditのスイッチ設定
SQL Auditを有効にする:
ALTER SYSTEM SET enable_sql_audit = true;SQL Auditを無効にする:
ALTER SYSTEM SET enable_sql_audit = false;
SQL Auditが使用するメモリのテナントメモリに対する割合の設定
ob_sql_audit_percentageは、SQL Auditが使用するメモリのテナントメモリに対する割合を設定します。デフォルトのメモリ割合は3で、設定可能範囲は[0, 80]です。
SET GLOBAL ob_sql_audit_percentage = 3;
ob_sql_audit_percentageの詳細については、ob_sql_audit_percentageを参照してください。
SQL Auditのレコード削除の仕組み
テナントのバックグラウンドタスクは、1秒ごとにOBServerノードとSQL Auditのメモリ使用状況に基づいて、SQL Auditのレコード削除を開始するかどうかを判断します。SQL Auditのメモリ上限は、ob_sql_audit_percentageで割り当てられた利用可能な最大メモリに基づきます。
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 ビューを使用すると、SQL実行のさまざまな観点からの情報を簡単に照会できます。以下の例は、実行時間が100ミリ秒を超えるSQLとその FLT_TRACE_ID を照会するものです。
エンドツーエンド・トレースのセッションレベルトレースを有効にし、現在のセッションのすべてのSQLに関連する実行時間などの情報を記録します。サンプリング頻度は50%です。
CALL DBMS_MONITOR.OB_SESSION_TRACE_ENABLE(null,1,0.5,'ALL');DBMS_MONITOR.OB_SESSION_TRACE_ENABLEの詳細については、OB_SESSION_TRACE_ENABLEを参照してください。
リクエスト受信から実行終了までの総時間が100000マイクロ秒を超える最初の10件の情報を照会します。
SELECT request_id, usec_to_time(request_time), ELAPSED_TIME, QUEUE_TIME, EXECUTE_TIME, FLT_TRACE_ID, QUERY_SQL FROM oceanbase.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
関連ドキュメント
- エンドツーエンド・トレースの詳細については、エンドツーエンド・トレースを参照してください。
- ビュー
GV$OB_SQL_AUDITの詳細については、GV$OB_SQL_AUDIT(MySQLモード)またはGV$OB_SQL_AUDIT(Oracleモード)を参照してください。