我正在尝试为db用户赋予特权,并希望允许该用户创建表。检查“ RESOURCE”特权,它包含以下内容:
SELECT privilege FROM dba_sys_privs WHERE grantee = 'RESOURCE';
资源
CREATE TABLE
CREATE OPERATOR
CREATE TYPE
CREATE CLUSTER
CREATE TRIGGER
CREATE INDEXTYPE
CREATE PROCEDURE
CREATE SEQUENCE
正如我指出的那样,其中包括CREATE TABLE,我假设可以向我的用户授予RESOURCE,并且该用户将能够在自己的模式中创建表。
GRANT RESOURCE TO User1;
在User1上,我运行以下命令:
CREATE TABLE testable (
sessionID varchar2(32 char) not null,
attributeA varchar(10) ,
attributeB varchar2(50)
);
但是我得到了:
Error: ORA-01031: insufficient privileges
SQLState: 42000
ErrorCode: 1031
如果我改为手动向User1授予“ CREATE TABLE”,则它可以工作。为什么会这样?
GRANT CREATE TABLE TO User1;
答案 0 :(得分:0)
正如Tejash回答的那样,只需要重新连接用户即可。
答案 1 :(得分:0)
一旦获得resource
(来自系统用户)的授权,您就需要与用户重新连接,因为您的current session
无法识别新授予的授权(资源)
干杯!