ビューまたはSQLステートメントを使用してテナントセッションを確認できます。
考慮事項
本記事は、OceanBaseデータベースバージョンV4.3.0、ODPバージョンV4.2.3、およびODPの構成パラメータclient_session_id_version =2を例として操作ガイドを提供しています。異なるバージョンや設定では返される結果が完全には一致しない場合があります。ODPの構成パラメータ値の確認と設定方法については、構成パラメータの説明を参照してください。
テナントセッションをビューで確認する
ユーザーがクラスタのMySQLテナントまたはOracleテナントにログインします。
以下のステートメントを実行して、テナントセッション情報を確認します。
テナント管理者は現在のテナント内のすべてのセッション情報を確認できますが、通常のユーザーは現在の自分のセッション情報のみを確認できます。
PROCESS権限を持っている場合は、すべてのセッションを確認できます。MySQLモード
obclient [oceanbase]> SELECT * FROM oceanbase.GV$OB_PROCESSLIST\Gクエリ結果は次のとおりです:
*************************** 1. row *************************** SVR_IP: 172.xx.xxx.xxx SVR_PORT: 2882 SQL_PORT: 2881 ID: 3221487622 USER: root HOST: 100.xx.xxx.xxx:49451 DB: test TENANT: mysql001 COMMAND: Sleep TIME: 631.462197 TOTAL_TIME: 631.462197 STATE: SLEEP INFO: NULL PROXY_SESSID: NULL MASTER_SESSID: NULL USER_CLIENT_IP: 100.xx.xxx.xxx USER_HOST: % RETRY_CNT: 0 RETRY_INFO: 0 SQL_ID: TRANS_ID: 3413 THREAD_ID: 0 SSL_CIPHER: NULL TRACE_ID: NULL TRANS_STATE: ACTIVE ACTION: MODULE: CLIENT_INFO: LEVEL: 1 SAMPLE_PERCENTAGE: 10 RECORD_POLICY: SAMPLE_AND_SLOW_QUERY LB_VID: NULL LB_VIP: NULL LB_VPORT: NULL IN_BYTES: 448 OUT_BYTES: 0 USER_CLIENT_PORT: 49451 TOTAL_CPU_TIME: 0 PROXY_USER: SERVICE_NAME: NULL TOTAL_CPU_TIME: 0 TOP_INFO: NULL MEMORY_USAGE: NULL *************************** 2. row *************************** SVR_IP: 172.xx.xxx.xxx SVR_PORT: 2882 SQL_PORT: 2881 ID: 3221487623 USER: root HOST: 100.xx.xxx.xxx:14422 DB: NULL TENANT: mysql001 COMMAND: Query TIME: 0.005717 TOTAL_TIME: 0.005774 STATE: ACTIVE INFO: SELECT * FROM oceanbase.GV$OB_PROCESSLIST PROXY_SESSID: NULL MASTER_SESSID: NULL USER_CLIENT_IP: 100.xx.xxx.xxx USER_HOST: % RETRY_CNT: 0 RETRY_INFO: 0 SQL_ID: 2E175335D36600B7A8EC72C5094888DD TRANS_ID: 0 THREAD_ID: 33799 SSL_CIPHER: NULL TRACE_ID: YB42A************** TRANS_STATE: ACTION: MODULE: CLIENT_INFO: LEVEL: 1 SAMPLE_PERCENTAGE: 10 RECORD_POLICY: SAMPLE_AND_SLOW_QUERY LB_VID: NULL LB_VIP: NULL LB_VPORT: NULL IN_BYTES: 449 OUT_BYTES: 0 USER_CLIENT_PORT: 14422 TOTAL_CPU_TIME: 0 PROXY_USER: SERVICE_NAME: NULL TOTAL_CPU_TIME: 0 TOP_INFO: NULL MEMORY_USAGE: NULL 2 rows in setOracleモード
obclient [SYS]> SELECT * FROM SYS.GV$OB_PROCESSLIST\Gクエリ結果は次のとおりです:
*************************** 1. row *************************** SVR_IP: 172.xx.xxx.xxx SVR_PORT: 2882 SQL_PORT: 2881 ID: 3221487626 USER: SYS HOST: 100.xx.xxx.xxx:25945 DB: SYS TENANT: oracle001 COMMAND: Sleep TIME: 14 TOTAL_TIME: 14 STATE: SLEEP INFO: NULL PROXY_SESSID: NULL MASTER_SESSID: NULL USER_CLIENT_IP: 100.xx.xxx.xxx USER_HOST: % RETRY_CNT: 0 RETRY_INFO: 0 SQL_ID: NULL TRANS_ID: 6343 THREAD_ID: 0 SSL_CIPHER: NULL TRACE_ID: NULL TRANS_STATE: ACTIVE ACTION: NULL MODULE: NULL CLIENT_INFO: NULL LEVEL: 1 SAMPLE_PERCENTAGE: 10 RECORD_POLICY: SAMPLE_AND_SLOW_QUERY LB_VID: NULL LB_VIP: NULL LB_VPORT: NULL IN_BYTES: 447 OUT_BYTES: 0 USER_CLIENT_PORT: 25945 TOTAL_CPU_TIME: 0 PROXY_USER: NULL SERVICE_NAME: NULL TOTAL_CPU_TIME: 0 TOP_INFO: NULL MEMORY_USAGE: NULL *************************** 2. row *************************** SVR_IP: 172.xx.xxx.xxx SVR_PORT: 2882 SQL_PORT: 2881 ID: 3221487625 USER: SYS HOST: 100.xx.xxx.xxx:24782 DB: SYS TENANT: oracle001 COMMAND: Query TIME: 0 TOTAL_TIME: 0 STATE: ACTIVE INFO: SELECT * FROM SYS.GV$OB_PROCESSLIST PROXY_SESSID: NULL MASTER_SESSID: NULL USER_CLIENT_IP: 100.xx.xxx.xxx USER_HOST: % RETRY_CNT: 0 RETRY_INFO: 0 SQL_ID: 0A6CF0E2AB2C1A1917AB1FFDF2BE9CFF TRANS_ID: 0 THREAD_ID: 34190 SSL_CIPHER: NULL TRACE_ID: YB42A*************** TRANS_STATE: NULL ACTION: NULL MODULE: NULL CLIENT_INFO: NULL LEVEL: 1 SAMPLE_PERCENTAGE: 10 RECORD_POLICY: SAMPLE_AND_SLOW_QUERY LB_VID: NULL LB_VIP: NULL LB_VPORT: NULL IN_BYTES: 449 OUT_BYTES: 0 USER_CLIENT_PORT: 24782 TOTAL_CPU_TIME: 0 PROXY_USER: NULL SERVICE_NAME: NULL TOTAL_CPU_TIME: 0 TOP_INFO: NULL MEMORY_USAGE: NULL 2 rows in set
クエリ結果の関連フィールドの説明は次のとおりです:
SVR_IP:このセッションに属するサーバーのIPアドレスを表し、OBServerノードのIPアドレスです。SVR_PORT:このセッションに属するサーバーのRPCポート番号を表し、OBServerノードのRPCポート番号です。SQL_PORT:このセッションに属するサーバーのSQLポート番号を表し、OBServerノードのSQLポート番号です。ID:このセッションIDを表します。USER:このセッションに属するユーザーを表します。HOST:このセッションを開始したクライアントのIPアドレスおよびポート番号を表します。説明
本記事では、OceanBaseデータベースバージョンV4.3.0、ODPバージョンV4.2.3、およびODPの構成パラメータ
client_session_id_version =2を例として説明しています。OceanBaseデータベースV4.3.0以前のバージョンやODP V4.2.3以前のバージョン、またはODPがV4.2.3バージョンであるが構成パラメータがclient_session_id_version =2に設定されていない場合、直接接続方式でデータベースに接続する際には、このフィールドがこのセッションを開始したクライアントのIPアドレスおよびポート番号を表します。ODP経由でデータベースに接続する場合、このフィールドはODPのホストIPアドレスおよびポート番号を表します。DB:このセッションが現在接続しているデータベース名を表します。Oracleモードでは、ユーザー名と同じ名前のSchema名が表示されます。TENANT:このセッションがアクセスするテナント名を表します。COMMAND:このセッションが実行中のコマンドタイプを表します。TIME:現在のコマンドの実行時間(秒単位)を表します。コマンドがリトライされた場合、システムはゼロをクリアして再計算します。TOTAL_TIME:セッション内に実行中のコマンドがある場合、コマンドの開始から現在までの時間間隔を表します。実行中のコマンドがない場合、このセッションの現在の状態での持続時間を表します(秒単位)。STATE:このセッションの現在の状態を表します。INFO:このセッションが実行中のステートメントを表します。PROXY_SESSID:データベースにODP経由で接続する場合、この列に表示されるのはODPノード上のSession IDです。それ以外の場合、NULLが表示されます。MASTER_SESSID:データベースにODP経由で接続する場合、この列に表示されるのはODPノード上のメインSession IDで、同じSQLの複数のサブSessionを連結するために使用されます。それ以外の場合、NULLが表示されます。USER_CLIENT_IP:このセッションを開始したクライアントのIPアドレスです。USER_HOST:このセッションを開始したクライアントのホスト名です。RETRY_CNT:現在のコマンドのリトライ回数です。RETRY_INFO:現在のコマンドのリトライ情報で、一般的に最後のリトライ時のエラーコードです。SQL_ID:現在のコマンドに対応するSQL ID情報です。TRANS_ID:トランザクションIDです。THREAD_ID:スレッドIDです。データベースにODP経由で接続する場合、このスレッドIDもODPノード上のSession IDを表します。SSL_CIPHER:暗号化パスワード名です。TRACE_ID:Trace IDです。TRANS_STATE:トランザクションの状態です。IDLE:アイドル状態で、トランザクションが開始されていないことを表します。ACTIVE:トランザクションが明示的に開始されています。START TRANSACTION、BEGINなどのステートメントで明示的に開始されます。IMPLICIT_ACTIVE:トランザクションが暗黙的に開始されています。autocommit = onモードでは、DMLなどデータを変更するステートメントを実行するとトランザクションが開始されます。ROLLBACK_SAVEPOINT:トランザクションがセーブポイントへのロールバック中です。IN_TERMINATE:トランザクションが終了中です。内部的な理由による終了とユーザーが開始したトランザクションの終了(例えば、COMMIT、ROLLBACKステートメントの実行)が含まれます。ABORTED:トランザクションが例外により内部的に終了またはロールバックされました。ROLLED_BACK:トランザクションがすでにロールバックされています。COMMIT_TIMEOUT:トランザクションのコミットがタイムアウトしました。COMMIT_UNKNOWN:トランザクションのコミット結果が不明です。COMMITTED:トランザクションが正常にコミットされました。
ACTION:DBMS_APPLICATION_INFO.SET_ACTIONプロシージャを呼び出して設定された現在の実行操作の名前です。MODULE:DBMS_APPLICATION_INFO.SET_MODULEプロシージャを呼び出して設定された現在の実行操作の名前です。CLIENT_INFO:DBMS_APPLICATION_INFO.SET_CLIENT_INFOプロシージャで設定された情報です。LEVEL:このセッションの全リンクトレースのモニタリングレベルを表します。例えば、1はLevelが1の診断情報を表します。SAMPLE_PERCENTAGE:このセッションの全リンクトレースのサンプリング頻度を表します。例えば、10は10%の確率で診断情報のサンプリングを行うことを表します。RECORD_POLICY:このセッションの全リンクトレースのレコードポリシーを表します。主に以下の3つのポリシーをサポートしています:ALL:サンプリングが開いているTraceのTraceポイント情報をすべてログファイルに出力します。また、各Span終了時に即座にログファイルに出力します。ONLY_SLOW_QUERY:サンプリングが開いているTraceのTraceポイント情報の中で、遅延クエリに該当するリクエストTraceのみログファイルに出力され、他のものは破棄されます。この出力ポリシーでは、Traceログの出力タイミングはリクエストが遅延クエリと判定された後にのみ出力されます。Proxyでは、ルートSpanつまりトランザクションレベルのSpanについては、遅延クエリが発見された時点でルートSpanが出力されます。
SAMPLE_AND_SLOW_QUERY:サンプリングが開いているTraceのTraceポイント情報の中で、以下のいずれかの条件を満たすTraceはすべてログファイルに出力されます。- 隠蔽構成パラメータ
_print_sample_ppmを使用して0.01%の確率でサンプリングを行い、サンプリング結果が選択された場合のみログに出力されます。 ONLY_SLOW_QUERYポリシーの出力条件を満たす場合
さらに、このモードでは、Span終了時にログが出力されるわけではありません。条件1を満たす場合、クライアント側でこのtraceログが強制的に出力されることをマークし、その情報は後続のリンクコンポーネントに伝達されます。条件2を満たす場合、出力タイミングは
ONLY_SLOW_QUERYポリシーと同じです。全リンクトレースの詳細な説明については、全リンクトレースを参照してください。
- 隠蔽構成パラメータ
LB_VID:パブリッククラウド環境においてロードバランサー経由で直接データベースに接続する場合、この列に表示されるのはロードバランサーサービスのVPC IDです。その他のシナリオでは常にNULLが表示されます。LB_VIP:パブリッククラウド環境においてロードバランサー経由で直接データベースに接続する場合、この列に表示されるのはクライアントがロードバランサーに接続するためのIPアドレスです。その他のシナリオでは常にNULLが表示されます。LB_VPORT:パブリッククラウド環境においてロードバランサー経由で直接データベースに接続する場合、この列に表示されるのはクライアントがロードバランサーに接続するためのポート番号です。その他のシナリオでは常にNULLが表示されます。IN_BYTES:このセッションの流入トラフィックです。OUT_BYTES:このセッションの流出トラフィックです。USER_CLIENT_PORT:このセッションを開始したクライアントのポート番号です。PROXY_USER:プロキシユーザーによるログインの場合は、プロキシユーザーの名前が表示されます。プロキシユーザーによるログインでない場合は、空欄になります。SERVICE_NAME:このセッションがどのサービス名によって作成されたかを表します。値がNULLの場合は、このセッションがサービス名によって作成されたものではないことを表します。TOTAL_CPU_TIME:現在のコマンドの実行に要したCPU時間(秒単位)です。コマンドがリトライされた場合でも、システムはゼロをクリアしません。TOP_INFO:実行中のSQLが存在するトップレベルのPLステートメント情報が表示されます。MEMORY_USAGE:単一のSQLステートメントが現在占有しているメモリサイズ(バイト単位)です。
SHOW PROCESSLISTステートメントまたはSHOW FULL PROCESSLISTステートメントを使用したテナントセッションの確認
SHOW PROCESSLIST ステートメントまたは SHOW FULL PROCESSLIST ステートメントを使用して、テナントセッションを確認することもできます。
テナントセッションを確認する際、テナント管理者は現在のテナント内のすべてのセッション情報を確認でき、一般ユーザーは現在の自分のセッション情報のみを確認できます。PROCESS 権限を持っている場合、すべてのテナント内のすべてのセッションを確認できます。ユーザー権限に関する操作については、ユーザー権限の確認(Oracleモード)およびユーザー権限の確認(MySQLモード)を参照してください。必要な権限を持っていない場合は、管理者に連絡して権限を付与してもらう必要があります。ユーザーに権限を付与する操作については、直接権限の付与(Oracleモード)および直接権限の付与(MySQLモード)を参照してください。
ユーザーがクラスタのMySQLテナントまたはOracleテナントにログインします。
以下のコマンドを実行して、テナントセッションを確認します。
SHOW PROCESSLISTステートメントを使用してテナントセッションを確認する注意
このドキュメントでは、OceanBaseデータベースバージョンV4.3.0、ODPバージョンV4.2.3、およびODPの構成パラメータ
client_session_id_version =2を例としています。OceanBaseデータベースV4.3.0以前のバージョン、またはODP V4.2.3以前のバージョン、またはODPがV4.2.3バージョンであるが構成パラメータがclient_session_id_version =2に設定されていない場合、ODP経由でデータベースに接続すると、SHOW PROCESSLISTステートメントでODPノード上のセッション情報が表示されます。一方、直接接続方式でデータベースに接続すると、SHOW PROCESSLISTステートメントでテナント対応のOBServerノード上のセッション情報が表示されます。obclient [SYS]> SHOW PROCESSLIST;クエリ結果は次のとおりです:
+------------+------+----------------------+------+---------+------+--------+------------------+ | ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO | +------------+------+----------------------+------+---------+------+--------+------------------+ | 3221488068 | SYS | 100.xx.xxx.xxx:18985 | SYS | Sleep | 298 | SLEEP | NULL | | 3221488078 | SYS | 100.xx.xxx.xxx:32489 | SYS | Query | 0 | ACTIVE | SHOW PROCESSLIST | +------------+------+----------------------+------+---------+------+--------+------------------+ 2 rows in set関連フィールドの説明は以下のとおりです:
Id:セッションのIDを表します。User:セッションが属するユーザーを表します。Host:セッションを開始したクライアントのIPアドレスとポート番号を表します。db:セッションが現在接続しているデータベース名を表します。Oracleモードでは、ユーザー名と同じ名前のSchema名が表示されます。Command:セッションが実行中のコマンドタイプを表します。Time:現在のコマンドの実行時間(単位:秒)を表します。コマンドが再試行された場合、システムはゼロクリア後に再計算します。State:セッションの現在の状態を表します。Info:セッションが実行中のステートメントを表します。
SHOW FULL PROCESSLISTステートメントを使用してテナントセッションを確認するobclient [SYS]> SHOW FULL PROCESSLIST;クエリ結果は次のとおりです:
+------------+------+-----------+----------------------+------+---------+------+--------+-----------------------+----------------+------+ | ID | USER | TENANT | HOST | DB | COMMAND | TIME | STATE | INFO | IP | PORT | +------------+------+-----------+----------------------+------+---------+------+--------+-----------------------+----------------+------+ | 3221488068 | SYS | oracle001 | 100.xx.xxx.xxx:18985 | SYS | Sleep | 548 | SLEEP | NULL | 172.xx.xxx.xxx | 2881 | | 3221488078 | SYS | oracle001 | 100.xx.xxx.xxx:32489 | SYS | Query | 0 | ACTIVE | SHOW FULL PROCESSLIST | 172.xx.xxx.xxx | 2881 | +------------+------+-----------+----------------------+------+---------+------+--------+-----------------------+----------------+------+ 2 rows in set関連フィールドの説明は以下のとおりです:
ID:セッションのIDを表します。USER:セッションが属するユーザーを表します。TENANT:セッションがアクセスするテナントの名前を表します。HOST:セッションを開始したクライアントのIPアドレスとポート番号を表します。ODP経由でデータベースに接続した場合は、ODPのホストIPアドレスとポート番号を表します。DB:セッションが現在接続しているデータベース名を表します。Oracleモードでは、ユーザー名と同じ名前のSchema名が表示されます。COMMAND:セッションが実行中のコマンドタイプを表します。TIME:現在のコマンドの実行時間(単位:秒)を表します。コマンドが再試行された場合、システムはゼロクリア後に再計算します。STATE:セッションの現在の状態を表します。INFO:セッションが実行するステートメントを表します。IP:セッションが属するサーバーのIPアドレスを表します。つまり、OBServerノードのIPアドレスです。PORT:セッションが属するサーバーのSQLポート番号を表します。つまり、OBServerノードのSQLポート番号です。