文章詳情頁
ORACLE數(shù)據(jù)庫對(duì)象與用戶管理
瀏覽:4日期:2023-11-12 10:44:25
Oracle數(shù)據(jù)庫對(duì)象與用戶治理 一、ORACLE數(shù)據(jù)庫的模式對(duì)象的治理與維護(hù) 本節(jié)的主要內(nèi)容是關(guān)于ORACLE數(shù)據(jù)庫的模式對(duì)象的治理與維護(hù),這些模式對(duì)象包括:表空間、表、視圖、索引、序列、同義詞、聚集和完整性約束。對(duì)于每一個(gè)模式對(duì)象,首先描述了它的定義,說明了它的功能,最后以基于SQL語言的實(shí)例說明如何對(duì)它們進(jìn)行治理于維護(hù)。1.1 表空間由于表空間是包含這些模式對(duì)象的邏輯空間,有必要先對(duì)它進(jìn)行維護(hù)。創(chuàng)建表空間SQL>CREATE TABLESPACE jxzy>DATAFILE ‘/usr/oracle/dbs/jxzy.dbf’>ONLINE;修改表空間SQL>ALTER TABLESPACE jxzy OFFLINE NORMAL;SQL>ALTER TABLESPACE jxzy>RENAME DATAFILE ‘/usr/oracle/dbs/jxzy.dbf’>TO ‘/usr/oracle/dbs/jxzynew.dbf’>ONLINESQL>CREATE TABLESPACE jxzy ONLINE刪除表空間SQL>DROP TABLESPACE jxzy>INCLUDING CONTENTS1. 2 表維護(hù)表是數(shù)據(jù)庫中數(shù)據(jù)存儲(chǔ)的基本單位,一個(gè)表包含若干列,每列具有列名、類型、長度等。表的建立SQL>CREATE TABLE jxzy.switch(>Office_NUM NUMBER(3,0) NOT NULL,>SWITCH_CODE NUMBER(8,0) NOT NULL,>SWITCH_NAME VARCHAR2(20) NOT NULL);表的修改SQL>ALTER TABLE jxzy.switch>ADD (DESC VARCHAR2(30));表的刪除SQL>DROP TABLE jxzy.switch>CASCADE CONSTRAINTS//刪除引用該表的其它表的完整性約束1. 3 視圖維護(hù)視圖是由一個(gè)或若干基表產(chǎn)生的數(shù)據(jù)集合,但視圖不占存儲(chǔ)空間。建立視圖可以保護(hù)數(shù)據(jù)安全(僅讓用戶查詢修改可以看見的一些行列)、簡化查詢操作、保護(hù)數(shù)據(jù)的獨(dú)立性。視圖的建立SQL>CREATE VIEW jxzy.pole_well_view AS>(SELECT pole_path_num AS path,pole AS device_num FROM pole>UNION>SELECT pipe_path_num AS path,> well AS device_num FROM well);視圖的替換SQL>REPLACE VIEW jxzy.pole_well_view AS>(SELECT pole_path_num AS path,pole AS support_device FROM pole>UNION>SELECT pipe_path_num AS path,well AS support_device FROM well);視圖的刪除SQL>DROP VIEW jxzy.pole_well_view;1.4 序列維護(hù)序列是由序列發(fā)生器生成的唯一的整數(shù)。序列的建立SQL>CREATE SEQUENCE jxzy.sequence_cable>START WITH 1>INCREMENT BY 1>NO_MAXVALUE;建立了一個(gè)序列,jxzy.sequence_cable.currval返回當(dāng)前值,jxzy.sequence_cable.nextval 返回當(dāng)前值加1后的新值序列的修改SQL>ALTER SEQUENCE jxzy.sequence_cable>START WITH 1 //起點(diǎn)不能修改,若修改,應(yīng)先刪除,然后重新定義>INCTEMENT BY 2>MAXVALUE 1000;序列的刪除SQL>DROP SEQUENCE jxzy.sequence_cable1. 5 索引維護(hù)索引是與表相關(guān)的一種結(jié)構(gòu),它是為了提高數(shù)據(jù)的檢索速度而建立的。因此,為了提高表上的索引速度,可在表上建立一個(gè)或多個(gè)索引,一個(gè)索引可建立在一個(gè)或幾個(gè)列上。對(duì)查詢型的表,建立多個(gè)索引會(huì)大大提高查詢速度,對(duì)更新型的表,假如索引過多,會(huì)增大開銷。索引分唯一索引和非唯一索引索引的建立SQL>CREATE INDEX jxzy.idx_switch >ON switch(switch_name)>TABLESPACE jxzy;索引的修改SQL>ALTER INDEX jxzy.idx_switch>ON switch(office_num,switch_name)>TABLESPACE jxzy;索引的刪除SQL>DROP INDEX jxzy.idx_switch;1. 6 完整性約束治理數(shù)據(jù)庫數(shù)據(jù)的完整性指數(shù)據(jù)的正確性和相容性。數(shù)據(jù)完整型檢查防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù)。完整性約束是對(duì)表的列定義一組規(guī)則說明方法。ORACLE提供如下的完整性約束.a. NOT NULL 非空b. UNIQUE 唯一要害字c. PRIMATY KEY 主鍵一個(gè)表只能有一個(gè),非空d. FOREIGA KEY 外鍵e.CHECK 表的每一行對(duì)指定條件必須是true或未知(對(duì)于空值)例如:某列定義非空約束SQL>ALTER TABLE office_organization>MODIFY(desc VARCHAR2(20)>CONSTRAINT nn_desc NOT NULL)某列定義唯一要害字SQL>ALTER TABLE office_organization>MODIFY(office_name VATCHAR2(20)>CONSTRAINT uq_officename UNIQUE)定義主鍵約束,主鍵要求非空SQL>CREATE TABLE switch(switch_code NUMBER(8)>CONSTRAINT pk_switchcode PRIMARY KEY,)使主鍵約束無效SQL>ALTER TABLE switch DISABLE PRIMARY KEY定義外鍵SQL>CREATE TABLE POLE(pole_code NUMBER(8),>office_num number(3)>CONSTRAINT fk_officenum>REFERENCES office_organization(office_num)>ON DELETE CASCADE);定義檢查SQL>CREATE TABLE office_organization(>office_num NUMBER(3),>CONSTRAINT check_officenum>CHECK (office_num BETWEEN 10 AND 99);二、ORACLE數(shù)據(jù)庫用戶與權(quán)限治理ORACLE是多用戶系統(tǒng),它答應(yīng)許多用戶共享系統(tǒng)資源。為了保證數(shù)據(jù)庫系統(tǒng)的安全,數(shù)據(jù)庫治理系統(tǒng)配置了良好的安全機(jī)制。2. 1 ORACLE數(shù)據(jù)庫安全策略建立系統(tǒng)級(jí)的安全保證系統(tǒng)級(jí)特權(quán)是通過授予用戶系統(tǒng)級(jí)的權(quán)利來實(shí)現(xiàn),系統(tǒng)級(jí)的權(quán)利(系統(tǒng)特權(quán))包括:建立表空間、建立用戶、修改用戶的權(quán)利、刪除用戶等。系統(tǒng)特權(quán)可授予用戶,也可以隨時(shí)回收。ORACLE系統(tǒng)特權(quán)有80多種。建立對(duì)象級(jí)的安全保證對(duì)象級(jí)特權(quán)通過授予用戶對(duì)數(shù)據(jù)庫中特定的表、視圖、序列等進(jìn)行操作(查詢、增、刪改)的權(quán)利來實(shí)現(xiàn)。建立用戶級(jí)的安全保證用戶級(jí)安全保障通過用戶口令和角色機(jī)制(一組權(quán)利)來實(shí)現(xiàn)。引入角色機(jī)制的目的是簡化對(duì)用戶的授權(quán)與治理。做法是把用戶按照其功能分組,為每個(gè)用戶建立角色,然后把角色分配給用戶,具有同樣角色的用戶有相同的特權(quán)。2.2 用戶治理ORACLE用戶治理的內(nèi)容主要包括用戶的建立、修改和刪除用戶的建立SQL>CREATE USER jxzy>IDENTIFIED BY jxzy_passWord>DEFAULT TABLESPACE system>QUATA 5M ON system; //供用戶使用的最大空間限額用戶的修改SQL>CREATE USER jxzy>IDENTIFIED BY jxzy_pw>QUATA 10M ON system;刪除用戶及其所建對(duì)象SQL>DROP USER jxzy CASCADE; //同時(shí)刪除其建立的實(shí)體2.3系統(tǒng)特權(quán)治理與控制ORACLE 提供了80多種系統(tǒng)特權(quán),其中每一個(gè)系統(tǒng)特權(quán)答應(yīng)用戶執(zhí)行一個(gè)或一類數(shù)據(jù)庫操作。授予系統(tǒng)特權(quán)SQL>GRANT CREATE USER,ALTER USER,DROP USER>TO jxzy_new>WITH ADMIN OPTION;回收系統(tǒng)特權(quán)SQL>REVOKE CREATE USER,ALTER USER,DROP USER>FROM jxzy_new//但沒有級(jí)聯(lián)回收功能顯示已被授予的系統(tǒng)特權(quán)(某用戶的系統(tǒng)級(jí)特權(quán))SQL>SELECT*FROM sys.dba_sys_privs2.4 對(duì)象特權(quán)治理與控制ORACLE對(duì)象特權(quán)指用戶在指定的表上進(jìn)行非凡操作的權(quán)利。這些非凡操作包括增、刪、改、查看、執(zhí)行(存儲(chǔ)過程)、引用(其它表字段作為外鍵)、索引等。授予對(duì)象特權(quán)SQL>GRANT SELECT,INSERT(office_num,office_name),>UPDATE(desc)ON office_organization>TO new_adminidtrator>WITH GRANT OPTION; //級(jí)聯(lián)授權(quán)SQL>GRANT ALL ON office_organization>TO new_administrator回收對(duì)象特權(quán)SQL>REVOKE UPDATE ON office_orgaization>FROM new_administrator//有級(jí)聯(lián)回收功能SQL>REVOKE ALL ON office_organization>FROM new_administrator顯示已被授予的全部對(duì)象特權(quán)SQL>SELECT*FROM sys.dba_tab_privs2.5 角色的治理ORACLE的角色是命名的相關(guān)特權(quán)組(包括系統(tǒng)特權(quán)與對(duì)象特權(quán)),ORACLE用它來簡化特權(quán)治理,可把它授予用戶或其它角色。ORACLE數(shù)據(jù)庫系統(tǒng)預(yù)先定義了CONNECT 、RESOURCE、 DBA、 EXP_FULL_DATABASE、 IMP_FULL_DATABASE五個(gè)角色。CONNECT具有創(chuàng)建表、視圖、序列等特權(quán);RESOURCE具有創(chuàng)建過程、觸發(fā)器、表、序列等特權(quán)、DBA具有全部系統(tǒng)特權(quán);EXP_FULL_DATABASE、 IMP_FULL_DATABASE具有卸出與裝入數(shù)據(jù)庫的特權(quán)。通過查詢sys.dba_sys_privs可以了解每種角色擁有的權(quán)利。授予用戶角色SQL>GRANT DBA TO new_administractor>WITH GRANT OPTION;
標(biāo)簽:
Oracle
數(shù)據(jù)庫
排行榜
