欢迎光临
我们一直在努力

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’;< /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.

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。