ORACLE Oracle 裡的 SYS、SYSTEM 使用者,以及 SYSDBA 權限,差異如下:
| 使用者/權限 | 主要用途 | 權限範圍 | 備註 |
|---|---|---|---|
| SYS | DBA管理,系統資料字典、內建維護 | 幾乎所有DB物件(系統級別),擁有最高權限 | 建議僅用於維護,連接預設會是 SYSDBA 身分 |
| SYSTEM | 一般管理、日常管理與支援 | 有廣泛DB管理權限但略低於SYS,無法管理資料字典物件 | 可做日常DBA工作,但無法直接操作內部資料字典 |
| SYSDBA | 一種連線角色/權限,不是獨立帳號 | 授予 SYS 等級的特殊存取權限(可啟停DB) | 用 SYS 或 SYSTEM 進入時若標明 AS SYSDBA,即進入的超級管理者模式 |
細節解釋:
-
SYS:Oracle 資料庫的原生超級管理員(擁有所有資料字典物件,系統維護用),僅供特殊維護或授權管理時使用。 -
SYSTEM:標準管理員,負責日常 DBA 任務、支援、管理使用者、權限分配等,不能直接更動資料字典核心物件。 -
SYSDBA:是一種「特殊管理身分」,不是一般使用者。指定AS SYSDBA時,可以以超級權限連線資料庫並執行系統級操作;例如啟動、關閉資料庫,即使資料庫目前未開啟也能連線(連線後等於 SYS 預設)。
連線舉例:
bash
sqlplus sys/<密碼>@<服務名> as sysdba sqlplus system/<密碼>@<服務名>
-
第一行會以 SYSDBA 超級權限登入(所有維護工作都能做)。
-
第二行僅以 SYSTEM 權限登入,偏向日常操作。
重點整理:
-
SYS 是資料庫的神級超級用戶。
-
SYSTEM 是高權限一班用戶,日常管理用。
-
SYSDBA 是管理權限,指定就能做管理人能做的所有事。
1. SYS 一定有 SYSDBA 權限嗎?
-
SYS 使用者天生、預設就擁有 SYSDBA 權限。
-
在 Oracle 裡,SYS 就是最高權限帳號,系統啟動時只能用 SYS(或有 SYSDBA 權限的帳號)做啟動與維護。
-
所以 SYS 本身「一定」有 SYSDBA,不需另外授權,不能刪除 SYSDBA 角色。
2. SYS 可以 as 什麼?
除了 as sysdba,SYS 還可以 as sysoper:
-
as sysdba:超級管理員,能做所有維護、啟動、關閉資料庫等工作。 -
as sysoper:操作型管理員,有一些基本維護權限(如啟動、關閉資料庫),但權限比 SYSDBA 低,無法修改資料字典、做授權。 -
執行例:
bash
sqlplus sys/<密碼>@<服務名> as sysdba sqlplus sys/<密碼>@<服務名> as sysoper
常見 as 角色權限:
| 角色 | 能力說明 |
|---|---|
| SYSDBA | 全部管理,資料庫啟停、重建、維護等 |
| SYSOPER | 基本操作:啟動/關閉資料庫 |
結論:
-
SYS 一定具有 SYSDBA 權限;不用自行賦予。
-
SYS 可指定 as sysdba 或 as sysoper 來連線,但以 sysdba 身分操作最常見。
-
其他帳戶(如 SYSTEM,或自建帳號)必須被授予才有 SYSDBA 或 SYSOPER 權限。
如還有 Oracle 角色管控細節問題,歡迎續問!