機能
GV$OB_TRANSACTION_PARTICIPANTSビューは、すべてのOBServerノード上でアクティブなトランザクションの参加者情報を表示するために使用されます。
フィールドの説明
| フィールド名 | タイプ | NULLを許容するか | 説明 |
|---|---|---|---|
| TENANT_ID | bigint(20) | NO | テナントID。 |
| SVR_IP | varchar(46) | NO | サーバーIPアドレス。 |
| SVR_PORT | bigint(20) | NO | サーバーのポート番号。 |
| SESSION_ID | bigint(20) | NO | セッションID。 |
| SCHEDULER_ADDR | varchar(64) | NO | スケジューラーが所属するノードのアドレス。 |
| TX_TYPE | varchar(11) | NO | トランザクションタイプ:
|
| TX_ID | bigint(20) | NO | トランザクションID。 |
| LS_ID | bigint(20) | NO | 所属ログストリームID。 |
| PARTICIPANTS | varchar(1024) | NO | 参加者リスト。 |
| CTX_CREATE_TIME | timestamp(6) | YES | コンテキスト作成時点。 |
| TX_EXPIRED_TIME | timestamp(6) | YES | トランザクションタイムアウト時点。 |
| STATE | varchar(13) | NO | コンテキストコミット状態。 |
| ACTION | varchar(10) | NO | 前のトランザクションで実行されたアクション:
|
| PENDING_LOG_SIZE | bigint(20) | NO | このトランザクションにおける該当参加者がまだディスクにフラッシュしていないログサイズ。 |
| FLUSHED_LOG_SIZE | bigint(20) | NO | このトランザクションにおける該当参加者がディスクにフラッシュしたログサイズ。 |
| ROLE | varchar(8) | NO | そのレプリカの役割。値0と1はそれぞれリーダーとフォロワーを表します。 |
| COORD | bigint(20) | NO | 対応するコーディネーターLS ID(コミット段階に入って初めて有効になります)。 |
| LAST_REQUEST_TIME | timestamp(6) | YES | 最後に外部リクエストを受信した時点。 |
| FORMATID | bigint(20) | NO | XID形式のタイプ。 |
| GLOBALID | varchar(257) | NO | XAトランザクションのグローバル識別子。 |
| BRANCHID | varchar(257) | NO | XAトランザクションのブランチ限定子。 |
よく使われるSQL
GV$OB_TRANSACTION_PARTICIPANTSビューは、クラスタ内のすべてのアクティブトランザクションに関する情報を集計するために使用されます。トランザクションがN個のログストリームに対する書き込み操作を行う場合、各ログストリームごとに1つのレコードが生成されます。このビューを通じて、時間のかかるトランザクションを集計できます。
GV$OB_TRANSACTION_PARTICIPANTS仮想テーブル内で、時間が100秒を超えるアクティブトランザクションの参加者を集計します。SQL構文は以下のとおりです:
obclient> SELECT svr_ip, tx_id, ls_id from GV$OB_TRANSACTION_PARTICIPANTS where tenant_id = xxx and ctx_create_time < date_sub(now(), INTERVAL 100 SECOND);
クエリ結果のtx_idフィールドに基づいて、GV$OB_SQL_AUDITからそのトランザクション内のすべてのSQLや所要時間などの情報を検索できます。