ORACLE資料庫物件與使用者管理(轉)

post0發表於2007-08-14
ORACLE資料庫物件與使用者管理(轉)[@more@]

  一、ORACLE資料庫的模式物件的管理與維護

  

  本節的主要內容是關於ORACLE資料庫的模式物件的管理與維護,這些模式物件包括:表空間、表、檢視、索引、序列、同義詞、聚集和完整性約束。對於每一個模式物件,首先描述了它的定義,說明了它的功能,最後以基於SQL語言的例項說明如何對它們進行管理於維護。

  

  1.1 表空間

  

  由於表空間是包含這些模式物件的邏輯空間,有必要先對它進行維護。

  

  建立表空間

  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’

  

  >ONLINE

  

  SQL>CREATE TABLESPACE jxzy ONLINE

  

  刪除表空間

  SQL>DROP TABLESPACE jxzy

  

  >INCLUDING CONTENTS

  

  1. 2 表維護

  

  表是資料庫中資料儲存的基本單位,一個表包含若干列,每列具有列名、型別、長度等。

  

  表的建立

  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 檢視維護

  

  檢視是由一個或若干基表產生的資料集合,但檢視不佔儲存空間。建立檢視可以保護資料安全(僅讓使用者查詢修改可以看見的一些行列)、簡化查詢操作、保護資料的獨立性。

  

  檢視的建立

  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 序列維護

  

  序列是由序列發生器生成的唯一的整數。

  

  序列的建立

  SQL>CREATE SEQUENCE jxzy.sequence_cable

  

  >START WITH 1

  

  >INCREMENT BY 1

  

  >NO_MAXVALUE;

  

  建立了一個序列,jxzy.sequence_cable.currval返回當前值,jxzy.sequence_cable.nextval 返回當前值加1後的新值

  

  序列的修改

  SQL>ALTER SEQUENCE jxzy.sequence_cable

  

  >START WITH 1 //起點不能修改,若修改,應先刪除,然後重新定義

  

  >INCTEMENT BY 2

  

  >MAXVALUE 1000;

  

  序列的刪除

  SQL>DROP SEQUENCE jxzy.sequence_cable

  

  1. 5 索引維護

  

  索引是與表相關的一種結構,它是為了提高資料的檢索速度而建立的。因此,為了提高表上的索引速度,可在表上建立一個或多個索引,一個索引可建立在一個或幾個列上。

  

  對查詢型的表,建立多個索引會大大提高查詢速度,對更新型的表,如果索引過多,會增大開銷。

  

  索引分唯一索引和非唯一索引

  

  索引的建立

  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 完整性約束管理

  

  資料庫資料的完整性指資料的正確性和相容性。資料完整型檢查防止資料庫中存在不符合語義的資料。

  

  完整性約束是對錶的列定義一組規則說明方法。ORACLE提供如下的完整性約束.

  

  a. NOT NULL 非空

  

  b. UNIQUE 唯一關鍵字

  

  c. PRIMATY KEY 主鍵一個表只能有一個,非空

  

  d. FOREIGA KEY 外來鍵

  

  e.CHECK 表的每一行對指定條件必須是true或未知(對於空值)

  

  例如:

  

  某列定義非空約束

  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資料庫使用者與許可權管理

  

  ORACLE是多使用者系統,它允許許多使用者共享系統資源。為了保證資料庫系統的安全,資料庫管理系統配置了良好的安全機制。

  

  2. 1 ORACLE資料庫安全策略

  

  建立系統級的安全保證

  系統級特權是透過授予使用者系統級的權利來實現,系統級的權利(系統特權)包括:建立表空間、建立使用者、修改使用者的權利、刪除使用者等。系統特權可授予使用者,也可以隨時回收。ORACLE系統特權有80多種。

  

  建立物件級的安全保證

  物件級特權透過授予使用者對資料庫中特定的表、檢視、序列等進行操作(查詢、增、刪改)的權利來實現。

  

  建立使用者級的安全保證

  使用者級安全保障透過使用者口令和角色機制(一組權利)來實現。引入角色機制的目的是簡化對使用者的授權與管理。做法是把使用者按照其功能分組,為每個使用者建立角色,然後把角色分配給使用者,具有同樣角色的使用者有相同的特權。

  

  2.2 使用者管理

  

  ORACLE使用者管理的內容主要包括使用者的建立、修改和刪除

  

  使用者的建立

  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;

  

  刪除使用者及其所建物件

  SQL>DROP USER jxzy CASCADE; //同時刪除其建立的實體

  

  2.3系統特權管理與控制

  

  ORACLE 提供了80多種系統特權,其中每一個系統特權允許使用者執行一個或一類資料庫操作。

  

  授予系統特權

  SQL>GRANT CREATE USER,ALTER USER,DROP USER

  

  >TO jxzy_new

  

  >WITH ADMIN OPTION;

  

  回收系統特權

  SQL>REVOKE CREATE USER,ALTER USER,DROP USER

  

  >FROM jxzy_new

  

  //但沒有級聯回收功能

  

  顯示已被授予的系統特權(某使用者的系統級特權)

  SQL>SELECT*FROM sys.dba_sys_privs

  

  2.4 物件特權管理與控制

  

  ORACLE物件特權指使用者在指定的表上進行特殊操作的權利。這些特殊操作包括增、刪、改、檢視、執行(儲存過程)、引用(其它表欄位作為外來鍵)、索引等。

  

  授予物件特權

  SQL>GRANT SELECT,INSERT(office_num,office_name),

  

  >UPDATE(desc)ON office_organization

  

  >TO new_adminidtrator

  

  >WITH GRANT OPTION;

  

  //級聯授權

  

  SQL>GRANT ALL ON office_organization

  

  >TO new_administrator

  

  回收物件特權

  SQL>REVOKE UPDATE ON office_orgaization

  

  >FROM new_administrator

  

  //有級聯回收功能

  

  SQL>REVOKE ALL ON office_organization

  

  >FROM new_administrator

  

  顯示已被授予的全部物件特權

  SQL>SELECT*FROM sys.dba_tab_privs

  

  2.5 角色的管理

  

  ORACLE的角色是命名的相關特權組(包括系統特權與物件特權)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-957065/,如需轉載,請註明出處,否則將追究法律責任。

相關文章