Oracle 23AI中以USER000身份为sales用户创建表的权限问题
解决ORA-01031权限不足问题的正确操作
错误原因
执行ALTER SESSION SET CURRENT_SCHEMA = sales后,建表操作的主体仍是USER000,而非sales:
USER000拥有的CREATE TABLE权限仅允许其在自身schema下建表,无法操作sales的schema。- 给
sales授予CREATE TABLE权限,仅允许sales自身在其schema内建表,不赋予USER000替sales建表的权限。
正确操作方法
方法一:授予USER000跨schema建表的系统权限
以ADMIN用户执行以下语句,赋予USER000在任意schema下建表的权限:
GRANT CREATE ANY TABLE TO USER000 WITH ADMIN OPTION;
之后USER000可直接执行建表操作(两种方式任选其一):
-- 方式1:切换schema后建表 ALTER SESSION SET CURRENT_SCHEMA = sales; CREATE TABLE sale ( saleID NUMBER, productID NUMBER ); -- 方式2:直接指定schema建表 CREATE TABLE sales.sale ( saleID NUMBER, productID NUMBER );
方法二:让sales授予USER000专属建表权限
先切换到sales用户,执行语句赋予USER000在sales schema下的建表权限:
GRANT CREATE TABLE ON SCHEMA sales TO USER000;
之后USER000即可切换到sales schema执行建表操作,或直接指定schema创建表。
内容的提问来源于stack exchange,提问作者Lev
相关产品推荐
相关产品推荐

