Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 用户对表空间配额quota说明

一、解决问题:解决表空间很大,总显示空间不足的问题
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";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";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";no rows selected针对某个特定的表空间:SQL> alter user anqing quota 0 on users;User altered.Oracle count(*) 耗时长解决实况使用DBMS_SHARED_POOL包将对象固定到共享池相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数