創建新的用戶時,要指定default tablespace,否則它會把system表空間當成自己的缺省表空間。這樣做是不提倡的。估計原來創建某個用戶的時候沒有指定缺省表空間,而現在它使用系統表空間的權限被DBA給收回了。
先用的簡單的辦法試試,一般缺省的ORACLE安裝都是有USERS表空間的。
比如你要在用戶(或SCHEMA)usera中建表,那麼你用SYSTEM登錄ORACLE後,執行如下SQL
ALTER USER usera QUOTA UNLIMITED ON USERS;
如果沒有USERS表空間,則會報錯,你可以找一個其他的表空間,從v$tablespace可以看到所有的表空間。
下面情況sany用戶開始創建的時候沒有制定default tablespace ********
SQL> connect sany/as646333
已連接。
SQL> select * from user_sys_privs
2 ;
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
SANY CREATE SESSION NO
SANY EXECUTE ANY PROCEDURE NO
SANY CREATE USER NO
SANY CREATE TABLE NO
SQL> create table bjwh(user_id number(5),user_name varchar2(20),phone varchar2(12),email varchar2(20
));
create table bjwh(user_id number(5),user_name varchar2(20),phone varchar2(12),email varchar2(20))
*
第 1 行出現錯誤:
ORA-01950: 對錶空間 'USERS' 無權限
SQL> connect system/oracle
已連接。
SQL> alter user sany quota unlimited on users;
用戶已更改。
SQL> connect sany/as646333
已連接。
SQL> create table bjwh(user_id number(5),user_name varchar2(20),phone varchar2(12),email varchar2(2
0));
表已創建。
SQL> disconnect
從 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 斷開
SQL> desc bjwh
SP2-0640: 未連接
SP2-0641: "DESCRIBE" 需要連接至服務器
SQL> connect sany/as646333
已連接。
SQL> desc bjwh
名稱 是否爲空? 類型
----------------------------------------- -------- ----------------------------
USER_ID NUMBER(5)
USER_NAME VARCHAR2(20)
PHONE VARCHAR2(12)
EMAIL VARCHAR2(20)
問題解決。