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.小结
Oracle的Control能力很强,在控制用户对表空空间使用上的控制方法除了可以数据文件上做限制的同时,还可以使用文中描述的“配额限制法”。
Good luck.
secooler
10.06.03
-- The End --
可以使用视图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.小结
Oracle的Control能力很强,在控制用户对表空空间使用上的控制方法除了可以数据文件上做限制的同时,还可以使用文中描述的“配额限制法”。
Good luck.
secooler
10.06.03
-- The End --
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-664347/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/519536/viewspace-664347/