整合 Windows/Linux 平台、本地/遠端、有無 OS 認證、單用戶/全遺忘六大維度,提供標準化操作流程與風險控制點,確保 DBA 在任何權限情境下 10 分鐘內恢復存取。
前提:OS 帳號屬於 DBA 群組 (Windows: ORA_DBA / Linux: dba)
# Windows
sqlplus /nolog
CONN / AS SYSDBA
ALTER USER SYS IDENTIFIED BY NewPass123;
ALTER USER SYSTEM IDENTIFIED BY NewPass123;
# Linux
su - oracle
sqlplus /nolog
CONN / AS SYSDBA
ALTER USER SYS IDENTIFIED BY NewPass123;
sqlplus "SYS/NewPass@//host:1521/ORCL AS SYSDBA"
-- 或
sqlplus "/@ORCL AS SYSDBA" -- 需 tnsnames.ora 配置
SET ORACLE_SID=ORCL
sqlplus /nolog
CONN / AS SYSDBA
ALTER USER SYS IDENTIFIED BY NewPass123;
ALTER USER SYSTEM IDENTIFIED BY NewPass123;
# Windows
orapwd file=%ORACLE_HOME%\database\PWDORCL.ora password=NewPass123 entries=10
# Linux
orapwd file=$ORACLE_HOME/dbs/orapwORCL password=NewPass123 entries=10
# 12c+ 格式
orapwd file=... password=... entries=10 format=12.2
影響範圍:僅 SYS/SYSTEM,其他用戶密碼不變。RAC 需全節點同步執行。
# 1. 停止資料庫服務
systemctl stop oracle-db
# 2. 以 oracle 用戶啟動最小實例
su - oracle
export ORACLE_SID=ORCL
sqlplus /nolog
CONN / AS SYSDBA
STARTUP MOUNT -- 需密碼檔有效
# 3. 重置密碼
ALTER USER SYS IDENTIFIED BY NewPass123;
ALTER DATABASE OPEN;
CONN / AS SYSDBA
ALTER USER sys IDENTIFIED BY "NewPass123";
-- 或建立臨時 DBA 帳號
CREATE USER temp_dba IDENTIFIED BY "Temp123";
GRANT DBA TO temp_dba;
| 項目 | Windows | Linux/Unix |
|---|---|---|
| DBA 群組 | ORA_DBA, ORA_OPER | dba, oper |
| 密碼檔路徑 | %ORACLE_HOME%\database\PWD | $ORACLE_HOME/dbs/orapw |
| 服務管理 | OracleService | systemd / dbstart / crsctl |
| 環境變數設定 | SET ORACLE_SID=... | export ORACLE_SID=... |
PASSWORD_LIFE_TIME=90)PASSWORD_REUSE_TIME=365, PASSWORD_REUSE_MAX=10)GRANT SYSDBA TO dba_admin),禁用 SYS 日常登入CONFIGURE CONTROLFILE AUTOBACKUP ON)UTLPWDMG.SQL 或自訂)將六大方案製成單頁操作卡,貼於機房/運行手冊,配合自動化驗證腳本,讓密碼遺忘從「恐慌事件」變為「標準操作」。