Oracle SQL Microsoft Graph コネクタ

Oracle SQL Graph コネクタを使用すると、organizationはオンプレミスの Oracle データベースからデータを検出してインデックスを作成できます。 コネクタは、指定されたコンテンツに Microsoft Search にインデックスを付けます。 ソース データを使用してインデックスを最新の状態に保つために、定期的な完全クロールと増分クロールがサポートされます。 Oracle SQL コネクタを使用すると、特定のユーザーの検索結果へのアクセスを制限することもできます。

注:

一般的な Microsoft Graph コネクタのセットアップ手順については、Microsoft 365 管理センターの記事の「Microsoft Graph コネクタのセットアップ」を参照してください。

この記事は、Oracle SQL Graph コネクタを構成、実行、監視するすべてのユーザーを対象とします。 一般的なセットアップ プロセスを補完し、Oracle SQL Graph コネクタにのみ適用される手順を示します。 この記事には、トラブルシューティングと制限事項に関する情報も含まれています。

使用を開始する前に

コネクタ エージェントをインストールする

オンプレミスのサード パーティのデータにアクセスするには、Graph コネクタ エージェントをインストールして構成する必要があります。 詳細については、「 Graph コネクタ エージェントのインストール 」を参照してください。

手順 1: Microsoft 365 管理センターにコネクタを追加する

Oracle SQL コネクタの追加

一般的な セットアップ手順に従います。

手順 2: 接続に名前を指定する

一般的な セットアップ手順に従います。

手順 3. 接続設定を構成する

Oracle SQL コネクタをデータ ソースに接続するには、クロールするデータベース サーバーとオンプレミスの Graph コネクタ エージェントを構成する必要があります。 その後、必要な認証方法を使用してデータベースに接続できます。

Oracle SQL コネクタの場合は、ホスト名、ポート、サービス (データベース) 名と、優先する認証方法、ユーザー名、およびパスワードを指定する必要があります。

サービス名が使用できない場合、SID を使用して接続すると、次のいずれかのコマンドを使用してサービス名を派生させることができます (sys admin として実行されます) -

  • SERVICE_NAME gv$session から sid を選択します (v$MYSTAT から sid を選択します)。
  • デュアルからsys_context('userenv','service_name') を選択します。

注:

コネクタが接続できるようにするには、データベースで Oracle データベース バージョン 11g 以降を実行する必要があります。 コネクタは、Windows、Linux、Azure VM プラットフォームでホストされている Oracle データベースをサポートしています。

データベース コンテンツを検索するには、コネクタを構成するときに SQL クエリを指定する必要があります。 これらの SQL クエリでは、インデックスを作成するすべてのデータベース列 (つまり、ソース プロパティ) に名前を付ける必要があります。これには、すべての列を取得するために実行する必要がある SQL 結合が含まれます。 検索結果へのアクセスを制限するには、コネクタを構成するときに、SQL クエリ内Access Controlリスト (ACL) を指定する必要があります。

手順 3a: フル クロール (必須)

この手順では、データベースのフル クロールを実行する SQL クエリを構成します。 フル クロールでは、[ クエリ]、[ 検索]、または [取得] オプションを選択するすべての列またはプロパティが選択 されます。 ACL 列を指定して、検索結果のアクセスを特定のユーザーまたはグループに制限することもできます。

ヒント

必要なすべての列を取得するには、複数のテーブルを結合できます。

プロパティの例を含む OrderTable と AclTable を示すスクリプト。

データ列の選択 (必須) と ACL 列 (省略可能)

この例では、検索のデータを保持する 5 つのデータ列 (OrderId、OrderTitle、OrderDesc、CreatedDateTime、IsDeleted) の選択を示します。 データの各行の表示アクセス許可を設定するには、必要に応じて、次の ACL 列 (AllowedUsers、AllowedGroups、DeniedUsers、DeniedGroups) を選択できます。 これらのデータ列すべてに対して、[ クエリ]、[ 検索]、または [取得] のオプションを選択できます。

次のクエリ例に示すように、データ列を選択します。 SELECT OrderId, OrderTitle, OrderDesc, AllowedUsers, AllowedGroups, DeniedUsers, DeniedGroups, CreatedDateTime, IsDeleted

検索結果へのアクセスを管理するには、クエリで 1 つ以上の ACL 列を指定します。 SQL コネクタを使用すると、レコード レベルごとにアクセスを制御できます。 テーブル内のすべてのレコードに対して同じアクセス制御を選択できます。 ACL 情報が別のテーブルに格納されている場合は、クエリでそれらのテーブルとの結合を行う必要がある場合があります。

