为什么我的 Oracle SQL 用户不能创建 table,尽管有 CREATE TABLE 权限?

Why can my Oracle SQL user not create table, despite having CREATE TABLE permissions?

为什么 Oracle SQL 不允许已被授予 CREATE TABLE 权限的用户创建 table?

如果我运行

select * from session_privs;

当以用户身份连接时,我可以验证我确实拥有 CREATE TABLE CREATE ANY TABLE 权限。

Verified perms

但是,当我尝试以用户身份创建 table 时:

create table Course(
CId int GENERATED BY DEFAULT AS IDENTITY,
CName VARCHAR2(50)
);

我害怕了

Error starting at line : 2 in command -
create table c##FACULTYDB.Course(
FId int GENERATED BY DEFAULT ON NULL AS IDENTITY,
FName VARCHAR2(50) not null
)
Error report -
ORA-01031: insufficient privileges
01031. 00000 -  "insufficient privileges"
*Cause:    An attempt was made to perform a database operation without
           the necessary privileges.
*Action:   Ask your database administrator or designated security
           administrator to grant you the necessary privileges

当我 运行 与 SYS 一样创建 table 代码时,它工作正常。有没有人知道可能导致这种情况发生的原因?

要创建带有标识列的 table,您还必须具有 CREATE SEQUENCE 权限。

例如,如果管理员创建了这个用户:

create user test_user identified by test_user;
grant create session, create table, create any table to test_user;

该语句对于该用户将失败:

TEST_USER@orclpdb> create table Course(
  2  CId int GENERATED BY DEFAULT AS IDENTITY,
  3  CName VARCHAR2(50)
  4  );
create table Course(
*
ERROR at line 1:
ORA-01031: insufficient privileges

但在管理员运行此授权后:

grant create sequence to test_user;

用户将能够创建 table:

TEST_USER@orclpdb> create table Course(
  2  CId int GENERATED BY DEFAULT AS IDENTITY,
  3  CName VARCHAR2(50)
  4  );

Table created.