17.10 - データベース クエリー ロギングのルールを適用する階層 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-171K-JPN
Language
日本語 (日本)

データベース クエリー ロギングは、ALLユーザーにルール存在していても個々のユーザーにBEGIN QUERY LOGGINGリクエストの実行を許可する階層的な基盤によって動作します。ただし、特定のアカウントとユーザーのペアにルールが存在する場合は、そのアカウントとユーザーのペアに新しいルールを発効する前に、適切なEND QUERY LOGGINGリクエストを実行してルールを削除する必要があります。

データベースでは、次に示す順序でルールを適用します。

階層内での順序 ルールのタイプ
1 アプリケーション名に基づくルール。
2 特定のユーザーと特定のアカウントに対するルール。
3 特定のユーザーと任意のアカウントに対するルール。
4 すべてのユーザーと特定のアカウントに対するルール。
5 すべてのユーザーと任意のアカウントに対するルール。

上記の表に示したように、DBQLは最初にアプリケーション名に基づくルールを検索します。そのようなルールが存在しない場合、DBQLはユーザーおよびアカウントに特定のルールを検索します。そのルールも存在しない場合は、階層を下って同様に検索します。SHOW QUERY LOGGINGリクエストを実行することで、データベースがどのルールを適用するかを判断できます。SHOW QUERY LOGGINGを参照してください。

ルール キャッシュには、アプリケーションのルールか、特定のアカウントとユーザーの組合わせのルールのどちらかが含まれます。ユーザーがログオンするたびに、最初にDBQLは階層順にルール キャッシュからルールを検索します。レベル1またはレベル2のルール キャッシュに特定のルールがない場合、DBQLは階層順にDBC.DBQLRuleTblから最適なものを検索します。DBQLは、ルール キャッシュにエントリを作成します。このエントリの形式は、アカウントとユーザーのペアに続けて、 そのアカウントとユーザーに対してDBQLを有効にしないルール、またはオプションと共に適用するDBQLルールのどちらかを追加したものになります。ルール テーブルのレベル1で一致があれば、DBQLはルール キャッシュにアプリケーション名のエントリを作成します。

階層的なスキーマにより、特定のアカウントとユーザーのペアにDBQLルールを呼び出し、その特定のユーザーの他のすべてのアカウントに別のルールを呼び出すことができるようになります。同様に、特定のアカウントのすべてのユーザーに対するルールを確立することも、その他のすべてのユーザーに別のルールを確立することもできます(ALLユーザーALLアカウントのルールなど)。

例えば、ALLユーザーのデフォルトのロギングにBEGIN QUERY LOGGINGリクエストを実行し、user1とオブジェクトおよびステップに対してDBQLも有効にすることができます。user1がログオンすると、DBQLはオブジェクトおよびステップを収集します。user1以外のユーザーがログオンすると、DBQLはそのユーザーのデフォルト情報のみをログに記録します。

同様に、オブジェクトの情報をログに記録するためのALLユーザーのルールが存在する場合、特定ユーザに対するルールを実装してDBQLがそのユーザーのデフォルトのロギングをログに記録するようにできます。

また、WITH NONEオプションを使用すると、ユーザーやアプリケーションなどを選択的にロギングから除外することもできます。例えば、ALLユーザーのデフォルトのロギングを指定するルールがあるが、busy_user1のロギングは除外したい場合、次のリクエストを発行します。

BEGIN QUERY LOGGING WITH NONE ON busy_user1;

一連のクエリー ロギング ルールが作成されると、そのルールは現在のセッションと、アクティブなDBQLルールが適用される後続のすべてのセッションに適用されます。

DBQLでは、5つのクエリー ロギング ルールのタイプの1つに含まれる名前付きインスタンスに対する複数のルールは許容されていません。たとえば、現時点で特定のアカウント名に属するALLユーザーにルールが存在していると、システムは重複するルールを受け入れません。