2010-12-20 135 views
-2

我在Oracle上遇到以下錯誤:ORA-01536什麼是Oracle錯誤ORA-01536?

問題是什麼?

+1

你閱讀文檔:

用戶可以使用相應的視圖查看自己當前的配額? – SLaks 2010-12-20 20:15:52

+1

下一次,我建議你在發佈問題之前做兩件事:在http://tahiti.oracle.com上搜索Oracle文檔,並儘可能多地發佈有關您的問題的詳細信息(數據庫和操作系統版本,測試代碼... )。 – 2010-12-20 21:15:35

+8

519個問題0答案。 – 2010-12-20 21:18:22

回答

19

聯機文檔包含一本書,其中包含所有錯誤消息的解釋和解決方案。其中一些有點神祕,但它是開始的地方。 Find out more

Anyhoo,這裏是ORA-01536的圖解解決方案。

一個DBA創建一個新用戶:

SQL> create user fox_in_socks identified by tweetlebeetle 
    2  default tablespace users quota 1M on users 
    3/

User created. 

SQL> grant create session, create table to fox_in_socks 
    2/

Grant succeeded. 

SQL> 

在我們勇敢的用戶創建表另一個會話...

SQL> conn fox_in_socks/tweetlebeetle 
Connected. 
SQL> create table t23 (col1 varchar2(4000)) 
    2/

Table created. 

SQL> 

..並做了一些工作....

SQL> begin 
    2  for i in 1..1000 loop 
    3   insert into t23 values (rpad('a', 4000, 'a')); 
    4   commit; 
    5  end loop; 
    6 end; 
    7/
begin 
* 
ERROR at line 1: 
ORA-01536: space quota exceeded for tablespace 'USERS' 
ORA-06512: at line 3 


SQL> 

呃 - 哦!因此,我們的用戶進入他們的馴服DBA和要求更多的配額,這是他們得到:

SQL> alter user fox_in_socks 
    2  quota 10M on users 
    3/

User altered. 

SQL> 

工作所得:

SQL> begin 
    2  for i in 1..1000 loop 
    3   insert into t23 values (rpad('a', 4000, 'a')); 
    4   commit; 
    5  end loop; 
    6 end; 
    7/

PL/SQL procedure successfully completed. 

SQL> 

如果用戶的應用程序所有者則DBA可能已經決定放棄他們無限的配額(尤其是那些與該表空間特權的唯一用戶):

alter user fox_in_socks 
    quota unlimited on users 
/

(在現實生活中這種情況是不太可能對用戶真正的表空間)。

SQL> select * from user_ts_quotas 
    2/

TABLESPACE_NAME      BYTES MAX_BYTES  BLOCKS MAX_BLOCKS DRO 
------------------------------ ---------- ---------- ---------- ---------- --- 
USERS        9437184 10485760  1152  1280 NO 

SQL> 
5

ORA-01536:空間超出限額表「串」

原因:爲表空間中的段所有者的空間配額已用完,操作試圖在一個新的細分程度的創建表空間。

操作:要麼刪除表空間中不必要的對象以回收空間,要麼讓特權用戶爲該分段所有者增加此表空間上的配額。