Oracle SQL Microsoft Graph 连接器

Oracle SQL Graph 连接器允许组织发现本地 Oracle 数据库中的数据并编制索引。 连接器将指定内容索引到 Microsoft 搜索中。 为了使索引与源数据保持同步,它支持定期完全爬网和增量爬网。 使用 Oracle SQL 连接器,还可以限制对某些用户的搜索结果的访问。

注意

请阅读Microsoft 365 管理中心中的设置 Microsoft Graph 连接器一文,了解一般 Microsoft Graph 连接器设置说明。

本文适用于配置、运行和监视 Oracle SQL Graph 连接器的任何人。 它补充了常规设置过程,并显示仅适用于 Oracle SQL Graph 连接器的说明。 本文还包括有关 故障排除限制的信息。

开始之前

安装连接器代理

若要访问本地第三方数据,必须安装和配置 Graph 连接器代理。 有关详细信息 ,请参阅安装 Graph 连接器代理

步骤 1:在Microsoft 365 管理中心中添加连接器

添加 Oracle SQL 连接器

按照常规 设置说明进行操作

步骤 2:命名连接

按照常规 设置说明进行操作

步骤 3:配置连接设置

若要将 Oracle SQL 连接器连接到数据源,必须配置要爬网的数据库服务器和本地 Graph 连接器代理。 然后,可以使用所需的身份验证方法连接到数据库。

对于 Oracle SQL 连接器,需要指定主机名、端口和服务 (数据库) 名称以及首选身份验证方法、用户名和密码。

如果服务名称不可用,并且使用 SID 进行连接,则可以使用以下命令之一来派生服务名称, (作为 sys 管理员执行) -

  • 从 gv$session 中选择SERVICE_NAME,其中 sid in (从 v$MYSTAT) 中选择 sid;
  • 选择sys_context ('userenv','service_name') 从双;

注意

数据库必须运行 Oracle 数据库版本 11g 或更高版本,连接器才能进行连接。 连接器支持托管在 Windows、Linux 和 Azure VM 平台上的 Oracle 数据库。

若要搜索数据库内容,必须在配置连接器时指定 SQL 查询。 这些 SQL 查询需要命名要编制索引的所有数据库列, (即源属性) ,包括需要执行以获取所有列的任何 SQL 联接。 若要限制对搜索结果的访问,必须在配置连接器时在 SQL 查询中指定访问控制列表 (ACL) 。

步骤 3a:完全爬网 (必需)

在此步骤中,将配置运行数据库完全爬网的 SQL 查询。 完全爬网将选择要在其中选择“ 查询”、“ 搜索”或“ 检索”选项的所有列或属性。 还可以指定 ACL 列,以将搜索结果的访问限制为特定用户或组。

提示

若要获取所需的所有列,可以联接多个表。

显示具有示例属性的 OrderTable 和 AclTable 的脚本。

选择 (“必需) ”和“ACL”列 (“可选”)

该示例演示了五个保存搜索数据的数据列的选择:OrderId、OrderTitle、OrderDesc、CreatedDateTime 和 IsDeleted。 若要设置每行数据的查看权限,可以选择选择以下 ACL 列:AllowedUsers、AllowedGroups、DeniedUsers 和 DeniedGroups。 对于所有这些数据列,可以选择 “查询”、“ 搜索”或“ 检索”选项。

选择数据列,如以下示例查询所示: SELECT OrderId, OrderTitle, OrderDesc, AllowedUsers, AllowedGroups, DeniedUsers, DeniedGroups, CreatedDateTime, IsDeleted

若要管理对搜索结果的访问,可以在查询中指定一个或多个 ACL 列。 SQL 连接器允许你控制每个记录级别的访问。 可以选择对表中的所有记录使用相同的访问控制。 如果 ACL 信息存储在单独的表中,则可能必须与查询中的这些表进行联接。

下面介绍了上述查询中每个 ACL 列的用法。 以下列表介绍了四 种访问控制机制

  • AllowedUsers:此选项指定能够访问搜索结果的用户 ID 列表。 在以下示例中,用户列表: john@contoso.com、 keith@contoso.com和 lisa@contoso.com 将仅有权访问 OrderId = 12 的记录。
  • AllowedGroups:此选项指定能够访问搜索结果的用户组。 在以下示例中,组 sales-team@contoso.com 只能访问 OrderId = 12 的记录。
  • DeniedUsers:此选项指定 无权 访问搜索结果的用户列表。 在以下示例中,用户 john@contoso.com 和 keith@contoso.com 无权访问 OrderId = 13 的记录,而其他人则有权访问此记录。
  • DeniedGroups:此选项指定 对搜索结果没有 访问权限的用户组。 在以下示例中,OrderId = 15 的组 engg-team@contoso.com 和 pm-team@contoso.com 无权访问记录,而其他人则有权访问此记录。

显示具有示例属性的 OrderTable 和 AclTable 的示例数据。

