zoukankan      html  css  js  c++  java
  • 数据库与linux中quota的作用

    linux命令,quota 命令显示磁盘使用情况和限额。缺省情况下,或者带 -u 标志,只显示用户限额。quota 命令报告 /etc/filesystems 文件中列出的所有文件系统的限额。如果 quota 命令以非零状态退出,一个或多个文件系统超过限额。 

    quota 是一个Linux命令
    用途
    显示磁盘使用情况和限额。
    语法
    quota [ -u [ User ] ] [ -g [ Group ] ] [ -v | -q ]
    描述
    root 用户可以使用带有可选 User 参数的 -u 标志查看其它用户的限制。没有 root 用户权限的用户可以通过使用带有可选 Group 参数的 -g 标志来查看它们所属的组的限制。
    注:
    如果某个特定用户在对他有限额的文件系统上没有文件,该命令为那个用户显示 quota: none。当用户在文件系统中有文件时,显示用户的实际限额。
    标志
    -g 显示用户组的限额。
    -u 显示用户限额。该标志是缺省选项。
    -v 显示没有已分配存储器的文件系统上的限额。
    -q 打印扼要消息,只包含关于使用超过限额的文件系统的信息。
    注:
    -q 标志优先于 -v 标志。
    安全性
    访问控制:该命令由 root 用户和 bin 组拥有。
    特权控制:该程序是 setuid 为了允许非特权用户查看个人限额。
    示例
    1. 要显示用户 keith 的限额,请输入:
    quota
    系统显示下列信息:
    User quotas for user keith (uid 502):
    Filesystem blocks quota limit grace Files quota limit grace
    /u 20 55 60 20 60 65
    2. 要作为 root 用户显示用户 davec 的限额,请输入:
    quota -u davec
    系统显示下列信息:
    User quotas for user davec (uid 2702):
    Filesystem blocks quota limit grace files quota limit grace
    /u 48 50 60 7 60 60
    文件
    quota.user 指定用户限额。
    quota.group 指定组限额。
    /etc/filesystems 包含文件系统名称和位置。

    https://blog.csdn.net/tete2csdn/article/details/77481806

    数据库中

    一、解决问题:

    解决表空间很大,总显示空间不足的问题
    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;

  • 相关阅读:
    [转][Navicat for MySQL系列]Navicat如何使用(二)
    [转]Syntax error on token "Invalid Character", delete this token 的解决
    [转] valuestack,stackContext,ActionContext.之间的关系
    [转]jquery后代和子元素的区别
    python中模块、包、库的区别和使用
    python函数对象
    list深拷贝和浅拷贝
    json中load和loads区别
    变量作用域
    正则里的.*和.*?区别
  • 原文地址:https://www.cnblogs.com/klb561/p/10963595.html
Copyright © 2011-2022 走看看