權限層級釐清
- SYSDBA:最高特權,涵蓋創建/啟動/關閉/恢復數據庫、歸檔模式切換、表空間備份等核心操作。普通DBA角色無法替代。
- SYSOPER:次級特權,缺少
CREATE DATABASE、RECOVER DATABASE UNTIL、WITH ADMIN OPTION授權權限。
認證模式選型矩陣
| 場景 | 推薦模式 | 核心配置 |
| 單機本地維護 | 操作系統認證 | OS群組授權 + sqlnet.ora: NTS + init.ora: NONE |
| 多庫集中遠程管理 | 密碼文件認證 | orapwd創建 + init.ora: EXCLUSIVE/SHARED + sqlnet.ora: NONE |
操作系統認證實施步驟
Windows (NT/2000/XP/2003)
- 建立本地群組
ORA_<SID>_DBA 或通用 ORA_DBA
- 將維護賬號加入該群組(安裝程式通常自動完成)
sqlnet.ora:SQLNET.AUTHENTICATION_SERVICES = (NTS)
init<SID>.ora:REMOTE_LOGIN_PASSWORDFILE = NONE
- 驗證:
SQLPLUS / AS SYSDBA 或 CONNECT INTERNAL
Unix/Linux
- 預建
dba 群組與 oracle 用戶(安裝前置條件)
init.ora:REMOTE_LOGIN_PASSWORDFILE = NONE(8.1+默認EXCLUSIVE,必須手改)
- 以oracle用戶登錄OS,
SQLPLUS / AS SYSDBA
密碼文件認證實施步驟
# 1. 創建密碼文件
orapwd file=$ORACLE_HOME/dbs/orapw<SID> password=sys密碼 entries=10
# 2. 修改初始化參數
REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE # 單實例獨享,允許授權新SYSDBA用戶
# 或 SHARED # 多實例共享,限制僅SYS/INTERNAL持有SYSDBA
# 3. 禁用OS認證
sqlnet.ora: SQLNET.AUTHENTICATION_SERVICES = (NONE)
# 4. 遠程登錄驗證
sqlplus sys/密碼@tns_alias AS SYSDBA
進階管理操作
授權普通用戶SYSDBA
-- 需以現有SYSDBA身份執行
GRANT SYSDBA TO scott;
-- scott可雙模式登錄:
-- 普通:CONN scott/tiger
-- 特權:CONN scott/tiger AS SYSDBA --> 實際映射為SYS
查詢現有特權用戶
SELECT * FROM V$PWFILE_USERS;
擴充ENTRIES上限
SHUTDOWN IMMEDIATE
- 刪除舊密碼文件
- 重新
orapwd ... entries=更大值
STARTUP
- 重新授權(原授權失效,建議先查詢
V$PWFILE_USERS備份名單)
INTERNAL/SYS密碼遺忘急救
-- 方法1:以SYSDBA登錄後直接改
ALTER USER SYS IDENTIFIED BY 新密碼; -- 同步修改INTERNAL
-- 方法2:重建密碼文件指定新密碼
orapwd file=... password=新密碼 entries=...
關鍵提示:
• Win2000+Oracle 8.1.6常因OS認證失敗報「憑證檢索失敗」,改sqlnet.ora = NONE強制走密碼文件即可。
• 安裝完成首要動作:修改SYS/SYSTEM/INTERNAL默認口令。
• 密碼文件EXCLUSIVE模式下,GRANT SYSDBA新用戶會自動寫入文件;SHARED模式下禁止此操作。