您的位置:首页 > 数据库 > Oracle

Oracle 用户 对 表空间 配额(quota ) 说明

2011-09-28 11:52 316 查看
一.官网的说明



Oracle官网对quota的定义如下:

Alimitonaresource,suchasalimitontheamountofdatabasestorageusedbyadatabaseuser.Adatabaseadministratorcansettablespacequotas
foreachOracleDatabaseusername.



有关OracleQuota这块,只在Oracle的安全管理这块搜到了一些内容。

ManagingSecurityforOracleDatabaseUsers

http://download.oracle.com/docs/cd/E11882_01/network.112/e16543/users.htm#DBSEG10220





1.1AssigningaTablespaceQuotafortheUser

Youcanassigneachuseratablespacequotaforanytablespace(exceptatemporarytablespace).Assigningaquotaaccomplishesthefollowing:

(1)Userswithprivilegestocreatecertaintypesofobjectscancreatethoseobjectsinthespecifiedtablespace.

(2)OracleDatabaselimitstheamountofspacethatcanbeallocatedforstorageofauser'sobjectswithinthespecifiedtablespacetotheamountofthequota.



Bydefault,auserhasnoquotaonanytablespaceinthedatabase.Iftheuserhastheprivilegetocreateaschemaobject,thenyoumustassignaquotatoallowtheusertocreateobjects.Ataminimum,assignusersaquotaforthedefaulttablespace,and
additionalquotasforothertablespacesinwhichtheycancreateobjects.



ThefollowingCREATEUSERstatementassignsthefollowingquotasforthetest_tsanddata_tstablespaces:



CREATEUSERjward

IDENTIFIEDBYpassword

DEFAULTTABLESPACEdata_ts

QUOTA100MONtest_ts

QUOTA500KONdata_ts

TEMPORARYTABLESPACEtemp_ts

PROFILEclerk;



--在创建用户的时候,就指定用户在特定表空间上的配额



Youcanassignausereitherindividualquotasforaspecificamountofdiskspaceineachtablespaceoranunlimitedamountofdiskspaceinalltablespaces.Specificquotaspreventauser'sobjectsfromusingtoomuchspaceinthedatabase.

--配额的指定可以禁止用户的对象使用过多的表空间



Youcanassignquotastoausertablespacewhenyoucreatetheuser,oraddorchangequotaslater.(YoucanfindexistinguserquotasbyqueryingtheUSER_TS_QUOTASview.)。

Ifanewquotaislessthantheoldone,thenthefollowingconditionsremaintrue:

(1)Ifauserhasalreadyexceededanewtablespacequota,thentheobjectsofauserinthetablespacecannotbeallocatedmorespaceuntilthecombinedspaceoftheseobjectsislessthanthenewquota.

(2)Ifauserhasnotexceededanewtablespacequota,orifthespaceusedbytheobjectsoftheuserinthetablespacefallsunderanewtablespacequota,thentheuser'sobjectscanbeallocatedspaceuptothenewquota.



1.2RestrictingtheQuotaLimitsforUserObjectsinaTablespace

YoucanrestrictthequotalimitsforuserobjectsinatablespacebyusingtheALTERUSERSQLstatementtochangethecurrentquotaoftheusertozero.

Afteraquotaofzeroisassigned,theobjectsoftheuserinthetablespaceremain,andtheusercanstillcreatenewobjects,buttheexistingobjectswillnotbeallocatedanynewspace.

Forexample,youcouldnotinsertdataintooneofthisuser'sexitingtables.TheoperationwillfailwithanORA-1536spacequotaexceededfortableserror.



1.3GrantingUserstheUNLIMITEDTABLESPACESystemPrivilege

Topermitausertouseanunlimitedamountofanytablespaceinthedatabase,granttheusertheUNLIMITEDTABLESPACEsystemprivilege.Thisoverridesallexplicittablespacequotasfortheuser.Ifyoulaterrevoketheprivilege,thenyoumust
explicitlygrantquotastoindividualtablespaces.Youcangrantthisprivilegeonlytousers,nottoroles.

BeforegrantingtheUNLIMITEDTABLESPACEsystemprivilege,youmustconsidertheconsequencesofdoingso.



Advantage:

Youcangrantauserunlimitedaccesstoalltablespacesofadatabasewithonestatement.



Disadvantages:

(1)Theprivilegeoverridesallexplicittablespacequotasfortheuser.

