• APEX 无法分配 SH 用户?一个存储过程轻松解决


    在 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一起成长~

  • 相关阅读:
    Apache Knox 2.0.0使用
    正在等待操作系统重新启动。 请重新启动计算机以安装autocad 2024。
    MyBatis 核心文件配置并完成CRUD。
    java 通用导出接口
    关于SQL优化的辟谣
    CMake学习教程(一)
    大模型背景下软件工程的机遇与挑战
    ILS解析漏洞复现
    微信小程序开发学习6(基础加强之使用npm包和全局数据共享及分包【Tab底栏案例改进】)
    夯实网络安全基石,筑牢网络安全防线
  • 原文地址:https://www.cnblogs.com/jyzhao/p/22944514