Oracle可以使用配额(Quota)这个概念对用户所使用的表空间进行限制。如果不同用户共同使用同一个表空间,可以使用这种方法可以有效地限制每个用户对该表空间的使用。
可以使用视图USER_TS_QUOTAS视图获取用户对表空间的配额限制情况。
1.查看用户sec在相关表空间的配额使用情况
sys@ora10g> conn sec/sec
Connected.
col TABLESPACE_NAME for a15
sec@ora10g> select * from user_ts_quotas;
TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS DRO
--------------- ---------- ---------- ---------- ---------- ---
TBS_SEC_D 0 0 0 0 NO
TBS_SEC_I 0 0 0 0 NO
TBS_SEC_LOB 0 0 0 0 NO
2.调整sec用户在TBS_SEC_D表空间上的配额为无限大
sec@ora10g> conn / as sysdba
Connected.
sys@ora10g> alter user sec quota unlimited on tbs_sec_d;
User altered.
sys@ora10g> conn sec/sec
Connected.
sec@ora10g> select * from user_ts_quotas;
TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS DRO
--------------- ---------- ---------- ---------- ---------- ---
TBS_SEC_I 0 0 0 0 NO
TBS_SEC_LOB 0 0 0 0 NO
TBS_SEC_D 0 -1 0 -1 NO
这里字段MAX_BYTES内容为“-1”即表示配额为无限大。
3.模拟因配额不足导致ORA-01536错误
1)调整sec在tbs_sec_d表空间上的配额为1M。
sec@ora10g> conn / as sysdba
Connected.
sec@ora10g> alter user sec quota 1m on tbs_sec_d;
User altered.
sys@ora10g> conn sec/sec
Connected.
sec@ora10g> select * from user_ts_quotas;
TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS DRO
--------------- ---------- ---------- ---------- ---------- ---
TBS_SEC_I 0 0 0 0 NO
TBS_SEC_LOB 0 0 0 0 NO
TBS_SEC_D 0 10485760 0 1280 NO
2)创建表T,在数据量超过1M后“ORA-01536”错误得以现身
sec@ora10g> create table t as select * from all_objects;
Table created.
sec@ora10g> insert into t select * from t;
insert into t select * from t
*
ERROR at line 1:
ORA-01536: space quota exceeded for tablespace 'TBS_SEC_D'
4.用户表空间限额的创建与更改:
1.创建用户时,指定限额
eg:
CREATE USER SKATE IDENTIFIED BY SKATE_PWD
DEFAULT TABLESPACE SKATE_TS
TEMPORARY TABLESPACE temp
QUOTA 3M ON SKATE_TS
PASSWORD EXPIRE;
2.更改用户的表空间限额:
A:不对用户做表空间限额控制:
GRANT UNLIMITED TABLESPACE TO skate;
这种方式是全局性的.
或者
alter user skate quota unlimited on skate_ts;
这种方式是针对特定的表空间的.
3. 可以分配自然也可以回收了:
revoke unlimited tablespace from skate;
或者
alter user skate quota 0 on SKATE_TS;
表空间大小不足问题的解决:使用“ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file”命令向指定的数据增加表空间,根据具体的情况可以增加一个或多个表空间。
---
备注:本博文转载自--http://space.itpub.net/519536/viewspace-664347
--http://blog.163.com/sunjava2@126/blog/static/28268625201111253621355/
转载于:https://blog.51cto.com/yanlfcto/1257726