(2)YoucannotselectivelyrevoketablespaceaccessfromauserwiththeUNLIMITEDTABLESPACEprivilege.Youcangrantselectiveorrestrictedaccessonlyafterrevokingtheprivilege.





1.4ListingAllTablespaceQuotas

UsetheDBA_TS_QUOTASviewtolistalltablespacequotasspecificallyassignedtoeachuser.Forexample:



SELECT*FROMDBA_TS_QUOTAS;


TABLESPACEUSERNAMEBYTESMAX_BYTESBLOCKSMAX_BLOCKS

------------------------------------------------------

USERSJFEE05120000250

USERSDCRANNEY0-10-1



Whenspecificquotasareassigned,theexactnumberisindicatedintheMAX_BYTEScolumn.Thisnumberisalwaysamultipleofthedatabaseblocksize,soifyouspecifyatablespacequotathatisnotamultipleofthedatabaseblocksize,then
itisroundedupaccordingly.Unlimitedquotasareindicatedby-1.





二.Quota说明

配额大小指的是用户指定使用表空间的的大小。在1.1节里提到,默认情况下,用户对所有表空间都是没有配额的,即不受空间的限制。查看几个用户的创建脚本来验证一下:





CREATEUSERSYSTEM
IDENTIFIEDBY<password>
DEFAULTTABLESPACESYSTEM
TEMPORARYTABLESPACETEMP
PROFILEDEFAULT
ACCOUNTUNLOCK;
--2RolesforSYSTEM
GRANTAQ_ADMINISTRATOR_ROLETOSYSTEMWITHADMINOPTION;
GRANTDBATOSYSTEMWITHADMINOPTION;
ALTERUSERSYSTEMDEFAULTROLEALL;
--5SystemPrivilegesforSYSTEM
GRANTGLOBALQUERYREWRITETOSYSTEM;
GRANTCREATEMATERIALIZEDVIEWTOSYSTEM;
GRANTCREATETABLETOSYSTEM;
GRANTUNLIMITEDTABLESPACETOSYSTEMWITHADMINOPTION;
GRANTSELECTANYTABLETOSYSTEM;





CREATEUSERD***E
IDENTIFIEDBY<password>
DEFAULTTABLESPACEUSERS
TEMPORARYTABLESPACETEMP
PROFILEDEFAULT
ACCOUNTUNLOCK;
--2RolesforD***E
GRANTCONNECTTOD***E;
GRANTRESOURCETOD***E;
ALTERUSERD***EDEFAULTROLEALL;
--1SystemPrivilegeforD***E
GRANTUNLIMITEDTABLESPACETOD***E;


从这2个脚本来看,默认情况下,都会对用户赋unlimitedtablespace的权限。这是是在创建的时候指定的,当我们的用户创建好之后,我们也可以修改用户的配额。



有关用户的配额的操作说明

1.创建用户时,指定限额



SQL>conn/assysdba;

Connected.

SQL>createuseranqingidentifiedbyanqingdefaulttablespaceuserstemporarytablespacetempquota10Monusers;

Usercreated.



查询用户配额的信息:

SQL>selecttablespace_name,username,max_bytesfromDBA_TS_QUOTASwhereusername='ANQING';



TABLESPACE_NAMEUSERNAMEMAX_BYTES

--------------------------------------------------

USERSANQING10485760





2.更改用户的表空间限额:



不对用户做表空间限额控制:



SQL>grantunlimitedtablespacetoanqing;

Grantsucceeded.



这种方式是全局性的.即修改用户多所有表空间的配额。



如果我们想改某个具体的,即针对用户的某个特定的表空间,可以使用如下SQL:



SQL>alteruseranqingquotaunlimitedonusers;

Useraltered.



查看配额:

SQL>selecttablespace_name,username,max_bytesfromDBA_TS_QUOTASwhereusername='ANQING';



TABLESPACE_NAMEUSERNAMEMAX_BYTES

--------------------------------------------------

USERSANQING-1



这时候max_bytes为-1,即不受限制。





3.回收用户对表空间的配额:

同样两种方式,



全局:

SQL>revokeunlimitedtablespacefromanqing;

Revokesucceeded.



在查看配额,已经没有了相关信息:

SQL>selecttablespace_name,username,max_bytesfromDBA_TS_QUOTASwhereusername='ANQING';

norowsselected





针对某个特定的表空间:

SQL>alteruseranqingquota0onusers;

Useraltered.











-------------------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: