您好,登錄后才能下訂單哦!
一、解決問題:
解決表空間很大,總顯示空間不足的問題
ORA-01536:space quota exceeded
for table space 'AAA '
二、三個解決辦法:
(1) alter user
USERNAME quota 100M on TABLESPACENAME;
(2) alter user
USERNAME quota unlimited on TABLESPACENAME;
(3) grant
unlimited tablespace to USERNAME;
quota是為了限制用戶對表空間的使用
比如你限制用戶a在tablespace a中的quota為10m,當用戶a在tablespace
a中的數據量達到10m后,無論你的tablespace a中有多少空間,a都無法再使用tablespace a 了。
所以你需要
alter user a quota 1000M on a;
alter user a quota
unlimited on a;
grant unlimited tablespace to a
你可以查詢dba_ts_quotas來獲取相關信息
二、Quota 說明
配額大小指的是用戶指定使用表空間的的大小。在1.1 節里提到,默認情況下,用戶對所有表空間都是沒有配額的,即不受空間的限制。 查看幾個用戶的創建腳本來驗證一下:
CREATE USER SYSTEM
IDENTIFIED BY <password>
DEFAULT TABLESPACE SYSTEM
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
-- 2 Roles for SYSTEM
GRANT AQ_ADMINISTRATOR_ROLE TO SYSTEM WITH ADMIN OPTION;
GRANT DBA TO SYSTEM WITH ADMIN OPTION;
ALTER USER SYSTEM DEFAULT ROLE ALL;
-- 5 System Privileges for SYSTEM
GRANT GLOBAL QUERY REWRITE TO SYSTEM;
GRANT CREATE MATERIALIZED VIEW TO SYSTEM;
GRANT CREATE TABLE TO SYSTEM;
GRANT UNLIMITED TABLESPACE TO SYSTEM WITH ADMIN OPTION;
GRANT SELECT ANY TABLE TO SYSTEM;
CREATE USER DAVE
IDENTIFIED BY <password>
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
-- 2 Roles for DAVE
GRANT CONNECT TO DAVE;
GRANT RESOURCE TO DAVE;
ALTER USER DAVE DEFAULT ROLE ALL;
-- 1 System Privilege for DAVE
GRANT UNLIMITED TABLESPACE TO DAVE;
從這2個腳本來看,默認情況下,都會對用戶賦 unlimited tablespace 的權限。這是是在創建的時候指定的,當我們的用戶創建好之后,我們也可以修改用戶的配額。
有關用戶的配額的操作說明
1. 創建用戶時,指定限額
SQL> conn / as sysdba;
Connected.
SQL> create user anqing identified by anqing default tablespace users temporary tablespace temp quota 10M on users;
User created.
查詢用戶配額的信息:
SQL> select tablespace_name,username,max_bytes from DBA_TS_QUOTAS where username='ANQING';< /FONT>
TABLESPACE_NAME USERNAME MAX_BYTES
------------------------------ ---------- ----------
USERS ANQING 10485760
2.更改用戶的表空間限額:
不對用戶做表空間限額控制:
SQL> grant unlimited tablespace to anqing;
Grant succeeded.
這種方式是全局性的. 即修改用戶多所有表空間的配額。
如果我們想改某個具體的,即針對用戶的某個特定的表空間,可以使用如下SQL:
SQL> alter user anqing quota unlimited on users;
User altered.
查看配額:
SQL> select tablespace_name,username,max_bytes from DBA_TS_QUOTAS where username='ANQING';< /FONT>
TABLESPACE_NAME USERNAME MAX_BYTES
------------------------------ ---------- ----------
USERS ANQING -1
這時候max_bytes 為-1,即不受限制。
3. 回收用戶對表空間的配額:
同樣兩種方式,
全局:
SQL> revoke unlimited tablespace from anqing;
Revoke succeeded.
在查看配額,已經沒有了相關信息:
SQL> select tablespace_name,username,max_bytes from DBA_TS_QUOTAS where username='ANQING';< /FONT>
no rows selected
針對某個特定的表空間:
SQL> alter user anqing quota 0 on users;
User altered.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。