支持的数据类型

下表汇总了 Oracle SQL 连接器支持的数据类型。 该表还汇总了支持的 SQL 数据类型的索引数据类型。 若要详细了解 Microsoft Graph 连接器支持的索引数据类型,请参阅 有关属性资源类型的文档。

类别 源数据类型 索引数据类型
数字数据类型 数字 (p,0) p <= 18) 的 int64 (
p > 18) 的双 (
浮点数数据类型 number (p,s)
FLOAT (p)
double
日期数据类型 日期
时间 戳
TIMESTAMP (n)
datetime
字符数据类型 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。 然后在查询中使用“CreatedDateTime > 2019 年 3 月 1 日 03:00:00”提取下一批 N 行。

跳过软删除行 (可选)

若要将数据库中的软删除行从索引中排除,请指定软删除列名和值,该值指示该行已删除。

软删除设置:“软删除列”和“软删除列的值,指示已删除的行。

完全爬网:管理搜索权限

选择“ 管理权限 ”以选择各种访问控制 (ACL) 指定访问控制机制的列。 选择在完全爬网 SQL 查询中指定的列名称。

每个 ACL 列应为多值列。 这些多个 ID 值可以通过分隔符分隔,例如分号 (;) 、逗号 (、) 等。 需要在值分隔符字段中指定此 分隔符

支持将以下 ID 类型用作 ACL:

  • 用户主体名称 (UPN) :UPN) (用户主体名称是采用电子邮件地址格式的系统用户的名称。 例如,UPN (: john.doe@domain.com) 由用户名 (登录名) 、@ 符号) 分隔符 (和域名 (UPN 后缀) 组成。
  • Microsoft Entra ID:在Microsoft Entra ID 中,每个用户或组都有一个对象 ID,该 ID 类似于“e0d3ad3d-0000-1111-2222-3c5f5c52ab9b”
  • Active Directory (AD) 安全 ID:在本地 AD 设置中,每个用户和组都有一个不可变的唯一安全标识符,该标识符类似于“S-1-5-21-3878594291-2115959936-132693609-65242”。

用于配置访问控制列表的搜索权限设置。

步骤 3b:增量爬网 (可选)

在此可选步骤中,提供 SQL 查询以运行数据库的增量爬网。 使用此查询,SQL 连接器确定自上次增量爬网以来对数据所做的任何更改。 与完全爬网一样,在 “查询”、“ 搜索”或“ 检索”选项之间进行选择。 指定在完整爬网查询中指定的同一组 ACL 列。

下图中的组件类似于完整爬网组件,但有一个例外。 在这种情况下,“ModifiedDateTime”是所选水印列。 查看 完整的爬网步骤 ,了解如何编写增量爬网查询,并参阅下图作为示例。

显示 OrderTable、AclTable 和可使用的示例属性的增量爬网脚本。

步骤 4:分配属性标签

按照常规 设置说明进行操作

步骤 5:管理架构

按照常规 设置说明进行操作

步骤 6:管理搜索权限

可以选择使用 在完全爬网屏幕中指定的 ACL ,也可以重写它们以使内容对每个人都可见。

步骤 7:选择刷新设置

Oracle SQL 连接器支持完整爬网和增量爬网的刷新计划。 建议同时设置这两者。

完整爬网计划可查找以前同步到 Microsoft 搜索索引的已删除行,以及从同步筛选器移出的任何行。 首次连接到数据库时,将运行完全爬网以同步从完整爬网查询检索到的所有行。 若要同步新行并进行更新,需要计划增量爬网。

步骤 8:查看连接

按照常规 设置说明进行操作

故障排除

下面列出了在配置连接器时观察到的常见错误及其可能的原因。

配置步骤 错误消息 () 的可能原因
数据库设置 数据库服务器出错:连接请求超时 主机名无效
无法访问主机
数据库设置 数据库服务器出错:ORA-12541:TNS:无侦听器 无效端口
数据库设置 数据库服务器出错:ORA-12514:TNS:侦听器当前不知道连接器描述符中请求的服务 服务 (数据库) 名称无效
数据库设置 数据库服务器出错:用户“”user登录失败。 用户名或密码无效
完全爬网 从完全爬网 SQL 查询返回的列column_name包含非字母数字字符 SELECT 子句的列名中不允许使用非字母数字字符 (如下划线) 。 使用别名重命名列并删除非字母数字字符 (示例 - SELECT column_name AS columnName) 。

限制

Oracle SQL 连接器在预览版中具有以下限制:

  • 本地数据库必须运行 Oracle 数据库版本 11g 或更高版本。
  • 仅使用用户主体名称 (UPN) 、Microsoft Entra ID 或 Active Directory 安全性来支持 ACL。
  • 不支持为数据库列内的丰富内容编制索引。 此类内容的示例包括 HTML、JSON、XML、Blob 和作为数据库列内的链接存在的文档分析。