前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试547】在Oracle中,什么是用户的表空间配额(User tablespace Quota)?

【DB笔试面试547】在Oracle中,什么是用户的表空间配额(User tablespace Quota)?

作者头像
小麦苗DBA宝典
发布2019-09-29 15:22:04
8270
发布2019-09-29 15:22:04
举报

题目部分

在Oracle中,什么是用户的表空间配额(User tablespace Quota)?

答案部分

用户的表空间配额也叫表空间限额,指的是用户可以使用指定表空间的最大大小。控制用户的表空间配额也就等于控制用户所占用的表空间大小。在默认情况下,需要对用户赋予RESOURCE角色,虽然该角色没有UNLIMITED TABLESPACE权限,但是对用户赋予了该角色后,系统将会默认给用户赋予UNLIMITED TABLESPACE的系统权限,因此,新建的用户对所有表空间都是没有配额的,即不受空间的限制。表空间配额可以在创建用户的时候指定,也可以在创建用户后再修改用户的配额。关于表空间配额需要注意以下几点:

① DBA用户是具有UNLIMITED TABLESPACE的权限的,若是回收DBA角色,则会导致UNLIMITED TABLESPACE权限被连带回收,易引起生产事故,所以,在回收DBA角色时需特别注意。

② 当用户使用空间超出限额的时候会报“ORA-01536”和“ORA-01950”的错误。

③ 目标用户必须不能含有UNLIMITED TABLESPACE的系统权限,否则空间配额对用户的设置无效,也就会出现在DBA_TS_QUOTAS中的BYTES大于MAX_BYTES的情况。

常用命令如下所示:

代码语言:javascript
复制
CREATE USER LHR_TS_QUOTAS IDENTIFIED BY LHR DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA 10M ON USERS; --USERS表空间限额10M
GRANT UNLIMITED TABLESPACE TO LHR_TS_QUOTAS;--修改用户LHR_TS_QUOTAS在任何表空间上都无配额限制
ALTER USER LHR_TS_QUOTAS QUOTA UNLIMITED ON USERS;--修改用户LHR_TS_QUOTAS无配额限制
ALTER USER LHR_TS_QUOTAS QUOTA 5M ON USERS;--修改用户在USERS表空间上为5M限额
SELECT TABLESPACE_NAME,USERNAME,MAX_BYTES FROM  DBA_TS_QUOTAS WHERE USERNAME='LHR_TS_QUOTAS';--查询用户的表空间限额
REVOKE UNLIMITED TABLESPACE FROM LHR_TS_QUOTAS;--回收无限制的表空间权限
ALTER USER LHR_TS_QUOTAS QUOTA 0 ON USERS;--执行这条语句后LHR_TS_QUOTAS用户在DBA_TS_QUOTAS视图中就查不到了

测试示例如下所示:

代码语言:javascript
复制
SYS@orclasm > CREATE USER LHR_TS_QUOTAS IDENTIFIED BY LHR DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA 10M ON USERS;

User created.

SYS@orclasm > SELECT TABLESPACE_NAME,USERNAME,MAX_BYTES FROM  DBA_TS_QUOTAS WHERE USERNAME='LHR_TS_QUOTAS';

TABLESPACE_NAME                USERNAME                        MAX_BYTES
------------------------------ ------------------------------ ----------
USERS                          LHR_TS_QUOTAS                    10485760

SYS@orclasm > ALTER USER LHR_TS_QUOTAS QUOTA UNLIMITED ON USERS;

User altered.

SYS@orclasm > SELECT TABLESPACE_NAME,USERNAME,MAX_BYTES FROM  DBA_TS_QUOTAS WHERE USERNAME='LHR_TS_QUOTAS';

TABLESPACE_NAME                USERNAME                        MAX_BYTES
------------------------------ ------------------------------ ----------
USERS                          LHR_TS_QUOTAS                          -1    <--- -1表示没有空间配额限制

SYS@orclasm > ALTER USER LHR_TS_QUOTAS QUOTA 5M ON USERS; 

User altered.

SYS@orclasm > SELECT TABLESPACE_NAME,USERNAME,MAX_BYTES FROM  DBA_TS_QUOTAS WHERE USERNAME='LHR_TS_QUOTAS';

TABLESPACE_NAME                USERNAME                        MAX_BYTES
------------------------------ ------------------------------ ----------
USERS                          LHR_TS_QUOTAS                     5242880

SYS@orclasm > ALTER USER LHR_TS_QUOTAS QUOTA 0 ON USERS;

User altered.

SYS@orclasm > SELECT TABLESPACE_NAME,USERNAME,MAX_BYTES FROM  DBA_TS_QUOTAS WHERE USERNAME='LHR_TS_QUOTAS';

no rows selected

& 说明:

有关表空间配额的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2140868/

本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档