簡體   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