orapwd 與 svrmgrl)INTERNAL/SYS 密碼REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE)sqlnet.ora 至 NTS(OS 認證),以 INTERNAL 免密關閉資料庫PWD{SID}.oraorapwd 產生新密碼檔sqlnet.ora 至 NONE(關閉 OS 認證)updateinternalpwd.bat@echo off
REM ====== 使用者配置區 ======
set ORACLE_SID=satest
set ORACLE_HOME=e:\Oracle\ora81
set PATH=%ORACLE_HOME%\bin;%PATH%
set NEWPWD=QQ12345
set NONEFILE=%ORACLE_HOME%\network\ADMIN\sqlnet2.ora REM SQLNET.AUTHENTICATION_SERVICES=(NONE)
set NTSFILE=%ORACLE_HOME%\network\ADMIN\sqlnet1.ora REM SQLNET.AUTHENTICATION_SERVICES=(NTS)
set DESTFILE=%ORACLE_HOME%\network\ADMIN\sqlnet.ora
set PWDFILE=PWD%ORACLE_SID%.ora
set TTFILE=%ORACLE_HOME%\dbascripts\updatepwd.tmp
REM ===========================
echo 1/5 切換至 OS 認證模式...
copy /Y %NTSFILE% %DESTFILE% >nul
echo 2/5 關閉資料庫...
echo connect internal > %TTFILE%
echo shutdown immediate >> %TTFILE%
echo exit >> %TTFILE%
type %TTFILE% | svrmgrl
echo 3/5 重建密碼檔...
del /Q %ORACLE_HOME%\database\%PWDFILE% 2>nul
orapwd file=%ORACLE_HOME%\database\%PWDFILE% password=%NEWPWD% entries=10
echo 4/5 切換至密碼檔認證...
copy /Y %NONEFILE% %DESTFILE% >nul
echo 5/5 啟動資料庫驗證...
echo connect internal/%NEWPWD% > %TTFILE%
echo startup >> %TTFILE%
echo exit >> %TTFILE%
type %TTFILE% | svrmgrl
del /Q %TTFILE% 2>nul
echo 完成!新密碼已生效。
pause
sqlnet1.ora (NTS)
SQLNET.AUTHENTICATION_SERVICES = (NTS)
sqlnet2.ora (NONE)
SQLNET.AUTHENTICATION_SERVICES = (NONE)
svrmgrl 已移除,改用 sqlplus / as sysdbaorapwd 新增 force=y 參數可直接覆蓋,無需手動刪除ALTER USER SYS IDENTIFIED BY newpwd; 同步修改資料庫內部密碼sqlnet.ora 與舊 PWD*.ora