Oracle可以使用配额(Quota)这个概念对用户所使用的表空间进行限制。如果不同用户共同使用同一个表空间,可以使用这种方法可以有效地限制每个用户对该表空间的使用。可以使用视图USER_TS_QUOTAS视图获取用户对表空间的配额限制情况。1.查看用户sec在相关表空间的配额使用情况sys@ora10g> conn sec/secConnected.col TABLESPACE_NAME for a15sec@ora10g> select * from user_ts_quotas;TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS DRO--------------- ---------- ---------- ---------- ---------- ---TBS_SEC_D 0 0 0 0 NOTBS_SEC_I 0 0 0 0 NOTBS_SEC_LOB 0 0 0 0 NO2.调整sec用户在TBS_SEC_D表空间上的配额为无限大sec@ora10g> conn / as sysdbaConnected.sys@ora10g> alter user sec quota unlimited on tbs_sec_d;User altered.sys@ora10g> conn sec/secConnected.sec@ora10g> select * from user_ts_quotas;TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS DRO--------------- ---------- ---------- ---------- ---------- ---TBS_SEC_I 0 0 0 0 NOTBS_SEC_LOB 0 0 0 0 NOTBS_SEC_D 0 -1 0 -1 NO这里字段MAX_BYTES内容为“-1”即表示配额为无限大。3.模拟因配额不足导致ORA-01536错误1)调整sec在tbs_sec_d表空间上的配额为1M。sec@ora10g> conn / as sysdbaConnected.sec@ora10g> alter user sec quota 1m on tbs_sec_d;User altered.sys@ora10g> conn sec/secConnected.sec@ora10g> select * from user_ts_quotas;TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS DRO--------------- ---------- ---------- ---------- ---------- ---TBS_SEC_I 0 0 0 0 NOTBS_SEC_LOB 0 0 0 0 NOTBS_SEC_D 0 10485760 0 1280 NO2)创建表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.secooler10.06.03-- The End --
oracle 查看用户配额,【Quota】获取及调整用户表空间配额方法
最新推荐文章于 2023-02-03 17:01:19 发布