Azure Data Factory表名下拉不显示SYSTEM用户Oracle表问题咨询
ADF连接本地Oracle无法检索到自建表排查方案
问题背景
使用Azure Data Factory管道将本地Oracle数据库数据复制到MS SQL数据库,本地Oracle实例部署完成后,使用SYSTEM用户创建了SPENDREPORT、SPENDREPORTDETAILS两张表;配置完成自承载集成运行时(SHIR)打通本地Oracle与ADF网络后,创建数据集时表名下拉列表无法找到上述两张表,直接搜索也无匹配结果。
排查与解决步骤
- 校验自承载集成运行时侧的Oracle驱动安装情况
64位版本的自承载集成运行时必须匹配安装64位版本的Oracle Data Provider for .NET(ODP.NET),32位驱动无法被64位SHIR正常加载,会导致元数据拉取异常。驱动安装完成后,在SHIR所在机器重启自承载集成运行时服务,再回到ADF重试拉取表列表。 - 确认表的实际存储位置与命名规则
登录本地Oracle实例,使用SYSTEM用户执行以下查询,确认两张表的实际所属schema、表名存储格式:
Oracle默认将元数据以大写形式存储,如果建表时使用双引号强制指定了小写/混合大小写的表名,会导致ADF默认的元数据匹配规则无法检索到对应表。如果未显式指定schema,SYSTEM用户创建的表默认归属SELECT owner, table_name FROM all_tables WHERE table_name LIKE '%SPENDREPORT%'SYSTEMschema。 - 调整ADF Oracle链接服务配置
打开已配置的Oracle链接服务编辑页,逐一核对以下配置项:- 连接字符串中的服务名/SID、连接账号密码配置正确,确保没有连错Oracle实例
- 若表不在连接账号的默认schema下,在「附加连接属性」中新增
Schema项,值填写表实际所属的schema名称(本例中为SYSTEM) - 关闭schema过滤选项(不同版本ADF文案略有差异,核心是取消“仅显示当前用户schema下表”的勾选)
- 校验连接账号的权限
在SHIR所在机器上,使用ADF链接服务中配置的Oracle账号,通过ODP驱动直连Oracle实例,执行以下查询验证权限:
如果查询无结果,说明该账号缺少对应schema的元数据读取权限、以及两张表的查询权限,使用SYSDBA账号执行以下语句授权即可:SELECT * FROM all_tables WHERE OWNER = 'SYSTEM' AND TABLE_NAME IN ('SPENDREPORT','SPENDREPORTDETAILS')GRANT SELECT_CATALOG_ROLE TO <ADF连接使用的Oracle账号>; GRANT SELECT ON SYSTEM.SPENDREPORT TO <ADF连接使用的Oracle账号>; GRANT SELECT ON SYSTEM.SPENDREPORTDETAILS TO <ADF连接使用的Oracle账号>; - 跳过下拉列表手动配置表名
表名下拉列表的元数据拉取受实例表数量、网络延迟、驱动兼容性影响,经常出现加载不全的问题,属于已知常见现象。不需要强制依赖下拉列表选择,创建数据集时直接选择手动输入表名,按照[schema名].[表名]的格式填写(本例中为SYSTEM.SPENDREPORT、SYSTEM.SPENDREPORTDETAILS),只要预览数据、测试连接正常,即可正常用于复制活动。
内容的提问来源于stack exchange,提问作者JackXandar
相关产品推荐
相关产品推荐

