17.10 - クエリー バンドを使用する問合わせの発行元のサーチ - Advanced SQL Engine - Teradata Database

Teradata Vantage™- データベースの管理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
管理
Publication ID
B035-1093-171K-JPN
Language
日本語 (日本)

クエリー バンドは、名前と値の組のセットで、セッションやトランザクションに割り当てられます。問合わせの元のソースを識別することができます。これらの識別子を定義すると、他のセッション データと一緒にDBC.SessionTblに保存されます。

これは、中間層ツールまたはアプリケーションから問合わせを実行依頼する特定のユーザーを識別する際に特に有効です。中間層ツール/アプリケーションでは、プール内の各接続が同じユーザー アカウントを使用してデータベースにログインする場合に、ユーザーのIDを隠すプーリング メカニズムがしばしば使用されるためです。

クエリー バンドおよびセッションやトランザクションへの割り当て方法の詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「SET QUERY_BAND」を参照してください。

クエリー バンド セットを作成し終えたら、以下を使用してクエリー バンドおよび名前と値の組み合わせを取得します。
  • HELP SESSIONまたはDBC.SessionInfoビューのQueryBandフィールドを問合わせます。
  • システムUDFおよび外部ストアド プロシージャ。例えば、アクティブ セッションのクエリー バンドを検索するためには、MonitorQueryBand機能を使用します。
    BTEQ -- Enter your DBC/SQL request or BTEQ command:
    SELECT t1.sessionno, MonitorQueryBand(Hostid, sessionNo, runvprocno)
    FROM TABLE (MonitorSession(1,'*',0)) AS t1;
    
    *** Query completed. 2 rows found. 2 columns returned.
    *** Total elapsed time was 1 second.
    
    SessionNo MonitorQueryBand(HostId,SessionNo,RunVprocNo)
    --------- ------------------------------------------------------------
         1299
         1298 =S> REPJOBID=495;REPORT=Sales;CLIENTMACHINE=XYZ12;REPTYPE=10;

    MonitorQueryBand機能の詳細と、利用可能な機能と手順の完全なリストについては、<Teradata Vantage™- アプリケーション プログラミング リファレンス、B035-1090>を参照してください。

  • 問合わせロギング(DBQL)。問合わせロギングにより、クエリー バンド情報がDBC.DBQLogTblテーブルに保存されます。このテーブルへは、DBC.QryLogVビューを使用してアクセスします。クエリーを実行した後には、その情報を使用して問合わせを分析することができます。
    BTEQ -- Enter your DBC/SQL request or BTEQ command:
    
    sel queryband(FORMAT 'X(50)'), querytext(FORMAT 'X(30)') from qrylogv order by
    StartTime, queryid;
    
    *** Query completed. 10 rows found. 2 columns returned.
    *** Total elapsed time was 1 second.
    
    QueryBand                                          QueryText
    -------------------------------------------------- ------------------------
    ?                                                  Begin query logging on a
    =S> REPJOBID=495;REPORT=Sales;CLIENTMACHINE=XYZ12; sel count(*) from dbc.da
    =S> REPJOBID=495;REPORT=Sales;CLIENTMACHINE=XYZ12; sel count(*) from dbc.ta
    =S> REPORT=Costs;CLIENTMACHINE=XYZ12;              SET QUERYChapter 11, Managing C_BAND='REPORT=C
    =S> REPORT=Costs;CLIENTMACHINE=XYZ12;              sel * from tdwm.rules;
    =S> REPORT=Costs;CLIENTMACHINE=XYZ12;              sel * from tdwm.ruledefs
    =S> REPORT=Costs;CLIENTMACHINE=XYZ12;              sel * from configuration
    =S> REPJOBID=99;REPORT=Acct;CLIENTMACHINE=BBB1;    SET QUERY_BAND='REPJOBID
    =S> REPJOBID=99;REPORT=Acct;CLIENTMACHINE=BBB1;    sel database from dbc.da
    ?                                                  End query logging on all

    データベース クエリー ログの詳細については、データベース問合わせロギングを使用した問合わせ動作の追跡: 操作DBAを参照してください。

  • 特定のCPUまたは継続時間のしきい値を満たすリクエストに関するTeradata Viewpoint。

Teradataは、クエリー バンド情報を取得するため、UDF、メソッド、および外部プロシージャを有効にするライブラリ関数も提供します。例:

現在のクエリー バンドから返される値… 使用するライブラリ関数…
名前 FNC_GetQueryBand
FNC_GetQueryBandValue
すべての名前と値のペア FNC_GetQueryBandPairs

詳細については、<Teradata Vantage™- SQL外部ルーチン プログラミング、B035-1147>を参照してください。