我尝试使用名为PEOPLE的现有模式在 APEX 中创建一个工作区,它给出了错误消息"The schema is reserved or restricted"。我尝试使用我创建的其他现有模式,它们都运行良好。
技术/环境细节如下:
数据库:安装在本地机器上的 Oracle 19c EE。
Apex:19.2 作为嵌入式网关安装在本地计算机上。
创建了名为PDB1的可插拔数据库。使用 OMF(Oracle 托管文件)语法
创建表空间PEOPLE_TAB 。在PDB1
中
创建了本地用户PEOPLE。
给人们以下角色和权限(我知道有些像 RESOURCE 角色和 CREATE SESSION priv 一样加倍):
RESOURCE
UNLIMITED TABLESPACE
SELECT_CATALOG_ROLE
CREATE SESSION
CREATE TABLE
CREATE TYPE
CREATE CLUSTER
CREATE TRIGGER
CREATE PROCEDURE
CREATE SEQUENCE
CREATE VIEW
CREATE DIMENSION
CREATE JOB
CREATE SYNONYM
CREATE DIMENSION
CREATE MATERIALIZED VIEW
我在同一个表空间PEOPLE_TAB中创建了另一个用户TEST1 ,具有与PEOPLE相同的权限,并重新创建了对象和数据。我可以使用这个新模式成功创建一个工作区!
在网上搜索,但大多数文章和帖子都引用了旧版本的 APEX,但我仍然尝试了以下方法。
我遵循了 Oracle 文档Application Express Release 19.2 管理指南第 2.13 节中给出的建议
APEX 19.2 的 APEX 引擎架构是APEX_190200。所以我解锁了 APEX_190200并登录(更改密码后)运行检查。
-- Checked if PEOPLE was a restricted schema
SELECT schema FROM APEX_190200.wwv_flow_restricted_schemas order by schema;
PEOPLE未列出,我认为不受限制。因此,无论如何,我都尝试不限制PEOPLE,如文档中所述。
-- ran from APEX_190200
EXEC APEX_INSTANCE_ADMIN.UNRESTRICT_SCHEMA(p_schema => 'PEOPLE');
COMMIT;
成功运行但没有解决问题。
在网上查看大部分信息已过时,但无论如何都尝试过。
-- ran from APEX_190200
EXEC APEX_SITE_ADMIN_PRIVS.UNRESTRICT_SCHEMA(p_schema => 'PEOPLE');
COMMIT;
以上没有运行并抱怨包不存在。我验证了在 user_objects 中查找APEX_SITE_ADMIN_PRIVS时 - 它不存在。
几年前,函数 wwv_flow_provision.IS_RESERVED 有一个错误,但我检查了这个,它运行正常,返回 FALSEPEOPLE返回 FALSE,为保留字(如 VARCHAR)返回 TRUE。
当我可以创建具有相同权限的相同用户(不同名称)时,我真的很震惊,对象和数据是在同一个表空间上创建的,并且它在 APEX 工作区中运行良好。
有没有人有解决这个问题的经验或指出我正确的方向?
谢谢你。