如何将一个用户分配给一个表空间? - 甲骨文 11g
How to assign a user just to one tablespace? - Oracle 11g
安装新数据库时,最好创建一个新用户和一个新 table 空间,因为创建 table 不应该使用 SYS/SYSTEM or/and 在 table 空间 "SYSTEM".
所以我使用以下命令创建了用户 "alex" 和 table 空间 "alexData":
CREATE TABLESPACE alexData datafile 'C:/oraclexe/alexData.dbf'
size 100M;
ALTER USER alex QUOTA UNLIMITED ON alexData;
ALTER USER alex QUOTA 0 ON SYSTEM;
我想实现用户 "alex" 只能将他的数据保存在 "alexData" table 空间中。
为什么?因为当他想要访问 table 时,他不应该总是提到 table 空间 "alexData"。
否则他总是需要像这样提到它:
SELECT *
FROM alexData.table
但我希望他总是在那个 table空间里,这样他就不需要提及它了:
SELECT *
FROM table;
这可能吗?
您不能在 SYS
或 SYSTEM
拥有的 table 上创建触发器,请参阅:
Why cannot I create triggers on objects owned by SYS?
如果您要在其上创建触发器的 table 是您创建的 table,它应该存在于 ALEX
架构中。此架构应有权在同一架构中创建的 table 上创建触发器。正如前面评论中提到的,您应该从 ALEX
架构中撤销 CREATE ANY TABLE
特权,因为该用户应该只能在他们自己的架构上创建 table。
首先,@Mat 所说的后果,你不能像
SELECT * FROM alexData.table_
但 SELECT * FROM alex.table_
,因为 table 可能以架构名称为前缀。您可能会注意到,您不能使用 table
,这是 oracle 的关键字,作为 table 名称,所以我使用 table_
代替。
创建用户时,会在 table 空间内自动创建对象。例如,当 create table ...
语句发出时,如果您 create
或 alter
您的用户使用 DEFAULT TABLESPACE
短语,则无需提及 table 空间:
CREATE USER alex IDENTIFIED BY alex321
DEFAULT TABLESPACE alexData
TEMPORARY TABLESPACE alexTempData;
或
ALTER USER alex IDENTIFIED BY alex321
DEFAULT TABLESPACE alexData;
安装新数据库时,最好创建一个新用户和一个新 table 空间,因为创建 table 不应该使用 SYS/SYSTEM or/and 在 table 空间 "SYSTEM".
所以我使用以下命令创建了用户 "alex" 和 table 空间 "alexData":
CREATE TABLESPACE alexData datafile 'C:/oraclexe/alexData.dbf'
size 100M;
ALTER USER alex QUOTA UNLIMITED ON alexData;
ALTER USER alex QUOTA 0 ON SYSTEM;
我想实现用户 "alex" 只能将他的数据保存在 "alexData" table 空间中。
为什么?因为当他想要访问 table 时,他不应该总是提到 table 空间 "alexData"。
否则他总是需要像这样提到它:
SELECT *
FROM alexData.table
但我希望他总是在那个 table空间里,这样他就不需要提及它了:
SELECT *
FROM table;
这可能吗?
您不能在 SYS
或 SYSTEM
拥有的 table 上创建触发器,请参阅:
Why cannot I create triggers on objects owned by SYS?
如果您要在其上创建触发器的 table 是您创建的 table,它应该存在于 ALEX
架构中。此架构应有权在同一架构中创建的 table 上创建触发器。正如前面评论中提到的,您应该从 ALEX
架构中撤销 CREATE ANY TABLE
特权,因为该用户应该只能在他们自己的架构上创建 table。
首先,@Mat 所说的后果,你不能像
SELECT * FROM alexData.table_
但 SELECT * FROM alex.table_
,因为 table 可能以架构名称为前缀。您可能会注意到,您不能使用 table
,这是 oracle 的关键字,作为 table 名称,所以我使用 table_
代替。
创建用户时,会在 table 空间内自动创建对象。例如,当 create table ...
语句发出时,如果您 create
或 alter
您的用户使用 DEFAULT TABLESPACE
短语,则无需提及 table 空间:
CREATE USER alex IDENTIFIED BY alex321
DEFAULT TABLESPACE alexData
TEMPORARY TABLESPACE alexTempData;
或
ALTER USER alex IDENTIFIED BY alex321
DEFAULT TABLESPACE alexData;