遺忘 SYS/SYSTEM 密碼是 DBA 常見挑戰。本文整理六種實戰驗證的重置方法,涵蓋本地 OS 驗證、密碼檔重建、Linux/Windows 平台差異,助您在無備份密碼檔情況下快速恢復存取權限。
前提:作業系統帳號屬於 ORA_DBA (Windows) 或 dba 群組
C:\> sqlplus /nolog
SQL> CONN / AS SYSDBA
SQL> ALTER USER SYS IDENTIFIED BY NewPass123;
SQL> ALTER USER SYSTEM IDENTIFIED BY NewPass123;
注意:密碼建議以字母開頭,避免 ORA-00988 錯誤。
C:\> sqlplus "/@ORCL as sysdba"
SQL> ALTER USER SYS IDENTIFIED BY NewPass123;
SQL> ALTER USER SYSTEM IDENTIFIED BY NewPass123;
C:\> SET ORACLE_SID=ORCL
C:\> sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> ALTER USER SYS IDENTIFIED BY NewPass123;
SQL> ALTER USER SYSTEM IDENTIFIED BY NewPass123;
SQL> CONN / AS SYSDBA
SQL> ALTER USER sys IDENTIFIED BY "NewPass123";
-- 或建立新用戶
SQL> CREATE USER new_admin IDENTIFIED BY "NewPass123";
SQL> GRANT DBA TO new_admin;
C:\> orapwd file=D:\oracle\product\10.2.0\db_1\database\PWDORCL.ora password=NewPass123 entries=10
-- 覆蓋原密碼檔後,重啟資料庫生效
關鍵點:
entries 預估最大 SYSDBA 使用者數$ su - oracle
$ sqlplus /nolog
SQL> CONN / AS SYSDBA
SQL> STARTUP -- 若資料庫未啟動
SQL> ALTER USER SYS IDENTIFIED BY NewPass123;
| 平台 | OS 驗證群組 | 密碼檔路徑慣例 | 啟動腳本 |
|---|---|---|---|
| Windows | ORA_DBA / ORA_OPER | %ORACLE_HOME%\database\PWD | OracleService |
| Linux/Unix | dba / oper | $ORACLE_HOME/dbs/orapw | dbstart / systemd |
最佳實踐:平時建立專屬 DBA 帳號 (GRANT SYSDBA) 避免直接用 SYS,定期演練密碼重置流程,將密碼檔納入備份策略。