如何创建一个table的用户?

How to create a table of a user?

如何使用 sys 创建一个 table 用户?我想给一个用户 table 但我希望这个用户不能改变 table.

我试过这个:

CONNECT USER1/USER1;
CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

但我想从 sys 用户创建此 table,因此 user1 无法更改此 table。我该怎么做?

USER1 可以在他们的架构中 alter table,即使他们没有 CREATE TABLE 权限。

作为系统:

grant create session to user1;

alter user user1 quota 100M on users ;

create table user1.t1 (id number);

现在以 USER1 的身份连接。这两个语句都会成功:

insert into t1 values (1234);

alter table t1 add col1 varchar2(16);

如果不清楚,USER1 无法创建 table。此语句将失败并显示 ORA-01031: insufficient privileges...

create table t2(id number);

不清楚您要实现的目标,但控制架构的最佳方式是将架构所有者与应用程序用户分开。架构所有者拥有对象,但(通常)缺乏 CREATE SESSION 权限,至少在生产中是这样:他们的对象由高级用户帐户部署。应用程序用户对模式所有者帐户中的对象具有 CREATE SESSION 和 DML 权限,但他们自己不拥有任何对象,私有同义词和数据库链接除外。