Oracle 8i / 9i / 10g / 11g / 12c / 18c / 19c 預設帳號密碼總覽
Oracle 8i (8.1.x) — 安裝後預設密碼
| 帳號 | 預設密碼 | 角色/用途 | 狀態 |
| SYS | change_on_install | 最高權限 DBA,資料字典擁有者 | OPEN |
| SYSTEM | manager | 第二管理員,日常管理操作 | OPEN |
| INTERNAL | oracle | 相當於 SYSDBA (8i 特有,9i 移除) | OPEN |
| SCOTT | tiger | 範例結構用戶 (EMP/DEPT 等) | LOCKED |
| SYSMAN | oem_temp | Enterprise Manager 管理 | OPEN |
| OUTLN | outln | 儲存大綱 (Plan Stability) | LOCKED |
| DBSNMP | dbsnmp | 智能代理監控 | LOCKED |
Oracle 9i (9.2.x) — 關鍵變化
- 安裝過程強制要求設定 SYS/SYSTEM 密碼,不再接受預設值
- INTERNAL 帳號移除,改用 `SYS AS SYSDBA`
- SCOTT/TIGER 等範例帳號**預設鎖定且密碼過期**
- 其他帳號 (SYSMAN, DBSNMP, OUTLN 等) 同樣預設鎖定
Oracle 10g / 11g / 12c / 18c / 19c — 現代版本統一策略
| 帳號 | 預設狀態 | 密碼策略 | 備註 |
| SYS | OPEN | 安裝時指定 | 支援 SYSDBA/SYSOPER/SYSBACKUP/SYSDG/SYSKM |
| SYSTEM | OPEN | 安裝時指定 | 日常管理建議用此帳號 |
| SCOTT | LOCKED + EXPIRED | 無預設密碼 | 需解鎖並設定密碼:`ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY new_pwd;` |
| SYSMAN | OPEN | 安裝時指定 (EM 配置階段) | Enterprise Manager 核心帳號 |
| DBSNMP | LOCKED | 無 | EM 監控代理使用,EM 配置時自動解鎖 |
| OUTLN | LOCKED | 無 | SQL Plan Management 使用 |
| ANONYMOUS | LOCKED | 無 | XML/HTTP 存取用 |
| XS$NULL | LOCKED | 無 | 12c+ 內部帳號,Real Application Security |
| APPQOSSYS | LOCKED | 無 | QoS 管理 |
| CTXSYS | LOCKED | 無 | Oracle Text |
| MDSYS | LOCKED | 無 | Spatial |
| ORDSYS | LOCKED | 無 | Multimedia |
| WMSYS | LOCKED | 無 | Workspace Manager |
| LBACSYS | LOCKED | 無 | Label Security |
| DVF / DVSYS | LOCKED | 無 | Database Vault (啟用時解鎖) |
| GSMADMIN_INTERNAL | LOCKED | 無 | 12c+ Global Service Manager |
| SYSBACKUP | LOCKED | 無 | 12c+ 備份管理權限帳號 |
| SYSDG | LOCKED | 無 | 12c+ Data Guard 管理權限帳號 |
| SYSKM | LOCKED | 無 | 12c+ 金鑰管理權限帳號 |
| SYSRAC | LOCKED | 無 | 19c+ RAC 管理權限帳號 |
關鍵安全操作指南
1. 安裝後立即執行:修改預設密碼與鎖定閒置帳號
-- 以 SYSDBA 登入
sqlplus / as sysdba
-- 修改 SYS/SYSTEM 密碼 (若安裝時設定過簡單)
ALTER USER sys IDENTIFIED BY "ComplexP@ssw0rd1";
ALTER USER system IDENTIFIED BY "ComplexP@ssw0rd2";
-- 鎖定所有非必要預設帳號 (除 SYS/SYSTEM/SYSMAN 外)
BEGIN
FOR u IN (SELECT username FROM dba_users
WHERE username NOT IN ('SYS','SYSTEM','SYSMAN')
AND account_status = 'OPEN')
LOOP
EXECUTE IMMEDIATE 'ALTER USER ' || u.username || ' ACCOUNT LOCK';
END LOOP;
END;
/
-- 驗證
SELECT username, account_status FROM dba_users ORDER BY 1;
2. 啟用 SCOTT 範例結構 (教學/測試環境)
-- 解鎖並設定密碼
ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;
-- 執行建腳本 (通常位於 $ORACLE_HOME/rdbms/admin/utlsampl.sql)
@?/rdbms/admin/utlsampl.sql
-- 驗證
SELECT * FROM scott.emp;
3. 密碼驗證函數與複雜度策略
-- 建立驗證函數 (範例:長度≥10、含大小寫、數字、特殊字元)
CREATE OR REPLACE FUNCTION verify_complexity
(username VARCHAR2, password VARCHAR2, old_password VARCHAR2)
RETURN BOOLEAN IS
BEGIN
IF LENGTH(password) < 10 THEN
RAISE_APPLICATION_ERROR(-20001, '密碼長度至少 10 字元');
END IF;
IF NOT REGEXP_LIKE(password, '[A-Z]') THEN
RAISE_APPLICATION_ERROR(-20002, '需含大寫字母');
END IF;
IF NOT REGEXP_LIKE(password, '[a-z]') THEN
RAISE_APPLICATION_ERROR(-20003, '需含小寫字母');
END IF;
IF NOT REGEXP_LIKE(password, '[0-9]') THEN
RAISE_APPLICATION_ERROR(-20004, '需含數字');
END IF;
IF NOT REGEXP_LIKE(password, '[^A-Za-z0-9]') THEN
RAISE_APPLICATION_ERROR(-20005, '需含特殊字元');
END IF;
RETURN TRUE;
END;
/
-- 建立設定檔並指派
CREATE PROFILE secure_profile LIMIT
PASSWORD_VERIFY_FUNCTION verify_complexity
PASSWORD_LIFE_TIME 90
PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 10
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 1;
ALTER USER system PROFILE secure_profile;
ALTER USER sys PROFILE secure_profile;
-- 其他管理帳號同理
版本演進關鍵差異總結
| 版本 | SYS/SYSTEM 密碼 | SCOTT 狀態 | INTERNAL | 安全預設值 |
| 8i | 預設固定 | OPEN/tiger | 存在 | 極低 |
| 9i | **安裝時強制設定** | LOCKED | 移除 | 中等 |
| 10g+ | 安裝時強制設定 | LOCKED+EXPIRED | 無 | 高 (預設鎖定多數帳號) |
| 12c+ | 安裝時強制設定 | LOCKED+EXPIRED | 無 | 最高 (權限分離帳號 SYSBACKUP/SYSDG/SYSKM) |
最佳實踐檢查清單
- ✅ 安裝時為 SYS/SYSTEM 設定高強度密碼
- ✅ 安裝完成後立即執行鎖定腳本,僅保留必要帳號 OPEN
- ✅ 為管理帳號指派強密碼驗證設定檔
- ✅ 定期稽核 `DBA_USERS` 確認無異常 OPEN 帳號
- ✅ 啟用審計 `AUDIT CREATE SESSION BY ACCESS WHENEVER NOT SUCCESSFUL`
- ✅ 使用密碼管理工具 (Password Vault) 儲存管理密碼,杜絕硬編碼
現代 Oracle 版本 (10g+) 安全預設值已大幅提升,**安裝時強制設定 SYS/SYSTEM 密碼**與**預設鎖定絕大多數內建帳號**是兩大關鍵防線。DBA 核心責任是延續並強化這些防線。