首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 9i 表空間、用戶、權限、角色完整管理實戰手冊

     編輯:Oracle 資料庫基礎

前言

表空間、用戶、權限、角色是 Oracle 資料庫安全與儲存管理的四大基石。本文匯總從建立表空間、用戶授權、角色管理、權限傳遞到跨資料庫連線的常用 SQL 指令,並說明關鍵子句用法與最佳實務,供 DBA 速查與實作參考。

一、表空間管理

建立表空間

-- 刪除舊表空間(含資料檔)
DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES;

-- 建立新表空間:自動擴展、無上限
CREATE TABLESPACE test
  DATAFILE 'D:\Oracle\oradata\test\test.dbf'
  SIZE 10M
  AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED
  EXTENT MANAGEMENT LOCAL
  SEGMENT SPACE MANAGEMENT AUTO;

-- 授權用戶無限額度
ALTER USER scott QUOTA UNLIMITED ON test;

關鍵子句:
- LOCAL 區塊管理:位圖追蹤,效能優於字典管理
- AUTO 區段空間管理:自動管理自由清單,減少爭用

二、用戶建立與授權

建立用戶並指定預設/臨時表空間

DROP USER scott CASCADE;

CREATE USER scott
  IDENTIFIED BY tiger
  DEFAULT TABLESPACE test
  TEMPORARY TABLESPACE temp
  QUOTA 100M ON test
  PROFILE default
  ACCOUNT UNLOCK;

系統權限授予

GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE,
      CREATE VIEW, CREATE PROCEDURE, CREATE TRIGGER,
      EXP_FULL_DATABASE, IMP_FULL_DATABASE
TO scott;

注意:避免直接授予 DBA 角色給應用用戶,依最小權限原則授予細粒度權限。

執行 SQL 腳本檔

-- 在 SQL*Plus 中
@d:\xzsp_hrb_Oracle_doc.sql

三、角色管理

建立角色並授予系統權限

CREATE ROLE manager;

GRANT CREATE TABLE, CREATE VIEW, CREATE SESSION TO manager;

授予物件權限

-- 單一物件權限
GRANT SELECT ON employees TO manager;

-- 指定欄位權限
GRANT UPDATE (department_name, location_id) ON departments TO manager;

-- WITH GRANT OPTION:允許受授者再授予他人
GRANT SELECT, INSERT ON departments TO scott WITH GRANT OPTION;

角色授予用戶

GRANT manager TO scott, xzsp;

修改密碼

ALTER USER scott IDENTIFIED BY tiger;

四、物件權限傳遞與撤銷

跨用戶物件授權鏈

-- scott 建立的表,scott 必須親自授權(即使 DBA 也無法代授)
CONN scott/tiger
GRANT SELECT ON student TO system WITH GRANT OPTION;

-- system 再轉授
CONN system/manager
GRANT SELECT ON scott.student TO xzsp;

-- system 可撤銷轉授權限
REVOKE SELECT ON scott.student FROM xzsp;

權限傳遞級聯效應

若 A 授權給 B WITH GRANT OPTION,B 再授權給 C。當 A 撤銷 B 的權限時,C 的權限也會連帶失效(級聯撤銷)。

授予 PUBLIC 角色

GRANT SELECT ON scott.departments TO PUBLIC;

警示:授予 PUBLIC 等同所有用戶可存取,極謹慎使用。

五、Database Link 跨庫存取

-- 建立公共 DB Link
CREATE PUBLIC DATABASE LINK hq.acme.com
  CONNECT TO remote_user IDENTIFIED BY remote_pwd
  USING 'sales_tns_entry';

-- 查詢遠端表
SELECT * FROM emp@hq.acme.com;

六、權限查詢速查

查詢目的DBA 視圖ALL 視圖USER 視圖
所有用戶DBA_USERSALL_USERSUSER_USERS
系統權限DBA_SYS_PRIVS—USER_SYS_PRIVS
物件權限DBA_TAB_PRIVSALL_TAB_PRIVSUSER_TAB_PRIVS
所有角色DBA_ROLES——
用戶/角色擁有的角色DBA_ROLE_PRIVS—USER_ROLE_PRIVS

七、最佳實務建議

  1. 角色導向授權:建立業務角色 → 授權給角色 → 用戶獲派角色,易維護
  2. 最小權限原則:僅授予完成工作所需的最小權限集合
  3. 定期審計:查詢 DBA_TAB_PRIVS 發現異常授權
  4. 密碼策略:使用 Profile 強制密碼複雜度、過期、鎖定規則
  5. 預設表空間:勿讓用戶預設指向 SYSTEM 表空間
  6. QUOTA 管理:限制用戶在各表空間用量,防止單一用戶佔滿空間

結語

Oracle 權限體系嚴謹而彈性,掌握「用戶→角色→系統/物件權限」的三層模型,配合 WITH GRANT OPTION、PUBLIC、跨庫 DB Link 等機制,可建立符合企業治理要求的存取控制矩陣。建議將常用授權腳本模組化、參數化,納入變更管理流程,做到有據可查、可追溯、可回滾。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved