繁体   English   中英

如何仅将一个用户分配给一个表空间? -甲骨文11g

[英]How to assign a user just to one tablespace? - Oracle 11g

安装新数据库时,最佳做法是创建新用户和新表空间,因为不应使用SYS / SYSTEM或/和在表空间“ SYSTEM”上创建表。

因此,我使用以下命令创建了用户“ alex”和表空间“ 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”表空间中。

为什么? 因为当他想要访问表时,他不必总是提到表空间“ alexData”。

否则,他总是需要像这样提及它:

SELECT *
FROM alexData.table

但我希望他总是在那个表空间中,所以他不需要提及它:

SELECT *
FROM table;

这可能吗?

您不能在SYS拥有的表上创建触发器,或者SYSTEM请参见:

为什么不能在SYS拥有的对象上创建触发器?

如果要在其上创建触发器的表是已创建的表,则该表应位于ALEX架构上。 该模式应具有在同一模式下创建的表上创建触发器的特权。 如之前的注释中所述,您应该从ALEX模式中撤消CREATE ANY TABLE特权,因为该用户只能在自己的模式中创建表。

首先,@ Mat告诉的后果,您不能使用像

SELECT * FROM alexData.table_SELECT * FROM alex.table_ ,因为表可以以模式名作为前缀。 您可能会注意到,您不能使用table (这是oracle的关键字)作为表名,因此我改用table_

创建用户时,将在该表空间内自动创建对象。 例如,当发出create table ...语句时,如果您使用DEFAULT TABLESPACE短语createalter用户,则无需提及表空间:

CREATE USER alex IDENTIFIED BY alex321
DEFAULT TABLESPACE alexData
TEMPORARY TABLESPACE alexTempData;

要么

ALTER USER alex IDENTIFIED BY alex321
DEFAULT TABLESPACE alexData;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM