Autonomous AI DatabaseでのSQLトレースの実行
SQLトレースを使用すると、アプリケーション内の負荷の高いSQL文など、過剰なデータベース・ワークロードのソースを識別しやすくなります。
Autonomous AI DatabaseでのSQLトレースの構成
自律型AIデータベースでSQLトレースを構成するステップを示します。
ノート
ノート: SQLトレースを有効にすると、トレース収集が有効になっている間、セッションのアプリケーションのパフォーマンスが低下する可能性があります。トレース・データの収集および保存のオーバーヘッドが原因で、このパフォーマンスが低下することが予想されます。
SQLトレース用にデータベースを構成するには、次の手順を実行します。
-
トレース・ファイルをクラウド・オブジェクト・ストレージに格納するバケットを作成します。
SQLトレース・ファイルを保存するために、バケットをAutonomous AI Databaseでサポートされる任意のクラウド・オブジェクト・ストアに配置できます。
たとえば、Oracle Cloud Infrastructure Object Storageでバケットを作成するには、次を実行します
-
Oracle Cloud Infrastructure Consoleを開きます。
-
メニューから「記憶域」を選択します。
-
「ストレージ」で、「オブジェクト・ストレージおよびアーカイブ・ストレージ」を選択します。
-
「バケットの作成」をクリックします。
-
「バケットの作成」ページで、バケット名を入力し、「作成」をクリックします。
Oracle Cloud Infrastructure Object Storageを使用している場合、SQLトレース・ファイルは標準ストレージ層で作成されたバケットでのみサポートされるため、バケットの作成時にストレージ層として「標準」を選択していることを確認してください。標準オブジェクト・ストレージ層の詳細は、「オブジェクト・ストレージの概要」を参照してください。
-
-
DBMS_CLOUD.CREATE_CREDENTIALを使用して、クラウド・オブジェクト・ストレージ・アカウントの資格証明を作成します。たとえば:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'adb_user@example.com', password => 'password' ); END; /ノート
ノート:ユーザー・アカウントがデフォルトのアイデンティティ・ドメインにある場合は、ユーザー名のみを指定すれば十分です。ユーザー・アカウントがデフォルト以外のアイデンティティ・ドメインに属している場合は、アイデンティティ・ドメイン名の前にユーザー名を付け、その後に/を続けます。例:identity_domain_name/adb_user@example.com。Oracle Cloud Infrastructureの場合、
usernameはOracle Cloud Infrastructureのユーザー名です。passwordはOracle Cloud Infrastructureの認証トークンです。詳細は、認証トークンの操作を参照してください。クラウド・オブジェクト・ストレージに応じたパラメータとその値の詳細は、CREATE_CREDENTIALプロシージャを参照してください。
-
初期化パラメータを設定して、SQLトレース・ファイルのバケットのクラウド・オブジェクト・ストレージURLを指定し、クラウド・オブジェクト・ストレージにアクセスするための資格証明を指定します。
-
データベース・プロパティ
DEFAULT_LOGGING_BUCKETを設定して、クラウド・オブジェクト・ストレージのロギング・バケットを指定します。たとえば、Oracle Cloud Infrastructure Object Storageを使用してバケットを作成する場合、次のようにします。
SET DEFINE OFF; ALTER DATABASE PROPERTY SET DEFAULT_LOGGING_BUCKET = 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucket_name/o/';ここで、
namespace-stringはOracle Cloud Infrastructure Object Storageネームスペース、bucket_nameは以前に作成したバケットの名前です。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。リージョンのリストは、リージョンおよび可用性ドメインを参照してください。
SQLトレース・ファイルに使用するクラウド・オブジェクト・ストアは、Autonomous AI Databaseでサポートされる任意のクラウド・オブジェクト・ストアにできます。
-
データベース・プロパティ
DEFAULT_CREDENTIALを、ステップ2で作成した資格証明に設定します。資格証明にスキーマ名を含める必要があります。この例では、スキーマは"
ADMIN"です。たとえば:
ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.DEF_CRED_NAME';
-
自律型AIデータベースでのSQLトレースの有効化
データベース・セッションのSQLトレースを有効にするステップを示します。
ノート
ノート: SQLトレースを有効にすると、トレース収集が有効になっている間にセッションのアプリケーション・パフォーマンスが低下する可能性があります。トレース・データの収集および保存のオーバーヘッドが原因で、このパフォーマンスが低下することが予想されます。
SQLトレースを有効にする前に、SQLトレース・ファイルを保存するようにデータベースを構成する必要があります。詳細は、Autonomous AI DatabaseでのSQLトレースの構成を参照してください。
SQLトレースを有効にするには、次の手順を実行します。
-
(オプション)アプリケーションのクライアント識別子を設定します。このステップはオプションですが、実行することをお薦めします。SQLトレースでは、トレース・ファイルがクラウド・オブジェクト・ストアに書き込まれるときに、トレース・ファイル名のコンポーネントとしてクライアント識別子が使用されます。
たとえば:
BEGIN DBMS_SESSION.SET_IDENTIFIER('sqlt_test'); END; / -
(オプション)アプリケーションのモジュール名を設定します。このステップはオプションですが、実行することをお薦めします。SQLトレースでは、トレース・ファイルがクラウド・オブジェクト・ストアに書き込まれるときに、トレース・ファイル名のコンポーネントとしてモジュール名が使用されます。
たとえば:
BEGIN DBMS_APPLICATION_INFO.SET_MODULE('modname', null); END; / -
SQLトレース機能を使用可能にします。
ALTER SESSION SET SQL_TRACE = TRUE; -
ワークロードを実行します。
このステップでは、アプリケーション全体またはアプリケーションの特定の部分を実行します。データベース・セッションでワークロードを実行すると、SQLトレース・データが収集されます。
-
SQLトレースを無効にします。
SQLトレースを無効にすると、セッション用に収集されたデータが、セッション内の表およびSQLトレースの設定時に構成したバケット内のトレース・ファイルに書き込まれます。詳細は、Autonomous AI DatabaseでのSQLトレースの無効化を参照してください。
Autonomous AI DatabaseでのSQLトレースの無効化
Autonomous AI DatabaseでSQLトレースを無効にするステップを示します。
SQLトレースを無効にするには、次の手順を実行します。
-
SQLトレース機能を無効にします。
ALTER SESSION SET SQL_TRACE = FALSE; -
(オプション)環境に必要な場合は、データベース・プロパティ
DEFAULT_LOGGING_BUCKETをリセットして、クラウド・オブジェクト・ストレージのロギング・バケットの値をクリアできます。たとえば:
ALTER DATABASE PROPERTY SET DEFAULT_LOGGING_BUCKET = '';
SQLトレースを無効にすると、トレースを有効にしてセッションの実行中に収集されたトレース・データが表にコピーされ、クラウド・オブジェクト・ストアのトレース・ファイルに送信されます。トレース・データを表示するには、次の2つのオプションがあります。
-
クラウド・オブジェクト・ストアに保存されたトレース・ファイル内のSQLトレース・データを表示および分析します。詳細は、Autonomous AI Database上のクラウド・オブジェクト・ストアに保存されたトレース・ファイルの表示を参照してください。
-
ビュー
SESSION_CLOUD_TRACEに保存されたSQLトレース・データを表示および分析します。詳細は、Autonomous AI DatabaseでのSESSION_CLOUD_TRACEビューのトレース・データの表示を参照してください。
Autonomous AI Database上のクラウド・オブジェクト・ストアに保存されたトレース・ファイルの表示
SQLトレース・ファイルの出力ファイル・ネーミングについて説明し、TKPROFを使用してトレース・ファイル・データを編成および表示するコマンドを示します。
SQLトレース・ファイル・データを使用して、Autonomous AI Databaseでのアプリケーション・パフォーマンスを分析します。データベース・セッションでSQLトレースを無効にすると、データはDEFAULT_LOGGING_BUCKETで構成されたクラウド・オブジェクト・ストア・バケットに書き込まれます。
SQLトレース機能は、セッションで収集されたトレース・データを次の形式でクラウド・オブジェクト・ストアに書き込みます。
default_logging_bucket/sqltrace/clientID/moduleName/sqltrace_numID1_numID2.trc
ファイル名のコンポーネントは次のとおりです。
-
default_logging_bucket:
DEFAULT_LOGGING_BUCKETデータベース・プロパティの値。詳細は、Autonomous AI DatabaseでのSQLトレースの構成を参照してください。 -
clientID: クライアント識別子です。詳細は、Autonomous AI DatabaseでのSQLトレースの有効化を参照してください。
-
moduleName: モジュール名です。詳細は、Autonomous AI DatabaseでのSQLトレースの有効化を参照してください。
-
numID1_numID2: SQLトレース機能で提供される2つの識別子です。numID1およびnumID2の数値は、クラウド・オブジェクト・ストレージ内の同じバケットにトレース・ファイルを作成し、トレースを使用して各トレース・ファイル名を他のセッションと一意に区別します。
データベース・サービスがパラレル化をサポートし、セッションがパラレル問合せを実行する場合、SQLトレース機能では、異なるnumID1およびnumID2値を持つ複数のトレース・ファイルを生成できます。
ノート
ノート: SQLトレースを同じセッション内で複数回有効にして無効にすると、各トレース反復によってクラウド・オブジェクト・ストアに個別のトレース・ファイルが生成されます。セッションで生成された以前のトレースが上書きされないように、その後生成されるファイルは同じ命名規則に従い、トレース・ファイル名に数値の接尾辞を追加します。この数値接尾辞は1から始まり、その後、トレースの反復ごとに1ずつ増分されます。
たとえば、クライアント識別子をsql_testに設定し、モジュール名をmodnameに設定したときに生成されるトレース・ファイル名の例を次に示します。
sqltrace/sqlt_test/modname/sqltrace_5415_56432.trcTKPROFを実行して、トレース・ファイルを読取り可能な出力ファイルに変換できます。
-
トレース・ファイルをオブジェクト・ストアからローカル・システムにコピーします。
-
トレース・ファイルの保存先ディレクトリに移動します。
-
次の構文を使用して、オペレーティング・システムのプロンプトで
TKPROFユーティリティを実行します。tkprof filename1 filename2 [waits=yes|no] [sort=option] [print=n] [aggregate=yes|no] [insert=filename3] [sys=yes|no] [table=schema.table] [explain=user/password] [record=filename4] [width=n]必要な引数は、入力ファイルと出力ファイルのみです。
-
オンライン・ヘルプを表示するには、引数なしで
TKPROFを起動します。
TKPROFユーティリティの使用の詳細は、『Oracle AI Database SQLチューニング・ガイド』の「エンドツーエンド・アプリケーションのトレース用ツール」を参照してください。
Autonomous AI DatabaseのSESSION_CLOUD_TRACEビューでのトレース・データを表示
SQLトレースを有効にすると、クラウド・オブジェクト・ストア上のトレース・ファイルに保存されたものと同じトレース情報が、トレースを有効にしたセッションのSESSION_CLOUD_TRACEビューに表示されます。
データベース・セッション中に、SQLトレース・データをSESSION_CLOUD_TRACEビューで表示できます。SESSION_CLOUD_TRACEビューには、ROW_NUMBERとTRACEの2つの列があります。
DESC SESSION_CLOUD_TRACE
Name Null? Type
---------- ----- ------------------------------
ROW_NUMBER NUMBER
TRACE VARCHAR2(32767)ROW_NUMBERは、TRACE列にあるトレース・データの順序を指定します。トレース・ファイルに書き込まれるトレース出力の各行は、表内の行になり、TRACE列で使用できます。
セッションのSQLトレースを無効にした後、SESSION_CLOUD_TRACEビューに対して問合せを実行できます。
たとえば:
SELECT trace FROM SESSION_CLOUD_TRACE ORDER BY row_number;SESSION_CLOUD_TRACEのデータは、セッション中に保持されます。ログアウトまたはセッションをクローズすると、データは使用できなくなります。
SQLトレースが有効で、同じセッション内で複数回無効になっている場合、SESSION_CLOUD_TRACEはすべての反復のトレース・データを累積的に表示します。したがって、以前にトレースを無効にした後のセッションでトレースを再度有効にしても、前の反復によって生成されたトレース・データは削除されません。