關於SYS密碼忘記,或者明明正確,卻報密碼不正確的解決方案


1      說明

當我們使用PL/SQL工具以SYS用戶登錄數據庫時,發現提示密碼不正確:

ORA-01017: invalid username/password; logon denied

怎么辦?

2      直接修改登錄密碼

使用這個方法前,必須和數據庫管理員確認,確實是不記得密碼了,並且修改之后要告知其余使用人,密碼被修改,防止挨罵~~

在數據庫服務器,使用sqlplus / as sysdba,通過操作系統認證,直接登錄數據庫,這里不需要驗證密碼,然后修改SYS用戶密碼:

alter user sys identified by oracle;

這里是把SYS用戶密碼設置成了oracle。

 

3      修改認證方式

Oracle登錄驗證方式包括口令驗證和操作系統認證。

操作系統認證,就是Oracle認為操作系統用戶是安全的,在使用sqlplus登錄時,不校驗用戶密碼,直接登錄。

口令認證,就是指Oracle認為操作系統用戶是不安全的,需要通過口令文件進行賬號密碼驗證。Oracle的口令文件一般存放在$ORACLE_HOME/dba/目錄下,名字為orapw+sid。

Oracle通過初始化參數remote_login_passwordfile限制口令文件的使用,這里詳細介紹下:

1)NONE

remote_login_passwordfile=none表示,登錄時禁用口令文件驗證,sysdba用戶只能通過操作系統認證登錄數據庫,其他方式的登錄,比如PL/SQL,就會報前面提到的ORA-01017錯誤。

操作系統認證方式涉及sqlnet.ora($ORACLE_HOME/network/admin目錄下)中的參數SQLNET.AUTHENTICATION_SERVICES:

a) NONE:關閉操作系統認證,只能通過口令文件認證;----

b) ALL: linux/unix平台下,采用操作系統認證,但遠程sysdba登錄仍然需要口令文件認證。

c) NTS: windows平台下操作系統認證。

2) EXCLUSIVE

remote_login_passwordfile=exclusive表示,獨占模式使用口令文件,這個是默認值,用在單數據庫的單實例環境中。這種模式下,可以對sysdba用戶進行增加、修改、刪除,同時可以修改sysdba用戶密碼,記錄到密碼文件中。

查看被授予sysdba權限的用戶:

SELECT USERNAME FROM V$PWFILE_USERS WHERE SYSDBA='TRUE';

 

口令文件中添加/刪除sysdba權限用戶

REVOKE SYSDBA FROM non-SYS-user;

GRANT SYSDBA TO non-SYS-user;

3) SHARED

這種模式下,可以在多個數據庫間共享使用口令文件,口令文件不可被修改,包括不能修改sys用戶密碼。Oracle建議首先將需要sysdba權限的用戶在excusive模式下設置好,然后修改remote_login_passwordfile修改為shared共享口令文件。

修改方法:

alter system set remote_login_passwordfile=shared scope=spfile;

然后重啟數據庫。

 

通過上面分析,我們可以看到,如果PL/SQL登錄時,明明密碼是正確的,但是就是登錄不進去,並且說密碼不正確,我們就要在數據庫服務器上使用sqlplus登錄,然后查看系統參數remote_login_passwordfile是否啟動了可口令文件驗證,一般應該設置為exclusive。同時關注sqlnet.ora的參數SQLNET.AUTHENTICATION_SERVICES。

4      小結

SYS用戶忘記密碼,或者明明密碼正確,但是登錄時報密碼錯誤,不用愁了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM