You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否为非当前用户的Schema使用CREATE SCHEMA AUTHORIZATION?

能否为非当前用户的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:20:43