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) | Session 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文です。
説明このフィールドは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) | すべてのスケジュール系イベントの時間、単位:マイクロ秒 |
| ROW_CACHE_hit | bigint(20) | number(38) | 行キャッシュヒット回数 |
| BLOOM_FILTER_CACHE_HIT | bigint(20) | number(38) | ブルームフィルターキャッシュヒット回数 |
| 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 MultiStmtの最適化を行うかどうか |
| 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時の重複行数を記録します。
説明 |
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の削除をトリガーするかどうかを決定します。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ビューを使用すると、SQL実行のさまざまな側面に関する情報を簡単に照会できます。以下の例は、実行時間が100msを超える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モード)を参照してください。