Oracle入门(七A)之表空间配额(quota)
轉(zhuǎn)載自?oracle表空間配額(quota)
一、quota相關(guān)視圖
1)dba_ts_quotas(查看所有用戶的表空間配額)
BYTES字段表示用戶已經(jīng)使用的空間;MAX_BYTES如果為-1表示沒(méi)有限制,其他值表示限制配額
--只有用alter?user?user_name?quota?on?tablespace_name;命令顯示的調(diào)整過(guò)用戶的空間配額,該視圖中才會(huì)有記錄,否則該視圖沒(méi)有記錄
--如果該視圖沒(méi)有信息,我們可以通過(guò)user_ts_quotas視圖來(lái)了解用戶的表空間限額信息
2)?user_ts_quotas(查看當(dāng)前用戶表空間配額)
--注意可能有時(shí)我們查詢?cè)撘晥D,用戶在某個(gè)表空間的配額為0,但是我們依然可以使用該表空間,那么說(shuō)明用戶被賦予了UNLIMITED?TABLESPACE。
--SQL>?select?*from?user_sys_privs;查看用戶是否具有UNLIMITED?TABLESPACE權(quán)限
二、resource角色和quota
注意resource角色被賦予用戶時(shí),用戶就自動(dòng)被賦予了UNLIMITED?TABLESPACE權(quán)限(雖然resource中并不包含該權(quán)限)如果我們把resource角色從用戶收回,那么UNLIMITED?TABLESPACE權(quán)限也會(huì)自動(dòng)收回
三、配額管理
1)建用戶時(shí)指定配額
SQL>?create?user?java?identified?by?oracle?default?tablespace?users?temporary?tablespace?temp?quota?100m?on?users?quota?100m?on?system;
--注意temp表空間不支持表空間配額
2)更改用戶表空間配額
grant?unlimited?tablespace?to?java;--不對(duì)用戶作配額限制
alter?user?java?quota?unlimited?on?users;--對(duì)指定表空間不做限額
alter?user?java?quota?1000m?on?users;--指定用戶在某表空間限制
revoke?unlimited?tablespace?from?java;--收回用戶的unlimited?tablespace權(quán)限
alter?user?java?quota?0?on?users;--針對(duì)alter?…?quota?unlimited?…;
--如果用戶已經(jīng)被授予了unlimited?tablespace權(quán)限的話,那么alter?user?java?quota?0?on?users;限制是不起作用的
四、表空間已刪除,關(guān)于表空間配額信息還存在
表空間被刪除以后但是關(guān)于該表空間的配額信息在視圖中依然能夠查到
這個(gè)是正常的,因?yàn)楸砜臻g被drop后,ts$和tsq$中的信息并沒(méi)有被清理,如果你重建一個(gè)同名的tablespace,并限制quota?為0,tsq$中的記錄就被刪除了.
從10gR2開(kāi)始,你可以使用
drop?tablespace?mytsincluding?contents?and?datafiles?drop?quota;
這樣的語(yǔ)法,一并將quota信息刪除,默認(rèn)是keep?quota.
trace的時(shí)候你會(huì)發(fā)現(xiàn),如果加上drop?quota這樣的options?clause,那么就會(huì)有
select?user#?from?tsq$?wherets#=:1
delete?from?tsq$?where?ts#=:1and?user#=:2
...
這樣的動(dòng)作.而dba_ts_quotas視圖的定義正是使用了tsq$中的信息
create?or?replace?viewsys.dba_ts_quotas
(tablespace_name,?username,?bytes,?max_bytes,?blocks,?max_blocks,?dropped)
as
select?ts.name,?u.name,?nvl(spc.bytes,?0),
???????decode(q.maxblocks,?-1,?-1,?q.maxblocks?*ts.blocksize),
???????nvl(spc.blocks,?0),?q.maxblocks,?decode(ts.online$,3,?'YES',?'NO')
from?sys.tsq$?q,?sys.ts$?ts,?sys.tbs_space_usagespc,?sys.user$?u
where?q.ts#?=?ts.ts#
??and?q.user#?=?u.user#
??and?spc.tsn??=?ts.ts#
??and?spc.owner?=?u.name
??and?q.maxblocks?!=?0
總結(jié)
以上是生活随笔為你收集整理的Oracle入门(七A)之表空间配额(quota)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: windows系统如何查看计算机的基本信
- 下一篇: nolo电脑配置要求?