はじめに
Autonomous Databaseでは、表やクエリに対してPAR URLを生成して外部に公開できます。
Autonomous Databaseの新機能として、この生成したPAR URLに対して外部表を作成できるようになったので、その手順と動作を検証してみました。
1. 表に対するPAR URLの生成
Autonomous Databaseに接続します。
このAutonomous Databaseは東京リージョン(ap-tokyo-1)にあります。
[oracle@oracle23ai ~]$ sqlplus admin/Demo#1Demo#1@atp23aitokyo
SQL*Plus: Release 23.0.0.0.0 - Production on Fri Feb 7 07:54:39 2025
Version 23.4.0.24.05
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Last Successful login time: Thu Feb 06 2025 23:05:33 +09:00
Connected to:
Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - Production
Version 23.7.0.25.02
SQL>
PAR URL生成の対象となる表の構造を確認します。
ここでは、movieという表に対してPAR URLを生成します。
SQL> desc movie
Name Null? Type
----------------------------------------- -------- ----------------------------
MOVIE_ID NOT NULL NUMBER(38)
TITLE VARCHAR2(100)
RELEASE_DATE DATE
GENRE VARCHAR2(50)
DIRECTOR_ID NUMBER(38)
SQL>
PAR URL生成の対象となる表の内容を確認します。
SQL> col title for a25
SQL> col genre for a20
SQL> SELECT * FROM movie;
MOVIE_ID TITLE RELEASE_D GENRE DIRECTOR_ID
---------- ------------------------- --------- -------------------- -----------
1 The Proposal 01-JAN-09 Romance 3
2 The Hangover 05-JUN-09 Comedy 2
3 Inglourious Basterds 21-AUG-09 War 4
4 Up in the Air 04-DEC-09 Drama 5
5 District 9 14-AUG-09 Science Fiction 1
SQL>
DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLプロシージャを使用して、表に対するPAR URLを作成します。
DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLプロシージャの詳細は、こちらのマニュアルに記載があります。
SQL> set serveroutput on
SQL> DECLARE
2 status CLOB;
3 BEGIN
4 DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
5 schema_name => 'ADMIN',
6 schema_object_name => 'MOVIE',
7 service_name => 'HIGH',
8 result => status
9 );
10 DBMS_OUTPUT.PUT_LINE(status);
11 END;
12 /
{"status":"SUCCESS","id":"EfoLtHT73g_UgD2YJ5Uv5PTLPts6CRJoiTHS6_3ul6_TsQiGrQUYCy
4wjvYEpyL1","preauth_url":"https://dataaccess.adb.ap-tokyo-1.oraclecloudapps.com
/adb/p/2e6uaFy2AyQ7WjKcAVx9yfI3KoTlxT8_Lgi6M_Iqn_k6xIdX68Hs6lbJ2lm19OmwjUpw9hsSg
7M/data","expiration_ts":"2025-05-19T23:08:20.167Z","expiration_count":null}
PL/SQL procedure successfully completed.
SQL>
表示された実行結果内のpreauth_urlの値が、生成されたPAR URLです。
また、expiration_tsがPAR URLの有効期限(デフォルトは生成から90日間)です。
なお、PAR URLの有効期限は、DBMS_DATA_ACCESS.EXTEND_URLプロシージャで延長することができます。
curlコマンドで生成されたPAR URLにアクセスしてみます。
[opc@oracle23ai ~]$ curl https://dataaccess.adb.ap-tokyo-1.oraclecloudapps.com/adb/p/2e6uaFy2AyQ7WjKcAVx9yfI3KoTlxT8_Lgi6M_Iqn_k6xIdX68Hs6lbJ2lm19OmwjUpw9hsSg7M/data
{"items":[{"MOVIE_ID":1,"TITLE":"The Proposal","RELEASE_DATE":"2009-01-01T00:00:00","GENRE":"Romance","DIRECTOR_ID":3},{"MOVIE_ID":2,"TITLE":"The Hangover","RELEASE_DATE":"2009-06-05T00:00:00","GENRE":"Comedy","DIRECTOR_ID":2},{"MOVIE_ID":3,"TITLE":"Inglourious Basterds","RELEASE_DATE":"2009-08-21T00:00:00","GENRE":"War","DIRECTOR_ID":4},{"MOVIE_ID":4,"TITLE":"Up in the Air","RELEASE_DATE":"2009-12-04T00:00:00","GENRE":"Drama","DIRECTOR_ID":5},{"MOVIE_ID":5,"TITLE":"District 9","RELEASE_DATE":"2009-08-14T00:00:00","GENRE":"Science Fiction","DIRECTOR_ID":1}],"hasMore":false,"limit":1000,"offset":0,"count":5,"links":[{"rel":"self","href":"https://dataaccess.adb.ap-tokyo-1.oraclecloudapps.com/adb/p/2e6uaFy2AyQ7WjKcAVx9yfI3KoTlxT8_Lgi6M_Iqn_k6xIdX68Hs6lbJ2lm19OmwjUpw9hsSg7M/data"}]}
[opc@oracle23ai ~]$
PAR URLにアクセスすると、movie表の内容がJSON形式で返されることがわかります。
2. PAR URLに対する外部表の作成
Autonomous Databaseに接続します。
このAutonomous Databaseは大阪リージョン(ap-osaka-1)にあります。
[oracle@oracle23ai admin]$ sqlplus admin/Demo#1Demo#1@atp23aiosaka
SQL*Plus: Release 23.0.0.0.0 - Production on Wed Feb 19 08:11:50 2025
Version 23.4.0.24.05
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - Production
Version 23.7.0.25.02
SQL>
DBMS_CLOUD.CREATE_EXTERNAL_TABLEプロシージャを使用して、PAR URLに対する外部表を作成します。
table_nameには作成する外部表の名前を、file_uri_listにはPAR URLを指定します。
SQL> BEGIN
2 DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
3 table_name => 'ext_tab_parurl_movie',
4 file_uri_list => 'https://dataaccess.adb.ap-tokyo-1.oraclecloudapps.com/adb/p/2e6uaFy2AyQ7WjKcAVx9yfI3KoTlxT8_Lgi6M_Iqn_k6xIdX68Hs6lbJ2lm19OmwjUpw9hsSg7M/data'
5 );
6 END;
7 /
PL/SQL procedure successfully completed.
SQL>
PAR URLに対する外部表が作成できました。
作成したPAR URLを元にした外部表の構造を確認します。
SQL> desc ext_tab_parurl_movie
Name Null? Type
----------------------------------------- -------- ----------------------------
MOVIE_ID NUMBER
TITLE VARCHAR2(100)
RELEASE_DATE DATE
GENRE VARCHAR2(50)
DIRECTOR_ID NUMBER
SQL>
作成したPAR URLを元にした外部表の内容を確認します。
SQL> col title for a25
SQL> col genre for a20
SQL> SELECT * FROM ext_tab_parurl_movie;
MOVIE_ID TITLE RELEASE_D GENRE DIRECTOR_ID
---------- ------------------------- --------- -------------------- -----------
1 The Proposal 01-JAN-09 Romance 3
2 The Hangover 05-JUN-09 Comedy 2
3 Inglourious Basterds 21-AUG-09 War 4
4 Up in the Air 04-DEC-09 Drama 5
5 District 9 14-AUG-09 Science Fiction 1
SQL>
PAR URLを元にした外部表を作成して、別のリージョンにあるAutonomous Databaseの表に簡単にアクセスできることが確認できました。
参考情報
・Query Data that Uses Pre-Authenticated Request (PAR) URL Source
・DBMS_CLOUD.CREATE_EXTERNAL_TABLEプロシージャ
・DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLプロシージャ
・DBMS_DATA_ACCESS.EXTEND_URLプロシージャ