racle11g,靜默安裝后用戶的密碼有效期默認設置為180天,180天后密碼將失效,oracle會提示要修改密碼。
我們項目用的是jdbc連接oracle
數據庫,沒法自動處理oracle的這種密碼錯誤提示,直接就連接oracle失敗。
解決思路一:
定期修改數據庫用戶密碼。
解決思路二:
將數據庫密碼設置為永久有效。
思路一具有一定的安全保護作用,但由於業務不支持修改業務部件中的數據庫密碼配置(部件較多,修改過於麻煩,所以干脆要求不能修改,想想有點矬),於是決定采用思路二。
具體設置命令如下:
假定我們所使用的數據庫用戶為test,密碼為test123456
步驟一:登陸oracle所在的linux服務器(我們的oracle假設在linux服務器上),注意要用dba用戶。
步驟二:執行'sqlplus / as sysdba'
步驟三:輸入'alter profile default limit password_life_time unlimited;'並回車
步驟四:輸入'alter user test identified by test123456;'
步驟五:輸入'quit;'退出sqlplus。
步驟六:重啟各個業務部件,一切OK。
需要注意的是,對於第四步,可能會失敗,因為oracle有可能設置了修改密碼時不能與歷史密碼重復的限制,我們可以先執行以下命令去掉限制,然后再執行第四步。雖然對於第四步而言設置前后密碼沒有改變,但卻是必要的嗎,實際測試中發現即使做了第三步處理,如果不執行第四步,jdbc連接數據時依然會連接失敗。
'alter profile default limit password_reuse_max unlimited;'
'alter profile default limit password_reuse_time unlimited;'
在使用profile並想重復利用密碼的時,需要滿足如下條件
1)password_reuse_time和password_reuse_max都為unlimted的時候
可以隨便重置
2)當指定password_reuse_time和password_reuse_max其中一個,另外一個unlimted的時候
密碼永遠無法重置
3)當同時指定password_reuse_time和password_reuse_max的時候
在滿足password_reuse_max的時候,可以重置密碼
在同時滿足password_reuse_time和password_reuse_max的時候,可以重置密碼
在滿足password_reuse_time但從為更換過密碼的時候,也就是password_reuse_max一次也沒用的時候密碼無法重置.
上面這種處理方案是修復現網問題的彌補性措施,根本的要在oralce安裝的時候就去掉密碼有效期的限制。