起因是前两天遇到一个使用人员的反馈,他提到了在数据库里面建表报空间无法扩展的错误,经过查看是表空间还剩余300多M的剩余表空间,同时系统比较繁忙可能存在查询、排序、子查询等操作,因为造成无法完成创建表的操作,另外使用人员又反应在user_ts_quotas系统视图当中发现了自己使用的帐户的默认表空间也在里面,问是不是对表空间使用有限制?
因为我查看了该帐户具有resource的角色,因为之前对这个视图还不慎了解,于是想是不是赋予了resource的角色后又被管理员收回了unlimited tablespace的权限,没怎么想就重新给赋予了一次resource角色。但是想了想又不对,因为这有可能会改变之前的权限设定,于是跟局方说明了情况,局方让我立刻恢复用户原来的权限,这个时候我也有点思路不清晰,之前该帐户具有那些表空间的使用权限呢,这该怎么查?想想还是先从user_ts_quotas着手,于是先从oracle的文档里面进行查找,找到了字段解释
SQL> desc user_ts_quotas
Name
-----------------------
TABLESPACE_NAME => 表空间名称
BYTES => 用户在该表空间使用的大小
MAX_BYTES => 对用户在该表空间使用的大小限制
BLOCKS => 用户在该表空间使用的数据块数量
MAX_BLOCKS => 对用户在该表空间使用的数据块数量限制
DROPPED => 无论表空间是否被删除
同样的,另外一个视图DBA_TS_QUOTAS多了一个username字段,但是这里需要说明的是这两个视图查询出来的结果并不一致,因为我只有dba权限,而没有该试用人员反应的帐户的访问权限,因此给我造成了困惑,因为我通过dba_ts_quotas并没有看到该用户的信息,在本机上做如下测试:
SQL> select tablespace_name,bytes,max_bytes,blocks,max_blocks,dropped from dba_ts_quotas where username='SCOTT';
no rows selected
SQL> conn scott/tiger
SQL> select tablespace_name,bytes,max_bytes,blocks,max_blocks,dropped from user_ts_quotas;
no rows selected
同样也没有看到,这表明是SCOTT这个用户并没有进行表空间配额的限制,由于
TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS DRO
------------------------------ ---------- ---------- ---------- ---------- ---
TEST 0 0 0 0 YES
SYSTEM 0 0 0 0 NO
USERS 20119552 0 2456 0 NO
EXAMPLE 0 0 0 0 NO
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12216142/viewspace-704794/
,如需转载,请注明出处,否则将追究法律责任。