4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Autonomous Database: Autonomous Databaseで生成されたPAR URLに対する外部表を作成してみた

Last updated at Posted at 2025-02-19

はじめに

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プロシージャ

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?