核心差異對比
| 屬性 | SYS | SYSTEM |
| 最高權限 | ✅ CREATE DATABASE | ❌ 無建庫權限 |
| 預設角色 | SYSDBA | SYSOPER |
| 資料字典擁有者 | ✅ 所有基表 | ❌ 僅部分視圖 |
| 密碼檔認證 | 支援 | 支援 |
| 日常管理建議 | 僅限備份/恢復/升級等核心作業 | 日常 DBA 管理首選 |
SYSDBA vs SYSOPER 權限細項
| 操作 | SYSDBA | SYSOPER |
| STARTUP / SHUTDOWN | ✅ | ✅ |
| ALTER DATABASE OPEN/MOUNT/BACKUP | ✅ | ✅ |
| ALTER DATABASE CHANGE CHARACTER SET | ✅ | ❌ |
| CREATE DATABASE | ✅ | ❌ |
| CREATE SPFILE | ✅ | ✅ |
| ARCHIVELOG / RECOVERY | ✅ | ✅ |
| RESTRICTED SESSION | ✅ | ✅ |
| 查看使用者資料 | ✅ | ❌ (無法查看非系統表資料) |
| 實際連線身分 | 連線為 SYS | 連線為 PUBLIC |
連線語法
-- SYSDBA
sqlplus sys/pass@ORCL AS SYSDBA
sqlplus / AS SYSDBA -- OS 認證
-- SYSOPER
sqlplus sys/pass@ORCL AS SYSOPER
sqlplus system/pass@ORCL AS SYSOPER
最佳實踐:最小權限原則
- 建立專屬 DBA 帳號:
CREATE USER dba_admin IDENTIFIED BY complex_pass
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT DBA TO dba_admin; -- 或精細授予系統權限
- 審計追蹤:
AUDIT CREATE SESSION BY SYS, SYSTEM BY ACCESS;
AUDIT ALL ON DEFAULT BY ACCESS;
- 密碼管理:
- 定期輪換 SYS/SYSTEM 密碼
- 使用密碼驗證函數強制複雜度
- 啟用
SEC_CASE_SENSITIVE_LOGON=TRUE (11g+)
- 禁止應用程式使用 SYS/SYSTEM:應用建立專用 Schema,授予最小權限
常見誤區
- ❌ 「SYSTEM 也是超級用戶」→ 實際無 CREATE DATABASE、無法變更字符集
- ❌ 「日常用 SYS 管理」→ SYS 連線即為資料字典擁有者,誤操作風險極高
- ❌ 「SYSDBA 只是角色」→ 實為特殊權限,繞過一般權限檢查
緊急恢復場景
唯有 SYS AS SYSDBA 可執行:
- 資料庫建立/重建
- 字符集變更
- 控制檔/Redo Log 重建
- 核心參數異常導致無法正常啟動時的強制修復