Oracle Apex访问Database Monitor提示密码或权限错误求助
解决步骤
针对Apex 5.1 + Oracle 12c环境下Database Monitor认证报错的问题,按以下优先级排查:
1. 校验工作区绑定Schema的权限
Apex的数据库监控权限不单独校验登录的用户角色,而是优先校验当前工作区绑定的数据库Schema权限。你确认的system账号DBA角色是数据库级权限,需要先确认异常应用所属的工作区已关联system Schema,且关联Schema具备必要的Apex管理员角色:
- 进入异常应用对应的工作区,访问路径
Administration > Manage Workspaces > Workspace Details - 查看Associated Schemas列表,确认system在列表内,若使用其他绑定Schema,执行以下授权语句:
-- 用SYS账号执行 GRANT APEX_ADMINISTRATOR_ROLE TO 【你的工作区绑定Schema名称】; GRANT SELECT ANY DICTIONARY TO 【你的工作区绑定Schema名称】;
2. 强制更新实例级功能参数
你在图形化界面同步的配置可能未实际写入Apex实例参数表,直接用SQL更新强制生效:
-- 用SYS账号执行 BEGIN APEX_INSTANCE_ADMIN.SET_PARAMETER('ALLOW_DB_MONITOR', 'Y'); APEX_INSTANCE_ADMIN.SET_PARAMETER('DB_MONITOR_REQUIRE_DBA', 'Y'); COMMIT; END; / -- 重载Apex实例配置 ALTER PACKAGE APEX_050100.APEX_INSTANCE_ADMIN COMPILE;
3. 排查密码大小写敏感适配问题
Oracle 12c默认开启密码大小写敏感,而Apex 5.1早期版本的Database Monitor登录模块存在bug,会自动将输入的密码转为大写,若你的system密码包含小写字母就会出现校验失败。
临时验证方案:
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE SCOPE=BOTH;
验证可正常登录后,要么将system密码改为全大写,要么升级Apex到5.1.4及以上补丁集修复该bug。
4. 校验网络访问控制列表(ACL)配置
确认Apex内置的ACL规则允许system账号访问本地数据库监控接口:
-- 查询现有ACL规则 SELECT * FROM DBA_NETWORK_ACLS WHERE HOST = 'localhost'; -- 缺失规则的话执行添加 BEGIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( HOST => 'localhost', ACE => XS$ACE_TYPE( PRIVILEGE_LIST => XS$NAME_LIST('connect'), PRINCIPAL_NAME => 'SYSTEM', PRINCIPAL_TYPE => XS_ACL.PTYPE_DB ) ); END; /
内容的提问来源于stack exchange,提问作者Kabulan0lak
相关产品推荐
相关产品推荐

