能否为非当前用户的Schema使用CREATE SCHEMA AUTHORIZATION?
我执行了以下操作:
CREATE USER MAIN_USER IDENTIFIED BY main_user_pass; GRANT CREATE SESSION TO MAIN_USER; GRANT CREATE TABLE TO MAIN_USER; ALTER SESSION SET CURRENT_SCHEMA = MAIN_USER;
查询与结果
查询1:
SELECT USER FROM DUAL;
结果1:
SYS
查询2:
SELECT sys_context('userenv', 'current_schema') FROM dual;
结果2:
MAIN_USER
成功执行的语句
CREATE SCHEMA AUTHORIZATION SYS CREATE TABLE new_product (color VARCHAR2(10) PRIMARY KEY);
执行结果:
Schema AUTHORIZATION created.
执行失败的语句与错误信息
CREATE SCHEMA AUTHORIZATION MAIN_USER CREATE TABLE new_product (color VARCHAR2(10) PRIMARY KEY);
错误输出:
ORA-02421: missing or invalid schema authorization identifier 02421. 00000 - "missing or invalid schema authorization identifier" *Cause: the schema name is missing or is incorrect in an authorization clause of a create schema statement. *Action: If the name is present, it must be the same as the current schema.
根据Oracle的错误提示(ORA-02421),无法为非当前用户的Schema使用CREATE SCHEMA AUTHORIZATION。
错误信息的Action部分明确规定:如果在授权子句中指定了Schema名称,该名称必须与当前Schema完全一致。这里需要注意,CREATE SCHEMA AUTHORIZATION要求的"当前Schema"是指登录用户本身(即USER函数返回的用户),而非通过ALTER SESSION切换的会话级当前Schema。
你当前登录用户是SYS,因此只能为SYS创建Schema;若要为MAIN_USER创建Schema,必须以MAIN_USER身份登录后执行对应语句(可省略AUTHORIZATION MAIN_USER,默认使用当前登录用户)。
内容的提问来源于stack exchange,提问作者Андрей Марchenko
相关产品推荐
相关产品推荐

