sys不能遠程登錄的問題


環境:在數據服務器A(Red Hat Enterprise Linux Server release 5.5 (Tikanga))上裝有數據庫ORACLE 10g,但是我們現在從機器B上用DBA賬號遠程連接數據庫時,登錄不了。如下所示:

問題一:SYSDBA不能遠程登錄(此處是不是指CRT遠程登錄)

SYSDBA不能遠程登錄分兩種情況:

1:提示的是ORA-01017:用戶名密碼出錯

C:\Users\kerry>sqlplus "sys/wgods123@gsp as sysdba"

SQL*Plus: Release 11.2.0.1.0 Production on 星期五 1月 11 11:08:07 2013

Copyright (c) 1982, 2010, Oracle. All rights reserved.

ERROR:

ORA-01017: invalid username/password; logon denied

這樣的錯誤,明明密碼和用戶名明明輸入的都是正確的。這又是為什么叻,出現這種情況,一般是系統參數REMOTE_LOGIN_PASSWORD的設置問題:PFILE文件中有個參數REMOTE_LOGIN_PASSWORDpasswordfile進行控制:

remote_login_passwordfile =NONE時,停用口令文件驗證,Oracle數據庫不允許遠程SYSDBA/SYSOPER身份登錄,無法通過遠程進行數據庫起停等操作管理;

remote_login_passwordfile =exclusive時,啟用口令文件,允許遠程登錄;

remote_login_passwordfile =shared 時,多個數據庫可以共享一個口令文件,但是只可以識別一個用戶:SYS;

當口令文件丟失時,用/NOLOG方式登錄,通過orapwd重建口令文件來解決。如果口令文件丟失,可以使用orapwd可以重建口令文件。

這里需要啟動密碼文件的話,需要前提就是這個值, 這里的值可以NONE,EXCLUSIVE和SHARE。EXCLUSIVE和SHARE都可以,EXCLUSIVE是獨占的文件,SHARE是多實例的體系中的共享模式。這個問題基本上就是這個值導致的

SQL>alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile;

然后重啟服務就可遠程以sysdba登錄。

但是還有一種情況如下:

檢查一下系統參數REMOTE_LOGIN_PASSWORD的值,發現是EXCLUSIVE。而且密碼文件也存在,但是就是報上面錯誤。

SQL> SHOW PARAMETER REMOTE_LOGIN_PASSWORD

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

remote_login_passwordfile string EXCLUSIVE

最后發現:SYS賬戶的密碼是錯誤的,重置SYS密碼后

SQL> alter user sys identified by wgods123;

問題解決了。

2:ORA-01031: insufficient privileges

 

C:\Users\kerry>sqlplus "sys/wgods123@GSP as sysdba"

SQL*Plus: Release 11.2.0.1.0 Production on 星期五 1月 11 14:37:11 2013

Copyright (c) 1982, 2010, Oracle. All rights reserved.

ERROR:

ORA-01031: insufficient privileges

這種情況一般是由於你的密碼文件缺損或者不存在了,例如口令文件刪除了,而Oracle實例對sysdba的權限是根據這個密碼文件來判斷的,如果你的用戶被grant to sysdba了,那么這個用戶的密碼和用戶名也在這個密碼文件了。這樣也就發現你不是sysdba的角色,當然as sysdba就會提示權限不足了喲。為什么這樣做了,如果我們的數據庫沒有open,那么對於的一些動態視圖是不能打開的,所以oracle必須把這些用戶的口令和username放在一個獨立的文件里,這樣在數據庫還不是open的狀況寫,有個地方判斷了。

如何解決了。我們首先來判斷一下

SQL> SELECT * FROM V$PWFILE_USERS;

USERNAME SYSDBA SYSOPER

------------------------------ ------ -------

如果這里選擇不出了記錄的話,就是密碼文件沒有叻。

這里解決的方法就是重建orapwd文件

使用密碼文件orapwd 命令 [oracle@wgods dbs]$ orapwd file=/database/oracle/product/dbhome/dbs/orapwgsp entries=4 password=wgods123 force=y

再次查看 v$pwfile_users 這時候有一條記錄了


免責聲明!

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



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