監査レコードはログ形式で永続化することのみがサポートされており、現在の監査レコードのログ書き込み実装はシステムログへの書き込みによって行われています。各業務テナントには、監査ログを出力するためのバックグラウンドスレッドが1つずつ割り当てられています。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity Editionは現在、監査機能をサポートしていません。
監査ログの形式
監査ログのサンプルは以下のとおりです:
"xx.xx.xx.xx",57000,0,3615915,"",3221487702,"xx.xx.xx.xx",33281,1006,"audit_mysql",1006,500002,"admin",0,"xx.xx.xx.xx",500001,"test","B9DBED5D556A12ADAE8EB1650B9761E9","table_access"," SELECT id, k, c, pad\n FROM sbtest\n WHERE k IN (78154, 78112, 77817, 78105, 78504, 78111, 78155, 78141, 78145, 78113)\n ",324,0,10,2,0,0,0,0,0,0,0,0,0,1,0,0,1,1700012758556689,364,0,1,46,1,47,259,0,0,0,0,10,0,20,0,0,0,3,0,20,10,10,20,10,0,0,0,139264,0,0,"",0,-1,-1,0,1700012758543334815,2,0,"",-7363743333437867606,0,"","",1,0,0,"00060a27-1096-5dc2-fa04-cea1f06b019a"
"xx.xx.xx.xx",57000,0,3615914,"",3221487709,"xx.xx.xx.xx",33293,1006,"audit_mysql",1006,500002,"admin",0,"xx.xx.xx.xx",500001,"test","B9DBED5D556A12ADAE8EB1650B9761E9","table_access"," SELECT id, k, c, pad\n FROM sbtest\n WHERE k IN (34851, 34386, 34384, 34393, 34974, 34566, 34397, 34379, 33844, 34353)\n ",324,0,10,2,0,0,0,0,0,0,0,0,0,1,0,0,1,1700012758556662,417,0,1,7,1,37,362,0,0,0,0,10,0,20,0,0,0,3,0,20,10,10,20,10,0,0,0,131072,0,0,"",0,-1,-1,0,1700012758543334815,2,0,"",-7363743333437867606,0,"","",1,0,0,"00060a27-1096-5dc2-131b-e7f9c98dd9d9"
ログフィールドの説明
監査レコードのフィールドは、既存の[G]V$OB_SQL_AUDITビューのフィールドに基づいて抽出されますが、いくつかの点で異なります。
EVENT_CLASSフィールドが追加されました。これは監査イベントのタイプを識別するために使用され、値にはconnection、table_access、generalが含まれます。フィルターの定義と一致しています。- ユーザーセッションのリクエストのみが記録され、内部で発行されるSQLログは記録されません。
- クエリSQLは
utf8に変換され、エスケープ処理を経て出力されます。ログオンおよびログオフイベントでは、LOGON/LOGOFFが記録されます。 - 長すぎるSQL文の場合、非同期ログ出力時には現在のスレッドのアロケーターを使用してメモリを割り当て、フォールバックは同期出力になります。
監査ログの具体的なフィールドリストは以下のとおりです。タイプは出力形式にのみ影響し、文字列と整数の2種類のみであり、文字列タイプは引用符で囲まれます。
| フィールド名 | タイプ | 説明 |
|---|---|---|
| SVR_IP | varchar(46) | IPアドレス |
| SVR_PORT | bigint(20) | ポート番号 |
| REQUEST_ID | bigint(20) | リクエストのID番号 |
| SQL_EXEC_ID | bigint(20) | スタンドアロン単調増加の実行ID |
| TRACE_ID | varchar(128) | このステートメントのtrace_id |
| SID | bigint(20) unsigned | セッション接続ID |
| CLIENT_IP | varchar(46) | |
| CLIENT_PORT | bigint(20) | リクエストを送信したクライアントのポート番号 |
| TENANT_ID | bigint(20) | リクエストを送信したテナントID |
| TENANT_NAME | varchar(64) | リクエストを送信したテナント名 |
| EFFECTIVE_TENANT_ID | bigint(20) | テナントID |
| USER_ID | bigint(20) | リクエストを送信したユーザーID |
| USER_NAME | varchar(64) | リクエストを送信したユーザー名 |
| USER_GROUP | bigint(20) | ユーザーが属するリソースグループID |
| USER_CLIENT_IP | varchar(46) | リクエストを送信したクライアントのIPアドレス |
| EVENT_CLASS | varchar(128) | イベントタイプ。非SQLステートメントを区別するために使用されます |
| DB_ID | bigint(20) unsigned | データベースID |
| DB_NAME | varchar(128) | データベース名 |
| SQL_ID | varchar(32) | このSQLのID |
| QUERY_SQL | longtext | 実際のSQLステートメント |
| PLAN_ID | bigint(20) | 実行計画のID |
| AFFECTED_ROWS | bigint(20) | 影響を受ける行数 |
| RETURN_ROWS | bigint(20) | 返される行数 |
| PARTITION_CNT | bigint(20) | このリクエストに関連するパーティション数 |
| RET_CODE | bigint(20) | 実行結果の返却コード: |
| QC_ID | bigint(20) unsigned | パラレル実行シナリオにおけるスケジューラーID |
| DFO_ID | bigint(20) | パラレル実行シナリオにおける現在実行中のサブプランID |
| SQC_ID | bigint(20) | パラレル実行シナリオにおけるローカルコーディネーターID |
| WORKER_ID | bigint(20) | パラレル実行シナリオにおけるワーカースレッドID |
| EVENT | varchar(64) | 最長待機イベント名 |
| P1TEXT | varchar(64) | 待機イベントパラメータ1 |
| P1 | bigint(20) unsigned | 待機イベントパラメータ1の値 |
| P2TEXT | varchar(64) | 待機イベントパラメータ2 |
| P2 | bigint(20) unsigned | 待機イベントパラメータ2の値 |
| P3TEXT | varchar(64) | 待機イベントパラメータ3 |
| P3 | bigint(20) unsigned | 待機イベントパラメータ3の値 |
| LEVEL | bigint(20) | 待機イベントのレベル |
| WAIT_CLASS_ID | bigint(20) | 待機イベントが属するClass ID |
| WAIT_CLASS# | bigint(20) | 待機イベントが属するClassのインデックス |
| WAIT_CLASS | varchar(64) | 待機イベントが属するClass名 |
| STATE | varchar(19) | 待機イベントの状態 |
| WAIT_TIME_MICRO | bigint(20) | この待機イベントが待機している時間、単位:マイクロ秒 |
| TOTAL_WAIT_TIME_MICRO | bigint(20) | 実行プロセス全体での待機時間の合計、単位:マイクロ秒 |
| TOTAL_WAITS | bigint(20) | 実行プロセス全体での待機回数 |
| RPC_COUNT | bigint(20) | 送信されたRPCの数 |
| PLAN_TYPE | bigint(20) | 実行計画タイプ: |
| IS_INNER_SQL | tinyint(4) | 内部SQLリクエストかどうか |
| IS_EXECUTOR_RPC | tinyint(4) | 現在のリクエストがRPCリクエストかどうか |
| IS_hit_PLAN | tinyint(4) | plan_cacheにヒットしたかどうか |
| REQUEST_TIME | bigint(20) | 実行開始時点、単位:マイクロ秒 |
| ELAPSED_TIME | bigint(20) | リクエスト受信から実行終了までに消費された総時間、単位:マイクロ秒 |
| NET_TIME | bigint(20) | RPC送信からリクエスト受信までの時間、単位:マイクロ秒 |
| NET_WAIT_TIME | bigint(20) | リクエスト受信からキューへの投入までの時間、単位:マイクロ秒 |
| QUEUE_TIME | bigint(20) | リクエストのキュー待機時間、単位:マイクロ秒 |
| DECODE_TIME | bigint(20) | キューから出た後のデコード時間、単位:マイクロ秒 |
| GET_PLAN_TIME | bigint(20) | プロセス開始から計画取得までの時間、単位:マイクロ秒 |
| EXECUTE_TIME | bigint(20) | 計画実行に消費された時間、単位:マイクロ秒 |
| APPLICATION_WAIT_TIME | bigint(20) unsigned | すべてのApplication系イベントの合計時間、単位:マイクロ秒 |
| CONCURRENCY_WAIT_TIME | bigint(20) unsigned | すべてのConcurrency系イベントの合計時間、単位:マイクロ秒 |
| USER_IO_WAIT_TIME | bigint(20) unsigned | すべてのuser_io系イベントの合計時間、単位:マイクロ秒 |
| SCHEDULE_TIME | bigint(20) unsigned | すべてのSchedule系イベントの時間、単位:マイクロ秒 |
| ROW_CACHE_HIT | bigint(20) | 行キャッシュヒット回数 |
| BLOOM_FILTER_CACHE_HIT | bigint(20) | Bloom Filterキャッシュヒット回数 |
| BLOCK_CACHE_HIT | bigint(20) | ブロックキャッシュヒット回数 |
| DISK_READS | bigint(20) | 物理読み取り回数 |
| RETRY_CNT | bigint(20) | 再試行回数 |
| TABLE_SCAN | tinyint(4) | このリクエストにフルテーブルスキャンが含まれているかどうかを判断する |
| CONSISTENCY_LEVEL | bigint(20) | 一貫性レベル。値は以下のとおりです。
|
| MEMSTORE_READ_ROW_COUNT | bigint(20) | MemStore内の読み取り行数 |
| SSSTORE_READ_ROW_COUNT | bigint(20) | SSStore内の連続読み取り行数 |
| DATA_BLOCK_READ_CNT | bigint(20) | アクセスしたデータマイクロブロック数 |
| DATA_BLOCK_CACHE_HIT | bigint(20) | ヒットしたデータマイクロブロックCache数 |
| INDEX_BLOCK_READ_CNT | bigint(20) | アクセスしたミドルウェアマイクロブロック数 |
| INDEX_BLOCK_CACHE_HIT | bigint(20) | ヒットしたミドルウェアマイクロブロックCache数 |
| BLOCKSCAN_BLOCK_CNT | bigint(20) | 単方向スキャンのデータマイクロブロック数 |
| BLOCKSCAN_ROW_CNT | bigint(20) | 単方向スキャンのデータ行数 |
| PUSHDOWN_STORAGE_FILTER_ROW_CNT | bigint(20) | プッシュダウンストレージFilterフィルタリング後の行数 |
| REQUEST_MEMORY_USED | bigint(20) | このリクエストで消費されたメモリ |
| EXPECTED_WORKER_COUNT | bigint(20) | リクエストが期待するワーカースレッド数 |
| USED_WORKER_COUNT | bigint(20) | リクエストが実際に使用したワーカースレッド数 |
| SCHED_INFO | varchar(16384) | リクエストのスケジューリング情報 |
| FUSE_ROW_CACHE_HIT | bigint(20) | このフィールドは現在サポートされていません。デフォルトではNULLです |
| PS_CLIENT_STMT_ID | bigint(20) | リクエストに対応するPrepare ID:
|
| PS_INNER_STMT_ID | bigint(20) | リクエストに対応するPrepare ID:
|
| TX_ID | bigint(20) | リクエストに対応するトランザクションのHash値 |
| SNAPSHOT_VERSION | bigint(20)unsigned | 現在のステートメントのスナップショット読み取りバージョン番号 |
| REQUEST_TYPE | bigint(20) | リクエストの対応するタイプ:
|
| IS_BATCHED_MULTI_STMT | tinyint(4) | Batch MultiStmtの最適化を行うかどうか |
| OB_TRACE_INFO | varchar(4096) | ユーザー設定のTrace情報 |
| PLAN_HASH | bigint(20) unsigned | 実行計画のHash値 |
| LOCK_FOR_READ_TIME | bigint(20) | データ読み取り時にロック待機した時間。単位:マイクロ秒 |
| PARAMS_VALUE | longtext | PS実行期パラメータ値 |
| FLT_TRACE_ID | varchar(1024) | このレコードのフルリンクトレースのtrace_idを示します。空の場合は、フルリンクトレース監視されていないことを意味します。このフィールドはUUIDであり、Traceとは異なります。その表記形式は次のようになります:000600d6-a5de-038c-6c80-df07e4e79149 |