如何创建一个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 权限,但他们自己不拥有任何对象,私有同义词和数据库链接除外。
如何使用 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 权限,但他们自己不拥有任何对象,私有同义词和数据库链接除外。