Oracle Apex应用部署后Authentication scheme订阅丢失问题求助
Oracle APEX 24.1.3 订阅认证方案丢失连接:"Nonexistent Master" 问题
问题背景
我们在Oracle APEX中采用自定义认证方案的订阅机制:各环境部署应用100作为主应用,仅维护对应环境的认证方案主版本,其余所有应用均订阅该主版本。此前部署到生产环境时,只需导入后进入应用100发布认证方案,即可批量更新所有订阅应用的认证方案。但升级到APEX 24.1.3后,导入应用出现订阅连接丢失的情况,APEX显示:
Subscribed From : Nonexistent Master
Subscription Status: Could not determine, needs refresh
现在必须为每个导入应用的每个认证方案手动取消订阅后重新订阅,工作量大幅增加。
可能的原因
- APEX 24.1.3订阅机制变更:新版本可能调整了主对象的识别逻辑(比如应用ID、对象唯一标识符),导入时未正确关联主应用的认证方案。
- 导入顺序错误:先导入订阅应用,再部署主应用100的认证方案,导致订阅应用找不到主对象。
- 导出/导入元数据缺失:导出订阅应用时未包含完整的订阅关联信息,或者导入过程中元数据同步不完整。
- 元数据缓存未刷新:APEX的元数据缓存未及时更新,导致系统无法识别已存在的主认证方案。
解决方法
1. 规范导入顺序
- 先导入并激活应用100,进入其认证方案页面点击发布,确保主认证方案处于已发布状态。
- 再导入所有订阅应用,此时订阅应用会自动关联已发布的主认证方案,避免出现"Nonexistent Master"错误。
2. 批量修复现有订阅关系
如果已经导入了订阅应用,可通过SQL Workshop执行脚本批量修复,减少手动操作:
- 查询所有无效的订阅记录:
SELECT s.application_id, s.auth_scheme_name FROM apex_application_auth_schemes s WHERE s.subscription_status = 'INVALID' AND s.master_application_id = 100;
- 批量更新订阅状态(替换
你的主认证方案名称和订阅的认证方案名称为实际名称):
UPDATE apex_application_auth_schemes SET subscription_status = 'VALID', subscribed_from = (SELECT auth_scheme_id FROM apex_application_auth_schemes WHERE application_id = 100 AND auth_scheme_name = '你的主认证方案名称') WHERE application_id != 100 AND auth_scheme_name = '订阅的认证方案名称' AND master_application_id = 100; COMMIT;
- 进入工作区设置,执行刷新元数据操作,确保系统识别更新后的订阅关系。
3. 检查导出配置
导出订阅应用时,务必勾选包含订阅引用选项,保证导出的元数据包含完整的主对象关联信息。
4. 排查版本补丁
查看Oracle官方的APEX 24.1.3补丁列表,确认是否有订阅机制相关的BUG修复补丁,如有则及时安装。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