上記のクエリで ACL 列を使用する方法を次に示します。 次の一覧では、4 つの アクセス制御メカニズムについて説明します

  • AllowedUsers: このオプションは、検索結果にアクセスできるユーザー ID の一覧を指定します。 次の例では、ユーザーの一覧: john@contoso.com、 keith@contoso.com、および lisa@contoso.com は、OrderId = 12 のレコードにのみアクセスできます。
  • AllowedGroups: このオプションは、検索結果にアクセスできるユーザーのグループを指定します。 次の例では、グループ sales-team@contoso.com は OrderId = 12 のレコードにのみアクセスできます。
  • DeniedUsers: このオプションは、検索結果にアクセス できない ユーザーの一覧を指定します。 次の例では、OrderId = 13 のレコードへのアクセス権を持たないユーザーとkeith@contoso.com、他のすべてのユーザーjohn@contoso.comがこのレコードにアクセスできます。
  • DeniedGroups: このオプションは、検索結果にアクセス できない ユーザーのグループを指定します。 次の例では、 と をグループ化 engg-team@contoso.com し pm-team@contoso.com 、OrderId = 15 のレコードにアクセスすることはできませんが、他のすべてのユーザーがこのレコードにアクセスできます。

プロパティの例を含む OrderTable と AclTable を示すサンプル データ。

サポートされているデータ型

次の表は、Oracle SQL コネクタでサポートされているデータ型をまとめたものです。 テーブルには、サポートされている SQL データ型のインデックス作成データ型も要約されています。 インデックス作成でサポートされている Microsoft Graph コネクタのデータ型の詳細については、 プロパティ リソースの種類に関するドキュメントを参照してください。

カテゴリ ソース データ型 データ型のインデックス作成
数値データ型 NUMBER(p,0) int64 (p <= 18 の場合)
double (p > 18 の場合)
浮動小数点数データ型 NUMBER(p,s)
FLOAT(p)
double
日付データ型 日付
タイムスタンプ
TIMESTAMP(n)
日付型
文字データ型 CHAR(n)
Varchar
VARCHAR2
長い
Clob
Nclob
string
Unicode 文字データ型 NCHAR
NVARCHAR
string
RowID データ型 Rowid
UROWID
string

現在直接サポートされていない他のデータ型の場合、列はサポートされているデータ型に明示的にキャストする必要があります。

透かし (必須)

データベースの過負荷を防ぐために、コネクタはフル クロール透かし列を使用してフル クロール クエリをバッチ処理して再開します。 透かし列の値を使用すると、後続の各バッチがフェッチされ、最後のチェックポイントからクエリが再開されます。 基本的にこれは、フル クロールのデータ更新を制御するメカニズムです。

次の例に示すように、透かしのクエリ スニペットを作成します。

  • WHERE (CreatedDateTime > @watermark). 予約済みの キーワード (keyword) @watermarkを使用して、透かしの列名を引用します。 基準値列は昇順でのみ並べ替えることができます。
  • ORDER BY CreatedDateTime ASC. 基準値列を昇順で並べ替えます。

次の図に示す構成では、 CreatedDateTime が選択された透かし列です。 行の最初のバッチをフェッチするには、透かし列のデータ型を指定します。 この場合、データ型は です DateTime

透かし列の構成。

最初のクエリでは、"CreatedDateTime > January 1, 1753 00:00:00" (DateTime データ型の最小値) を使用して、最初の N 行数をフェッチします。 最初のバッチがフェッチされた後、行が昇順で並べ替えられた場合、バッチで返される最大値 CreatedDateTime がチェックポイントとして保存されます。 たとえば、2019 年 3 月 1 日 03:00:00 です。 次に 、N 行の次のバッチは、クエリで "CreatedDateTime > March 1, 2019 03:00:00" を使用してフェッチされます。

論理的に削除された行をスキップする (省略可能)

データベース内の論理的に削除された行をインデックス付けから除外するには、論理的な削除列の名前と、行が削除されたことを示す値を指定します。

論理的な削除設定:

フル クロール: 検索アクセス許可を管理する

[ アクセス許可の管理 ] を選択して、アクセス制御メカニズムを指定するさまざまなアクセス制御 (ACL) 列を選択します。 フル クロール SQL クエリで指定した列名を選択します。

