はじめに
先日の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のページで確認できます。
2. SharepointのサイトIDの確認
今回検証で利用しているSharepoint環境では「MainSite」というサイトがあります。
ホスト名がmydomain.sharepoint.comの場合、このMainSiteのサイトIDを確認するには、以下のようなURLをブラウザに入力します。
https://mydomain.sharepoint.com/sites/MySite/_api/site/id
表示されたレスポンス内のEdm.Guidの値がサイトIDです。
この例では、e3da3827-0433-4aa1-89db-70a08f19eca2がサイトMySiteのサイトIDになります。
3. アプリケーションの登録
SharepointのテナントのEntra admin centerにアクセスし、「App refistrations」に移動します。
「+ New registration」をクリックします。
Nameに登録するアプリケーション名(ここではAutonomous Database)を入力し、他の項目はデフォルトのままで「Register」をクリックして、アプリケーションを登録します。
アプリケーション「Autonomous Database」が登録されました。
今後の設定で必要になるので、Application (client)IDの値をメモしておきます。
「Cettificates & secrets」に移動します。

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

DescriptionとExpires(有効期限)を入力し、「Add」をクリックします。

作成されたクライアント・シークレットの「Value」の値をメモしておきます。

※Autonomous AI DatabaseからSharepointにアクセスする際に使用するクレデンシャルを作成する際に、クライアントIDとシークレットの値を使用します。
4. アプリケーションに対するAPIアクセスの許可
登録したアプリケーションに、SharepointへのAPIアクセスを許可します。
※こちらの設定内容はあくまで一つの例です。ご利用の環境に合わせてアプリケーションに適切なAPIアクセスを許可してください
「Application Permission」をクリックします。

「Sites.Read.All」を選択し、「Add permissions」をクリックします。

「Grant admin consent for <テナント名>」をクリックします。

アプリケーション「Autonomous Database」にパーミッション「Sites.Read.All」が付与されました。

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?
・









