5
2

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 AI DatabaseからSharepoint上のファイルにアクセスしてみた

5
Last updated at Posted at 2026-06-10

はじめに

先日のAutonomous AI Databaseの機能追加で、以下のパッケージ/プロシージャ/ファンクションでSharepointに格納されているファイルへのアクセスがサポートされました。
・DBMS_CLOUD.LIST_OBJECTファンクション
・DBMS_CLOUD.LIST_OBJECT_EXTENDEDファンクション
・DBMS_CLOUD.GET_OBJECTプロシージャ/ファンクション
・DBMS_CLOUD_AI.CREATE_VECTOR_INDEXプロシージャ
・DBMS_CLOUD_PIPELINEパッケージ

今回は、基本となるDBMS_CLOUD.LIST_OBJECT_EXTENDEDファンクション、DBMS_CLOUD.GET_OBJECTプロシージャの使用方法を検証しました。

注意
こちらの記事の内容はあくまで個人のメモ的な内容のため、こちらの内容を利用した場合のトラブルには一切責任を負いません。
また、こちらの記事の内容を元にしたOracleサポートへの問い合わせはご遠慮ください。

1. SharepointのテナントIDの確認

テナントIDを確認します。
テナントIDはEntra IDのOverviewのページで確認できます。

スクリーンショット 2026-06-10 10.17.13.png

2. SharepointのサイトIDの確認

今回検証で利用しているSharepoint環境では「MainSite」というサイトがあります。

スクリーンショット 2026-06-10 13.17.45.png

ホスト名がmydomain.sharepoint.comの場合、このMainSiteのサイトIDを確認するには、以下のようなURLをブラウザに入力します。

https://mydomain.sharepoint.com/sites/MySite/_api/site/id

表示されたレスポンス内のEdm.Guidの値がサイトIDです。

スクリーンショット 2026-06-10 10.32.49.png

この例では、e3da3827-0433-4aa1-89db-70a08f19eca2がサイトMySiteのサイトIDになります。

3. アプリケーションの登録

SharepointのテナントのEntra admin centerにアクセスし、「App refistrations」に移動します。

スクリーンショット 2026-06-10 11.53.20.png

「+ New registration」をクリックします。

スクリーンショット 2026-06-10 11.55.13.png

Nameに登録するアプリケーション名(ここではAutonomous Database)を入力し、他の項目はデフォルトのままで「Register」をクリックして、アプリケーションを登録します。

スクリーンショット 2026-06-10 9.36.58.png

アプリケーション「Autonomous Database」が登録されました。
今後の設定で必要になるので、Application (client)IDの値をメモしておきます。

スクリーンショット 2026-06-10 9.37.36のコピー.png

「Cettificates & secrets」に移動します。
スクリーンショット 2026-06-10 9.37.36.png

「+ New client secret」をクリックします。
スクリーンショット 2026-06-10 9.41.11.png

DescriptionとExpires(有効期限)を入力し、「Add」をクリックします。
スクリーンショット 2026-06-10 9.42.16.png

作成されたクライアント・シークレットの「Value」の値をメモしておきます。
スクリーンショット 2026-06-10 9.42.41のコピー.png

※Autonomous AI DatabaseからSharepointにアクセスする際に使用するクレデンシャルを作成する際に、クライアントIDとシークレットの値を使用します。

4. アプリケーションに対するAPIアクセスの許可

登録したアプリケーションに、SharepointへのAPIアクセスを許可します。
※こちらの設定内容はあくまで一つの例です。ご利用の環境に合わせてアプリケーションに適切なAPIアクセスを許可してください

「API permissions」に移動します。
スクリーンショット 2026-06-10 9.42.41.png

「+ Add permission」をクリックします。
スクリーンショット 2026-06-10 9.55.21.png

「Microsoft Graph」をクリックします。
スクリーンショット 2026-06-10 9.57.32.png

「Application Permission」をクリックします。
スクリーンショット 2026-06-10 10.00.50.png

「Sites.Read.All」を選択し、「Add permissions」をクリックします。
スクリーンショット 2026-06-10 10.02.58.png

「Grant admin consent for <テナント名>」をクリックします。
スクリーンショット 2026-06-10 10.04.33.png

アプリケーション「Autonomous Database」にパーミッション「Sites.Read.All」が付与されました。
スクリーンショット 2026-06-10 10.16.19.png

5. クレデンシャルの作成

Autonomous AI DatabaseからSharepointへアクセスする際に使用するクレデンシャルを作成します。

adminユーザとして、Autonomous AI Databaseに接続します。

user@mymac ~ % sqlplus admin@adb

SQL*Plus: Release 23.0.0.0.0 - Production on Wed Jun 10 09:33:13 2026
Version 23.3.0.23.09

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

Enter password: 
Last Successful login time: Wed Jun 03 2026 07:02:04 +09:00

Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.2.2.0 - Production
Version 23.26.2.2.0

SQL>

DBMS_CLOUD.CREATE_CREDENTIALパッケージを使用して、クレデンシャルを作成します。

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'クレデンシャル名',
        username        => 'クライアントID',
        password        => 'クライアント・シークレット'
    );
END;
/
SQL> BEGIN
  2      DBMS_CLOUD.CREATE_CREDENTIAL(
  3          credential_name => 'SHAREPOINT_CREDENTIAL',
  4          username        => '5cd519f2-e4c3-415e-9a6d-aa3009b2f103',
  5          password        => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  6      );
  7  END;
  8  /

PL/SQL procedure successfully completed.

SQL>

6. メタデータを含むオブジェクト・リストの取得

DBMS_CLOUD.LIST_OBJECTS_EXTENDEDファンクションを使用して、サイト直下のオブジェクトの一覧(メタデータを含む)を取得します。

SELECT JSON_SERIALIZE(data PRETTY) FROM 
DBMS_CLOUD.LIST_OBJECTS_EXTENDED(
    location_uri    => DBMS_CLOUD.INIT_SHAREPOINT_URI(
                           tenant_id   => 'テナントID',
                           site_id     => 'サイトID'),
    credential_name => 'SHAREPOINT_CREDENTIAL');

SQL> set linesize 120
SQL> set long 1000
SQL> SELECT JSON_SERIALIZE(data PRETTY) FROM
  2  DBMS_CLOUD.LIST_OBJECTS_EXTENDED(
  3  	 location_uri	 => DBMS_CLOUD.INIT_SHAREPOINT_URI(
  4                             tenant_id   => '71d23856-8757-428a-893f-6360dc0c18c8',
  5                             site_id     => 'e3da3827-0433-4aa1-89db-70a08f19eca2'),
  6      credential_name => 'SHAREPOINT_CREDENTIAL');

JSON_SERIALIZE(DATAPRETTY)
------------------------------------------------------------------------------------------------------------------------
{
  "object_name" : "https://dubmetender.sharepoint.com/sites/MainSite/Shared%20Documents",
  "bytes" : null,
  "checksum" : "\"5a9eb912-40da-4d01-80b4-5aa6ec3ca4d7,7\"",
  "created" : "23-MAY-26 12.42.32.000000000 PM +09:00",
  "last_modified" : "09-JUN-26 09.46.51.000000000 AM +09:00",
  "metadata" :
  {
    "tenant_id" : "71d23856-8757-428a-893f-6360dc0c18c8",
    "site_id" : "e3da3827-0433-4aa1-89db-70a08f19eca2",
    "list_id" : "5a9eb912-40da-4d01-80b4-5aa6ec3ca4d7",
    "item_id" : null
  }
}

{
  "object_name" : "https://dubmetender.sharepoint.com/sites/MainSite/_catalogs/wte",
  "bytes" : null,
  "checksum" : "\"ff5938ba-faf5-4aab-b614-f084fcab68ad,0\"",
  "created" : "09-JUN-26 05.40.59.000000000 AM +09:00",
  "last_modified" : "09-JUN-26 05.44.36.000000000 AM +09:00",
  "metadata" :
  {
    "tenant_id" : "71d23856-8757-428a-893f-6360dc0c18c8",
    "site_id" : "e3da3827-0433-4aa1-89db-70a08f19eca2",
    "list_id" : "ff5938ba-faf5-4aab-b614-f084fcab68ad",
    "item_id" : null
  }
}


SQL> 

サイトMySite内のDocuments(Shared%20Documents)のリストID(list_id)が5a9eb912-40da-4d01-80b4-5aa6ec3ca4d7であることがわかりました。

次に、サイトMySite内のDocuments(Shared%20Documents)内にあるオブジェクトの一覧を取得してみます。

SELECT JSON_SERIALIZE(data PRETTY) FROM 
DBMS_CLOUD.LIST_OBJECTS_EXTENDED(
    location_uri    => DBMS_CLOUD.INIT_SHAREPOINT_URI(
                           tenant_id   => 'テナントID',
                           site_id     => 'サイトID',
                           list_id     => 'リストID'),
    credential_name => 'クレデンシャル名');
SQL> SELECT JSON_SERIALIZE(data PRETTY) FROM 
  2  DBMS_CLOUD.LIST_OBJECTS_EXTENDED(
  3      location_uri    => DBMS_CLOUD.INIT_SHAREPOINT_URI(
  4                             tenant_id   => '71d23856-8757-428a-893f-6360dc0c18c8',
  5                             site_id     => 'e3da3827-0433-4aa1-89db-70a08f19eca2',
  6                             list_id     => '5a9eb912-40da-4d01-80b4-5aa6ec3ca4d7'),
  7      credential_name => 'SHAREPOINT_CREDENTIAL');

JSON_SERIALIZE(DATAPRETTY)
------------------------------------------------------------------------------------------------------------------------
{
  "object_name" : "https://dubmetender.sharepoint.com/sites/MainSite/Shared%20Documents/FY26_Qiita_Result.xlsx",
  "bytes" : null,
  "checksum" : "\"e61dc23f-4960-43ae-9d13-9083687387f8,1\"",
  "created" : "09-JUN-26 09.46.20.000000000 AM +09:00",
  "last_modified" : "09-JUN-26 09.46.20.000000000 AM +09:00",
  "metadata" :
  {
    "tenant_id" : "71d23856-8757-428a-893f-6360dc0c18c8",
    "site_id" : "e3da3827-0433-4aa1-89db-70a08f19eca2",
    "list_id" : "5a9eb912-40da-4d01-80b4-5aa6ec3ca4d7",
    "item_id" : "1"
  }
}


SQL> 

Documents(Shared%20Documents)内にはFY26_Qiita_Result.xlsxという名前のファイルがあり、このファイルのアイテムID(item_id)が1であることがわかりました。

7. Sharepointからファイルを取得する

DBMS_CLOUD.GET_OBJECTプロシージャを使用して、SharepointからAutonomous AI Databaseのディレクトリにファイルをダウンロードしてみます。

ディレクトリDATA_PUMP_DIRに何も格納されていないことを確認します。

SQL> SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR');

no rows selected

SQL>

DBMS_CLOUD.GET_OBJECTプロシージャを使用して、SharepointにあるファイルFY26_Qiita_Result.xlsxをAutonomous AI DatabaseのディレクトリDATA_PUMP_DIRにコピーします。

SQL> BEGIN
  2      DBMS_CLOUD.GET_OBJECT(
  3          object_uri      => DBMS_CLOUD.INIT_SHAREPOINT_URI(
  4                                 tenant_id   => '71d23856-8757-428a-893f-6360dc0c18c8',
  5                                 site_id     => 'e3da3827-0433-4aa1-89db-70a08f19eca2',
  6                                 list_id     => '5a9eb912-40da-4d01-80b4-5aa6ec3ca4d7',
  7                                 item_id     => 1),
  8          credential_name => 'SHAREPOINT_CREDENTIAL',
  9          directory_name  => 'DATA_PUMP_DIR'
 10      );
 11  END;
 12  /

PL/SQL procedure successfully completed.

SQL>

ディレクトリDATA_PUMP_DIRの内容を確認します。

SQL> SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR');

OBJECT_NAME
------------------------------------------------------------------------------------------------------------------------
     BYTES
----------
CHECKSUM
------------------------------------------------------------------------------------------------------------------------
CREATED
---------------------------------------------------------------------------
LAST_MODIFIED
---------------------------------------------------------------------------
FY26_Qiita_Result.xlsx
     19889

10-JUN-26 02.11.03.000000 AM +00:00
10-JUN-26 02.11.03.000000 AM +00:00


SQL>

SharepointからAutonomous AI DatabaseのディレクトリDATA_PUMP_DIRにファイルFY26_Qiita_Result.xlsxをダウンロードすることができました。

参考情報

SharePoint Support in Autonomous AI Database using DBMS_CLOUD
What is the best way to findout the Share Point Site ID and the Resource ID?

5
2
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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?