首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 用戶、權限、角色、設定檔完整管理手冊

     編輯:Oracle 資料庫相關知識

權限體系

類別說明典型授予對象
系統權限資料庫操作權限 (建表、建表空間、備份...)用戶/角色
實體權限具體物件存取權 (SELECT/INSERT/UPDATE/EXECUTE...)用戶/角色/PUBLIC

預設角色與權限

  • CONNECT:僅 CREATE SESSION (登入)。
  • RESOURCE:建立表/序列/觸發器/程序等實體權限。
  • DBA:所有系統權限 + WITH ADMIN OPTION,最高權限。

一般用戶:GRANT CONNECT, RESOURCE TO user;
DBA 用戶:GRANT CONNECT, RESOURCE, DBA TO user;

權限傳遞與回收

  • 系統權限:GRANT ... TO user WITH ADMIN OPTION 可轉授;REVOKE 不連鎖 (A 回收 B,B 已轉授 C 不受影響),且可跨用戶回收。
  • 實體權限:GRANT ... ON obj TO user WITH GRANT OPTION 可轉授;REVOKE 連鎖失效 (A 回收 B,B 轉授 C 同步失效)。

用戶生命週期管理

建立用戶

CREATE USER acc01 IDENTIFIED BY "12345"
  DEFAULT TABLESPACE account
  TEMPORARY TABLESPACE temp
  PROFILE default
  QUOTA 50M ON account;

修改用戶

ALTER USER acc01 IDENTIFIED BY new_pass;
ALTER USER acc01 DEFAULT TABLESPACE users;
ALTER USER acc01 TEMPORARY TABLESPACE temp_data;
ALTER USER acc01 PROFILE strict_profile;
ALTER USER acc01 ACCOUNT LOCK/UNLOCK;
ALTER USER acc01 PASSWORD EXPIRE;  -- 強制下次登入改密碼

刪除用戶

DROP USER acc01;          -- 無物件
DROP USER acc01 CASCADE;  -- 連同物件刪除

設定檔 - 資源與密碼策略

CREATE PROFILE strict LIMIT
  FAILED_LOGIN_ATTEMPTS 5
  PASSWORD_LOCK_TIME 1
  PASSWORD_LIFE_TIME 90
  PASSWORD_REUSE_TIME 365
  PASSWORD_REUSE_MAX 10
  PASSWORD_VERIFY_FUNCTION verify_fn
  SESSIONS_PER_USER 10
  CPU_PER_SESSION UNLIMITED
  CONNECT_TIME 480
  IDLE_TIME 30;

指派:ALTER USER acc01 PROFILE strict;

監控與會話管理

-- 查詢活躍會話
SELECT username, sid, serial#, machine, program, logon_time
FROM v$session WHERE username IS NOT NULL;

-- 強制中斷會話
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

-- 查詢會話正在執行 SQL
SELECT s.username, sq.sql_text
FROM v$session s JOIN v$sql sq ON s.sql_id = sq.sql_id
WHERE s.sid = :target_sid;

角色管理

CREATE ROLE app_read IDENTIFIED BY pwd;
GRANT SELECT ON schema.table TO app_read;
GRANT app_read TO user1;
SET ROLE app_read;  -- 啟用角色 (可在觸發器/程式中動態控制)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved