はじめに
OCI FunctionsのファンクションをAutonomous DatabaseからSQLファンクションとして呼び出せるようになったので、Autonomous Databaseを使用してOCI Functionsのファンクションを定期実行させてみました。
1. OCI FunctionsのファンクションをSQLファンクションとして呼び出すための設定
こちらの記事を参考に、OCI FunctionsのファンクションをAutonomous DatabaseからPL/SQLファンクションとして実行できるように設定します。
(ここではobject_storage_file_zipというファンクションを対象にしています)
2. OCI Functionsのファンクションを実行するPL/SQLプロシージャの作成
OCI Functionsのファンクションobject_storage_file_zipを実行するPL/SQLプロシージャEXECUTE_OCI_FUNCTIONを作成します。
SQL> CREATE OR REPLACE PROCEDURE EXECUTE_OCI_FUNCTION
IS
result CLOB;
BEGIN
SELECT object_storage_file_zip(
'{
"COMPARTMENT_ID": "ocid1.compartment.oc1..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"REGION": "ap-tokyo-1",
"SOURCE_BUCKET": "SourceBucket",
"SOURCE_FILES": "/",
"TARGET_BUCKET": "TargetBucket",
"ALLOW_OVERWRITE": "true"
}'
) as response INTO result
FROM dual;
END;
/
Procedure EXECUTE_OCI_FUNCTION compiled
SQL>
3. OCI Functionsのファンクションを実行するPL/SQLプロシージャを定期実行するDBMS_SCHEDULERジョブの作成
作成したPL/SQLプロシージャEXECUTE_OCI_FUNCTIONを日本時間2023/10/25 0:20に初回実行し、その後10分間隔で定期実行するDBMS_SCHEDULERジョブEXECUTE_OCI_FUNCTION_JOBを作成します。
SQL> BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'EXECUTE_OCI_FUNCTION_JOB',
job_type => 'STORED_PROCEDURE',
job_action => 'ADMIN.EXECUTE_OCI_FUNCTION',
start_date => TO_TIMESTAMP_TZ('2023-10-25 00:20:00 +9:00','YYYY-MM-DD HH24:MI:SS TZH:TZM'),
repeat_interval => 'FREQ=MINUTELY;INTERVAL=10',
auto_drop => FALSE,
enabled => TRUE,
job_class => 'HIGH'
);
END;
/
PL/SQL procedure successfully completed.
SQL>
4. 動作確認
しばらく待ってからOCI Functionsのファンクションのログを確認してみます。
OCI Functionsのファンクションが2023/10/24 15:20:00 UTC(2023/10/25 0:20 JST)に初回実行され、その後10分間隔で定期実行されていることが確認できました。
以上で、Autonomous Databaseを使用してOCI Functionsのファンクションを定期実行することが可能なことが確認できました。
