http://www.qinxiwang.com/read-htm-tid-265.html
我在Solaris系統上運行 Oracle8i 8.1.7企業版。我創建了兩個數據庫:SUGAR和TestDb。將兩者的remote_login_passwordfile都設置為 “獨占(exclusive)”。我試圖以SYSDBA身份連接到TestDb,但未能成功。下面是我的做法:
$sqlplus /nolog
SQL> conn sys/change_on_install@testdb
Connected.(已連接)
SQL> select * from v$pwfile_users;
username sysdb sysop
internal true true
sys true true
SQL> conn sys/change_on_install@testdb as
sysdba
ERROR(錯誤)
ORA-01017: invalid username/password; logon
denied(無效的用戶名/口令,登錄被拒絕)
Warning: You are on longer connected to
ORACLE(警告:你已經與ORACLE斷開連接)
我為什么不能以SYSDBA身份連接到TestDb?
Oracle數據庫無效的用戶名口令登錄被拒絕
通常Oracle中的SYS口令與INTERNAL口令是同步的,SYS口令存儲於口令文件中。在上述情況下你建立了包含有一個口令的口令文件,而不是使用缺省的 “change_on_install,”這就是問題之所在。
希望下面的方法對你有所幫助。首先,建立一個口令文件,其中包含一個口令,這個口令不要與系統口令匹配:
$ orapwd file=orapw password=foobar
entries=40
然后,進入服務器,啟動數據庫:
$ svrmgr
SVRMGR> connect internal
Connected.(已連接)
SVRMGR> startup
ORACLE instance started.(ORACLE 實例已啟動)
Total System Global Area (系統全局區域大小)
193073136 bytes
Fixed Size (固定大小)
69616 bytes
Variable Size (可變大小)
141639680 bytes
Database Buffers (數據庫緩沖區)
45056000 bytes
Redo Buffers (重做緩沖區)
6307840 bytes
Database mounted. (數據庫已加載)
Database opened.數據庫已打開。
現在使用SYS用戶的口令,以SYS身份連接:
SVRMGR> connect sys/change_on_install@ora81
Connected.(已連接)
成功了。現在試着以SYSDBA身份連接:
SVRMGR> connect sys/change_on_install@ora81
as sysdba;
ORA-01017: invalid username/password; logon
denied(無效的用戶名/口令;登錄被拒絕)
這里出現了你所說的錯誤。你的SYS口令為:change_on_install,但口令文件中的口令卻是foobar。SYS用戶是專用的,以SYSDBA身份連接就像是以INTERNAL連接,你必須使用口令文件中的口令。試試這樣做:
SVRMGR— connect sys/foobar@ora81 as sysdba;
Connected.(已連接)
並不是每個人都需要使用口令文件中的口令;用戶需要使用他們自己的口令。通過授權SYSDBA給SCOTT,你就可以明白這一點:
SVRMGR> grant sysdba to scott;
Statement processed.(已處理)
這個命令將SCOTT以SCOTT的憑證加入到口令文件中。如果你改變了SCOTT的口令,口令文件也會自動同步改變。現在,你可以試試以SYSDBA身份連接SCOTT了:
SVRMGR> connect scott/tiger@ora81 as sysdba;
Connected.(已連接)
一切正常。現在可以使用ALTER USER 命令來改變SYS用戶的口令。
SVRMGR> alter user sys identified by
change_on_install;
Statement processed.(已成功更改)
SVRMGR> connect sys/change_on_install@ora81
as sysdba;
Connected.(已連接)
你還可以用change_on_install,因為改變SYS用戶口令將同時改變口令文件中的口令。當你建立了口令文件后,Oracle數據庫在其中放入兩個賬號:SYS和INTERNAL,並將你在命令行中提供的口令作為這兩個賬戶的口令。當你改變數據庫中的SYS用戶口令時,數據庫將沖掉口令文件中的SYS和INTERNAL口令。下面操作將顯示口令foobar已經是無效的了:
SVRMGR> connect sys/foobar@ora81 as sysdba;
ORA-01017: invalid username/password; logon
denied(無效的用戶名/口令,登錄被拒絕)