作者:UB旉Q?003-08-14 21:06:59[修改][回复][删除]
ORACLE数据库对象与用户理
一?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">ORACLE数据库的模式对象的管理与l护
本节的主要内Ҏ关于ORACLE数据库的模式对象的管理与l护Q这些模式对象包括:表空间、表、视图、烦引、序列、同义词、聚集和完整性约束。对于每一个模式对象,首先描述了它的定义,说明了它的功能,最后以ZSQL语言的实例说明如何对它们q行理于维护?
1.1表I间
׃表空间是包含q些模式对象的逻辑I间Q有必要先对它进行维护?
创徏表空间
SQL>CREATETABLESPACEjxzy
>DATAFILE?usr/oracle/dbs/jxzy.dbf?
>ONLINE;
修改表空间
SQL>ALTERTABLESPACEjxzyOFFLINENORMAL;
SQL>ALTERTABLESPACEjxzy
>RENAMEDATAFILE?usr/oracle/dbs/jxzy.dbf?
>TO?usr/oracle/dbs/jxzynew.dbf?
>ONLINE
SQL>CREATETABLESPACEjxzyONLINE
删除表空间
SQL>DROPTABLESPACEjxzy
>INCLUDINGCONTENTS
1.?表l护
表是数据库中数据存储的基本单位,一个表包含若干列,每列h列名、类型、长度等?
表的建立?
SQL>CREATETABLEjxzy.switch(
>OFFICE_NUMNUMBER(3,0)NOTNULL,
>SWITCH_CODENUMBER(8,0)NOTNULL,
>SWITCH_NAMEVARCHAR2(20)NOTNULL);
表的修改?
SQL>ALTERTABLEjxzy.switch
>ADD?DESCVARCHAR2(30));
表的删除?
SQL>DROPTABLEjxzy.switch
>CASCADECONSTRAINTS
//删除引用该表的其它表的完整性约?
1.?视囄?
视图是由一个或若干产生的数据集合,但视图不占存储空间。徏立视囑֏以保护数据安全(仅让用户查询修改可以看见的一些行列)、简化查询操作、保护数据的独立性?
视图的徏立
SQL>CREATEVIEWjxzy.pole_well_viewAS
>(SELECTpole_path_numASpath,
poleASdevice_numFROMpole
>UNION
>SELECTpipe_path_numASpath,
>wellASdevice_numFROMwell);
视图的替换
SQL>REPLACEVIEWjxzy.pole_well_viewAS
>(SELECTpole_path_numASpath,
poleASsupport_deviceFROMpole?
>UNION
>SELECTpipe_path_numASpath,
wellASsupport_deviceFROMwell);?
视图的删除
SQL>DROPVIEWjxzy.pole_well_view;
1.4序列维?
序列是由序列发生器生成的唯一的整数?
序列的徏立
SQL>CREATESEQUENCEjxzy.sequence_cable
>STARTWITH?
>INCREMENTBY?
>NO_MAXVALUE;
建立了一个序列,jxzy.sequence_cable.currvalq回当前|jxzy.sequence_cable.nextval返回当前值加1后的新?
序列的修Ԏ
SQL>ALTERSEQUENCEjxzy.sequence_cable
>STARTWITH??/L不能修改Q若修改Q应先删除,然后重新定义
>INCTEMENTBY?
>MAXVALUE?000;
序列的删除
SQL>DROPSEQUENCEjxzy.sequence_cable
1.?烦引维?
索引是与表相关的一U结构,它是Z提高数据的检索速度而徏立的。因此,Z提高表上的烦引速度Q可在表上徏立一个或多个索引Q一个烦引可建立在一个或几个列上?
Ҏ询型的表Q徏立多个烦引会大大提高查询速度Q对更新型的表,如果索引q多Q会增大开销?
索引分唯一索引和非唯一索引
索引的徏立
SQL>CREATEINDEXjxzy.idx_switch
>ONswitch(switch_name)
>TABLESPACEjxzy;
索引的修Ԏ
SQL>ALTERINDEXjxzy.idx_switch
>ONswitch(office_num,switch_name)
>TABLESPACEjxzy;
索引的删除
SQL>DROPINDEXjxzy.idx_switch;
1.?完整性约束管?
数据库数据的完整性指数据的正性和相容性。数据完整型查防止数据库中存在不W合语义的数据?
完整性约束是对表的列定义一l规则说明方法?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">ORACLE提供如下的完整性约?
a.NOTNULL非I?
b.UNIQUE唯一关键?
c.PRIMATYKEY主键一个表只能有一个,非空
d.FOREIGAKEY外?
e.CHECK表的每一行对指定条g必须是true或未知(对于I|
例如Q?
某列定义非空U束?
SQL>ALTERTABLEoffice_organization
>MODIFY(descVARCHAR2(20)
>CONSTRAINTnn_descNOTNULL)
某列定义唯一关键字
SQL>ALTERTABLEoffice_organization
>MODIFY(office_nameVATCHAR2(20)
>CONSTRAINTuq_officenameUNIQUE)
定义主键U束Q主键要求非I
SQL>CREATETABLEswitch(switch_codeNUMBER(8)
>CONSTRAINTpk_switchcodePRIMARYKEY,)
使主键约束无效
SQL>ALTERTABLEswitchDISABLEPRIMARYKEY
定义外键?
SQL>CREATETABLEPOLE(pole_codeNUMBER(8),
>office_numnumber(3)
>CONSTRAINTfk_officenum
>REFERENCESoffice_organization(office_num)
>ONDELETECASCADE);
定义查
SQL>CREATETABLEoffice_organization(
>office_numNUMBER(3),
>CONSTRAINTcheck_officenum
>CHECK?office_numBETWEEN?0AND?9);
二?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">ORACLE数据库用户与权限理
ORACLE是多用户pȝQ它允许许多用户׃npȝ资源。ؓ了保证数据库pȝ的安全,数据库管理系l配|了良好的安全机制?
2.??b style="COLOR: black; BACKGROUND-COLOR: #ffff66">ORACLE数据库安全策?
建立pȝU的安全保证?
pȝU特权是通过授予用户pȝU的权利来实玎ͼpȝU的权利Q系l特权)包括Q徏立表I间、徏立用戗修改用L权利、删除用L。系l特权可授予用户Q也可以随时回收?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">ORACLEpȝҎ?0多种?
建立对象U的安全保证?
对象U特权通过授予用户Ҏ据库中特定的表、视图、序列等q行操作Q查询、增、删改)的权利来实现?
建立用户U的安全保证?
用户U安全保障通过用户口o和角色机Ӟ一l权利)来实现。引入角色机制的目的是简化对用户的授权与理。做法是把用h照其功能分组Qؓ每个用户建立角色Q然后把角色分配l用Ph同样角色的用h相同的特权?
2.2用L?
ORACLE用户理的内容主要包括用L建立、修改和删除
用户的徏立
SQL>CREATEUSERjxzy
>IDENTIFIEDBYjxzy_password
>DEFAULTTABLESPACEsystem
>QUATA?MONsystem;?/供用户用的最大空间限?
用户的修Ԏ
SQL>CREATEUSERjxzy
>IDENTIFIEDBYjxzy_pw
>QUATA?0MONsystem;
删除用户及其所建对象
SQL>DROPUSERjxzyCASCADE;?/同时删除其徏立的实体
2.3pȝҎ理与控?
ORACLE提供了80多种pȝҎQ其中每一个系l特权允许用h行一个或一cL据库操作?
授予pȝҎ?
SQL>GRANTCREATEUSER,ALTERUSER,DROPUSER
>TOjxzy_new
>WITHADMINOPTION;
回收pȝҎ?
SQL>REVOKECREATEUSER,ALTERUSER,DROPUSER
>FROMjxzy_new
//但没有联回收功?
昄已被授予的系l特权(某用LpȝU特权)?
SQL>SELECT*FROMsys.dba_sys_privs
2.4对象特权管理与控制
ORACLE对象Ҏ指用户在指定的表上进行特D操作的权利。这些特D操作包括增、删、改、查看、执行(存储q程Q、引用(其它表字D作为外键)、烦引等?
授予对象Ҏ?
SQL>GRANTSELECT,INSERT(office_num,office_name),
>UPDATE(desc)ONoffice_organization
>TOnew_adminidtrator
>WITHGRANTOPTION;
//U联授权
SQL>GRANTALLONoffice_organization
>TOnew_administrator
回收对象Ҏ?
SQL>REVOKEUPDATEONoffice_orgaization
>FROMnew_administrator
//有联回收功?
SQL>REVOKEALLONoffice_organization
>FROMnew_administrator
昄已被授予的全部对象特权
SQL>SELECT*FROMsys.dba_tab_privs
2.5角色的理
ORACLE的角色是命名的相关特权组Q包括系l特权与对象ҎQ,ORACLE用它来简化特权管理,可把它授予用h其它角色?
ORACLE数据库系l预先定义了CONNECT、RESOURCE、DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE五个角色。CONNECTh创徏表、视图、序列等ҎQRESOURCEh创徏q程、触发器、表、序列等Ҏ、DBAh全部pȝҎQEXP_FULL_DATABASE、IMP_FULL_DATABASEh卸出与装入数据库的特权?
通过查询sys.dba_sys_privs可以了解每种角色拥有的权利?
授予用户角色?
SQL>GRANTDBATOnew_administractor
>WITHGRANTOPTION;