遠程登錄ORACLE出現ORA-01017的解決

以sys和服務器登錄密碼連接服務器上oracle時出現了ora-01017的錯誤,在網上搜了,發現一片解釋很好的博文,藉以轉載,方便大家學習,也方便自己以後回顧。                                                           轉:今天在遠程登錄我們的外網ORACLE服務器時出現ORA-01017: invalid username/password; logon denied錯誤,但是在本地登錄時USERNAME,PASSWORD都是對的。在反覆試驗多次,並上網查詢問題原因後,問題得到了解決:
  在本地登錄,修改SYS用戶名(可以改成一樣的),應用,在遠程登錄成功。
  原因:
在數據庫沒有啓動之前,數據庫內建用戶是無法通過數據庫來驗證身份的。
  口令文件中存放sysdba/sysoper用戶的用戶名及口令,允許用戶通過口令文件驗證,在數據庫未啓動之前登陸,從而啓動數據庫。
  如果沒有口令文件,在數據庫未啓動之前就只能通過操作系統認證.
  如果是遠程sysdba登陸,需要通過passwordfile認證.
  PFILE文件中有個參數remote_login_passwordfile 對passwordfile進行控制,當
  remote_login_passwordfile=NONE時
  停用口令文件驗證,Oracle數據庫不允許遠程SYSDBA/SYSOPER身份登錄,無法通過遠程進行數據庫起停等操作管理;
  remote_login_passwordfile=exclusive時
  啓用口令文件,允許遠程登錄;
  remote_login_passwordfile = shared時
  多個數據庫可以共享一個口令文件,但是只可以識別一個用戶:SYS;
 當口令文件丟失時,用/NOLOG方式登錄,通過orapwd重建口令文件來解決

如果口令文件丟失,可以使用orapwd可以重建口令文件,語法如下:

[oracle@jumper oracle]$ orapwd

  Usage: orapwd file=<fname> password=<password> entries=<users>

  以EXCLUSIVE 方式啓動以後,實例名稱信息被寫入口令文件.
此時如果有其他實例以Exclusive模式啓動仍然可以使用這個口令文件,口令文件中的實例名稱同時被改寫.也就是說,數據庫只在啓動過程中才讀取口令文件,數據庫運行過程中並不鎖定該文件,類似於pfile/spfile文件.
  注意此時可以增加SYSDBA用戶,並且這些信息可以被寫入到口令文件.

  一旦口令文件中增加了其他SYSDBA用戶,此文件不再能夠被其他Exclusive的實例共享.

實際上,口令文件對於其他用戶來說就是啓到了一個 sudo 的作用.

問題分析:
  遠程不能登錄的原因其實還不清楚,因爲ORACLE的PFILE文件  remote_login_passwordfile=exclusive是對的,沒有動過。產生問題的原因在於口令文件中記錄的SYS用戶口令於本地登錄時用的口令不符了,問題是什麼原因會導致本地登錄的口令會與口令文件中記錄不符呢?
另記:oracle用戶初始口令:
   internal/oracle  
  sys/change_on_install  
  system/manager  
  scott/tiger  
  sysman/oem_temp


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章