既存のSQL実行計画を自律型AIデータベースに移行して、SQLパフォーマンス低下のリスクを軽減

Autonomous AI Databaseへの移行時にSQLパフォーマンス低下のリスクを軽減する方法について説明します。

リアルタイムSQL計画管理(SPM)を使用した自律型AIデータベースへの移行について

ソースのOracle AI DatabaseからAutonomous AI Databaseに移行する際のリアルタイムSQL計画管理の使用について説明します。

ソースのOracle AI DatabaseからAutonomous AI Databaseに移行する場合、リアルタイムSQL計画管理(SPM)を使用できます。これにより、ソース・データベースからSQL実行計画を取得し、それらをAutonomous AI Database上の自動SQLチューニング・セット(ASTS)に移動できるため、移行後も計画のパフォーマンスが同じまたはより優れた状態で継続して実行できます。リアルタイムSPMでは、自律型AIデータベースの計画を変更できますが、リアルタイムSPMでパフォーマンスが低下した場合、その計画によりパフォーマンスが向上すると(リアルタイムSPMでは、パフォーマンスが向上する場合にのみ、自動SQLチューニング・セット(ASTS)の計画が使用されます)、移行前のデータベースから発生した計画を使用できます。

自律型AIデータベースへの移行でリアルタイムSPMを使用する場合は、次の点に注意してください。

  • SPMは、繰返し可能なSQL文に依存します。SPMは、SQL文でリテラル値を使用するデータベースや、アドホック問合せ環境など、非常に動的であるSQLには適していません。ただし、SQL文でリテラル値が使用され、CURSOR_SHARINGパラメータがFORCEに設定されている場合、SPMは動作します。

  • Autonomous AI Databaseに移行するソースOracle AI Databaseでは、SQLチューニング・セット(SYS_AUTO_SYS)でアプリケーションSQL文を取得します。これはSYSAUXの領域を消費できますが、通常は数ギガバイトしか消費しません(大規模なシステムの場合でも)。必要に応じて、SYSAUXの使用状況を監視し、表領域のサイズを大きくできます。

  • リアルタイムSPMは、すべてのパフォーマンスの低下を防ぐことはできませんが、SQL実行計画の変更によってパフォーマンス低下が発生するリスクを大幅に削減できます。

次のステップを実行して、ソースOracle AI DatabaseでSQL計画管理(SPM)を有効にし、データベースをAutonomous AI Databaseに移行します:

  1. ソースOracle AI Databaseでの自動SQLチューニング・セットの有効化

  2. Autonomous AI Databaseへのデータの移行

  3. ソースOracle AI Databaseからの自動SQLチューニング・セットのエクスポート

  4. Autonomous AI Databaseへの自動SQLチューニング・セットのインポート

  5. Autonomous AI DatabaseでのリアルタイムSPM設定の確認

詳細は、次を参照してください:

ソースOracle AI Databaseでの自動SQLチューニング・セットの有効化

Autonomous AI Databaseに移行する前に、ソースOracle AI Databaseで自動SQLチューニング・セット(ASTS)を有効にします。

ASTSは、ワークロードをカバーし、SQL文のすべてまたはほとんどとその実行計画を取得するのに十分な時間のために実行する必要があります。そのため、自律型AIデータベースへの移行の前に、リードタイムでASTSを有効にすることを検討してください。たとえば、財務または販売アプリケーションの場合、月末または年度末処理を取得します。

ソースのOracle AI Databaseで、DBAユーザーとして自動SQLチューニング・セット(ASTS)を有効にします。

  1. 移行するデータベースで、ASTSを有効にします。

    BEGIN
      dbms_auto_task_admin.enable(
        client_name => 'Auto STS Capture Task',
        operation   => NULL,
        window_name => NULL);
    END;
    /

    詳細は、DBMS_AUTO_TASK_ADMINを参照してください。

  2. ASTSバックグラウンド・タスクが有効になっていることを確認します。

    SELECT task_name, interval,status, last_schedule_time, enabled
        FROM   dba_autotask_schedule_control
        WHERE  dbid = sys_context('userenv','con_dbid') AND
               task_name = 'Auto STS Capture Task';

取得中のSQLを監視する場合は、DBA_SQLSET_STATEMENTSを表示します。次に例を示します。

SELECT substr(sql_text,1,100) txt, executions
    FROM dba_sqlset_statements
    WHERE sqlset_name = 'SYS_AUTO_STS';

必要に応じて、SYSAUXのサイズと空き領域を監視できます。次に例を示します。

SELECT sum(bytes)/(102410241024) size_gb
    FROM   dba_data_files
    WHERE tablespace_name = 'SYSAUX' GROUP BY tablespace_name;

SELECT sum(bytes)/(102410241024) free_gb
    FROM dba_free_space
    WHERE tablespace_name = 'SYSAUX' GROUP BY tablespace_name;

自律型AIデータベースへのデータの移行

自動SQLチューニング・セット(ASTS)を有効にしてソースOracle AI Databaseで十分な量のSQLを取得したら、Autonomous AI Databaseへの移行を実行します。

Autonomous AI Databaseに移行するオプションについては、「Autonomous AI DatabaseへのOracle AIデータベースの移行」を参照してください。

ソースOracle AI Databaseからの自動SQLチューニング・セットのエクスポート

Autonomous AI Databaseへの移行を実行した後、ソースOracle AI Databaseから自動SQLチューニング・セット(ASTS)をエクスポートします。

  1. ソースのOracle AI Databaseで、ASTSデータのステージング表を作成して移入します。

    DBAユーザーとして、ステージング表を作成します。

    BEGIN
       dbms_sqlset.create_stgtab('ASTS_TABLE');
       dbms_sqlset.pack_stgtab('SYS_AUTO_STS','SYS','ASTS_TABLE');
    END;
    /

    この操作の完了後、ステージング表には、ソースOracle AI Databaseで取得されたSQL文が含まれます。

  2. ステージング表をエクスポートします。

    たとえば、Oracle Data Pumpを使用してステージング表をエクスポートします。

    CREATE DIRECTORY dpdir AS '/*export_directory*';
    expdp *user*/password@*database* tables=asts_table directory= dumpfile=*filename*

詳細は、DBMS_SQLSETを参照してください。

Autonomous AI Databaseへの自動SQLチューニング・セットのインポート

Autonomous AI Databaseへの移行を実行し、移行するソースOracle AI Databaseから自動SQLチューニング・セット(ASTS)をエクスポートした後、ASTSをAutonomous AI Databaseにインポートします。

  1. Autonomous AI Databaseにステージング・ファイルをインポートします。

    Oracle Data Pumpを使用して、ステージング表をAutonomous AIデータベースにインポートします。最初に、ソースOracle AI Databaseからエクスポートしたダンプ・ファイルをクラウド・オブジェクト・ストレージ・バケットにアップロードしてから、ダンプ・ファイルをインポートします。

    たとえば、ADMINユーザーとして次のコマンドを実行します。

    a. Cloud Object Storeバケットにアクセスするための資格証明を作成します。

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'BUCKET_CREDENTIAL',
        username => 'oracleidentitycloudservice/aaaaa@bbbbb.com',
        password => 'password'
      );
    END;
    /

    詳細は、クラウド・サービスにアクセスするための資格証明の作成を参照してください。

    b. Oracle Data Pumpを使用して、ASTSデータを含むダンプ・ファイルをAutonomous AI Databaseインスタンスにインポートします。

    impdp admin/password@*db_adb*_high \
         directory=data_pump_dir \
         credential=BUCKET_CREDENTIAL \
         dumpfile= https://*namespace-string*.objectstorage.us-ashburn-1.oci.customer-oci.com/n/namespace-string/b/bucketname/o/asts_staging.dmp \
         tables=asts_table

    詳細は、Autonomous AI DatabaseでのOracle Data Pumpを使用したデータ・インポートを参照してください。

    ノート

    注意:

    タイムゾーン・ファイルが、ダンプ・ファイルを作成したソースOracle AI Databaseの値と一致していることを確認します。タイムゾーンが一致しない場合、データベースは次のエラーを発生させます。

    ORA-39002: invalid operation' error raised by dbms_datapump.start_job'

    詳細は、日時データ型およびタイム・ゾーンのサポートおよびAutonomous AI Databaseでのタイム・ゾーン・ファイル更新の管理を参照してください。

  2. 移行されたAutonomous AI Databaseで、ステージング表からSQL文を解凍し、宛先ASTSにロードします。

    BEGIN
       dbms_sqlset.unpack_stgtab('SYS_AUTO_STS','SYS',TRUE,'ASTS_TABLE');
    END;
    /

詳細は、DBMS_SQLSETを参照してください。

自律型AIデータベースでのリアルタイムSPM設定の確認

Autonomous AI DatabaseでリアルタイムSPMが有効になっていることを確認するステップについて説明します。

Autonomous AI Databaseでは、リアルタイムSPMがデフォルトで有効になっています。リアルタイムSPMモードは、次のように検証できます。

SELECT parameter_value spm_mode
    FROM   dba_sql_management_config
    WHERE  parameter_name = 'AUTO_SPM_EVOLVE_TASK';

モード AUTO (自動)リアルタイムSPMは、リアルタイムSPMが有効になっていることを示します。

リアルタイムSPMが有効になっていない場合は、次のコマンドを使用して有効にします。

EXEC dbms_spm.configure('AUTO_SPM_EVOLVE_TASK', 'AUTO')