ACL の各列は、複数値の列である必要があります。 これらの複数の ID 値は、セミコロン (;)、コンマ (、) などの区切り記号で区切ることができます。 値区切り記号フィールドでこの 区切り記号 を指定する必要があります。

ACL としての使用では、次の ID の種類がサポートされています。

  • ユーザー プリンシパル名 (UPN): ユーザー プリンシパル名 (UPN) は、電子メール アドレス形式のシステム ユーザーの名前です。 UPN (例: john.doe@domain.com) は、ユーザー名 (ログオン名)、区切り記号 (@ 記号)、ドメイン名 (UPN サフィックス) で構成されます。
  • Microsoft Entra ID: Microsoft Entra ID では、すべてのユーザーまたはグループに'e0d3ad3d-0000-1111-2222-3c5f5c52ab9b' のようなオブジェクト ID があります
  • Active Directory (AD) セキュリティ ID: オンプレミスの AD セットアップでは、すべてのユーザーとグループに、'S-1-5-21-3878594291-215959936-132693609-65242'のような不変の一意のセキュリティ識別子があります。

アクセス制御リストを構成するための検索アクセス許可の設定。

手順 3b: 増分クロール (省略可能)

この省略可能な手順では、データベースの増分クロールを実行する SQL クエリを指定します。 このクエリでは、SQL コネクタによって、前回の増分クロール以降のデータへの変更が決定されます。 フル クロールと同様に、[ クエリ]、[ 検索]、または [取得] のいずれかのオプションを選択します。 フル クロール クエリで指定したのと同じ ACL 列のセットを指定します。

次の図のコンポーネントは、フル クロール コンポーネントに似ていますが、1 つの例外があります。 この場合、選択した透かし列は "ModifiedDateTime" です。 フル クロールの手順を確認して、増分クロール クエリを記述する方法を確認し、例として次の画像を参照してください。

OrderTable、AclTable、および使用できるプロパティの例を示す増分クロール スクリプト。

手順 4: プロパティ ラベルを割り当てる

一般的な セットアップ手順に従います。

手順 5: スキーマを管理する

一般的な セットアップ手順に従います。

手順 6: 検索アクセス許可を管理する

フル クロール画面で指定された ACL を使用するか、上書きしてコンテンツをすべてのユーザーに表示するようにすることができます。

手順 7: 更新設定を選択する

Oracle SQL コネクタでは、完全クロールと増分クロールの両方の更新スケジュールがサポートされています。 両方を設定することをお勧めします。

フル クロール スケジュールでは、以前に Microsoft Search インデックスに同期されていた削除された行と、同期フィルターから移動したすべての行が検索されます。 最初にデータベースに接続すると、フル クロールが実行され、フル クロール クエリから取得されたすべての行が同期されます。 新しい行を同期して更新するには、増分クロールをスケジュールする必要があります。

手順 8: 接続を確認する

一般的な セットアップ手順に従います。

トラブルシューティング

下には、コネクタの構成中に観察される一般的なエラーとその考えられる理由の一覧があります。

構成手順 エラー メッセージ 考えられる理由
データベース設定 データベース サーバーからのエラー: 接続要求がタイムアウトしました 無効なホスト名
ホストに到達できない
データベース設定 データベース サーバーからのエラー: ORA-12541: TNS: リスナーなし 無効なポート
データベース設定 データベース サーバーからのエラー: ORA-12514: TNS: リスナーは、コネクタ記述子で要求されたサービスを現在認識していません 無効なサービス (データベース) 名
データベース設定 データベース サーバーからのエラー: ユーザー ''user のログインに失敗しました。 無効なユーザー名またはパスワード
フル クロール フル クロール SQL クエリから返される列column_nameに英数字以外の文字が含まれている SELECT 句の列名では、英数字以外の文字 (アンダースコアなど) は使用できません。 エイリアスを使用して列の名前を変更し、英数字以外の文字を削除します (例 - SELECT column_name AS columnName)。

制限事項

Oracle SQL コネクタには、プレビュー リリースで次の制限があります。

  • オンプレミス データベースでは、Oracle Database バージョン 11g 以降を実行する必要があります。
  • ACL は、ユーザー プリンシパル名 (UPN)、Microsoft Entra ID、または Active Directory セキュリティを使用してのみサポートされます。
  • データベース列内のリッチ コンテンツのインデックス作成はサポートされていません。 このようなコンテンツの例としては、データベース列内にリンクとして存在する HTML、JSON、XML、BLOB、ドキュメント解析などがあります。