在 Oracle APEX 日常开发中,笔者习惯使用 Object Browser 对不同 Schema 进行管理。最近为了测试同事开发的本体构建平台,笔者导入了 Oracle 自带的 SH 用户来模拟业务数据,却在分配 Schema 时遇到了一个“怪问题”。

01 | 问题现象:下拉列表里找不到 SH

在 APEX 管理后台,通过 Manage Workspaces -> Manage Workspace to Schema Assignments -> Add Schema 为工作区分配已存在的 Schema 时,候选下拉列表中竟然找不到 SH 用户。

明明 SH 是数据库里真实存在的用户,为何在 APEX 的分配界面中“隐身”了?这并非 APEX 的 Bug,而是其默认的安全机制在起作用。

02 | 原因与解法:注册 Schema 例外

APEX 出于安全考虑,默认只允许工作区访问部分受控 Schema。对于 SH 这类未在 APEX 中显式注册的用户,需要由管理员手动将其加入“例外名单”。

解决方案是使用 SYS 用户执行 APEX_INSTANCE_ADMIN.CREATE_SCHEMA_EXCEPTION 存储过程,将 SH 用户与目标工作区(例如 WS_ALFRED)进行绑定:

SQL> show user
USER is "SYS"
SQL> BEGIN
  2      APEX_INSTANCE_ADMIN.CREATE_SCHEMA_EXCEPTION(
  3          p_schema    => 'SH',
  4          p_workspace => 'WS_ALFRED'
  5      );
  6      COMMIT;
  7  END;
  8* /

PL/SQL procedure successfully completed.

执行成功后,再次回到 Add Schema 页面,SH 用户就会出现在候选列表中,可以正常勾选并添加:

image.png

添加完成后,笔者就能在 Object Browser 中愉快地访问和管理 SH 下的业务数据了:

image.png

小结

当 APEX 默认无法为工作区分配某个数据库用户时,不必怀疑环境配置。通过 APEX_INSTANCE_ADMIN.CREATE_SCHEMA_EXCEPTION 存储过程将该 Schema 加入例外,即可快速解决问题。这一操作对管理员来说简单高效,但需注意它属于例外授权,应谨慎使用。

关注我,和AI一起成长~


原文地址: https://www.cveoy.top/t/topic/qHxB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录