Oracle的操作系統身份認證
oraclelogin數據庫遠程登錄authenticationos
sqlnetauthentication_services=(NTS)在$ORACLE_HOME/network/admin/sqlnetora中
NTS特指的是windows系統或者設為all這兩種情況都允許操作系統認證
如果在unix下如果沒有設置sqlnetauthentication_services默認就是操作系統認證!或者設為all也允許操作系統認證
參數SQLNETAUTHENTICATION_SERVICES= (NONENTS)表明用戶連接Oracle服務器時使用哪種驗證方式
NONE表示Oracle數據庫身份驗證NTS表示操作系統身份驗證兩種方式可以並用
數據庫用sysdba登錄的驗證有兩種方式一種是通過os認證一種是通過密碼文件驗證;登錄方式有兩種一種是在數據庫主機直接登錄(用os認證的方式)一種是通過網絡遠程登錄;需要設置的參數有兩個一個是SQLNETAUTHENTICATION_SERVICES一個是REMOTE_LOGIN_PASSWORDFILE
os認證如果啟用了os認證以sysdba登錄那麼我們只要用oracle軟件的安裝用戶就能登錄sqlplus / as sysdba如果我們要禁用os認證只利用密碼文件登錄我們首先要有一個密碼文件
orapwd file=C:/oracle/product//db_/database/PWDoralocalora password=maximo entries=;
然後我們要把$ORACLE_HOME/network/admin/sqlnetora中設置
SQLNETAUTHENTICATION_SERVICES= none
注意一下密碼文件只在數據庫啟動的時候加載進去一旦加載進去密碼文件就脫離了oracle管理所以我們用orapwd新建密碼文件後裡面指定的密碼要在數據重啟後才能生效
至此我們已經實現不用os認證(sqlplus / as sysdba的方式登錄不了)那麼我們怎麼限制網絡方面利用sysdba遠程登錄呢?我們可以設置初始化文件中的REMOTE_LOGIN_PASSWORDFILE=none
注意當REMOTE_LOGIN_PASSWORDFILE=none時這個參數生效需要重啟數據庫並且一旦啟用這個參數將使用操作系統認證不使用口令文件因此如果REMOTE_LOGIN_PASSWORDFILE=none且SQLNETAUTHENTICATION_SERVICES= none這個時候數據庫是無法登錄的
alter system set REMOTE_LOGIN_PASSWORDFILE=none scope=spfile;
()REMOTE_LOGIN_PASSWORDFILE=none且SQLNETAUTHENTICATION_SERVICES= none
oracle安裝用戶本地sqlplus / as sysdba無法登錄
非oracle安裝用戶本機sqlplus sys/change_on_install as sysdba無法登錄
非oracle安裝用戶遠程sqlplus / as sysdba_on_install@sid as sysdba無法登錄
()REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNETAUTHENTICATION_SERVICES= none
oracle安裝用戶本地sqlplus / as sysdba無法登錄
非oracle安裝用戶本機sqlplus sys/change_on_install as sysdba能登錄
非oracle安裝用戶遠程sqlplus / as sysdba_on_install@sid as sysdba能登錄
()REMOTE_LOGIN_PASSWORDFILE=none且SQLNETAUTHENTICATION_SERVICES= (NTS)
oracle安裝用戶本地sqlplus / as sysdba能登錄
非oracle安裝用戶本機sqlplus sys/change_on_install as sysdba無法登錄
非oracle安裝用戶遠程sqlplus / as sysdba_on_install@sid as sysdba無法登錄
()REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNETAUTHENTICATION_SERVICES= (NTS)
oracle安裝用戶本地sqlplus / as sysdba能登錄
非oracle安裝用戶本機sqlplus sys/change_on_install as sysdba能登錄
非oracle安裝用戶遠程sqlplus / as sysdba_on_install@sid as sysdba能登錄
Oracle REMOTE_LOGIN_PASSWORDFILE 參數
設置初始化參數 REMOTE_LOGIN_PASSWORDFILE
在 Oracle 數據庫實例的初始化參數文件中此參數控制著密碼文件的使用及其狀態它可以有以下幾個選項
NONE 指示 Oracle 系統不使用密碼文件特權用戶的登錄通過操作系統進行身份驗證;
EXCLUSIVE 指示只有一個數據庫實例可以使用此密碼文件只有在此設置下的密碼文件可以包含有除 SYS 以外的用戶信息即允許將系統權限 SYSOPER /SYSDBA 授予除 SYS 以外的其他用戶此設置oracle i中為缺省值有朋友說是shared其實不然
SHARED 指示可有多個數據庫實例可以使用此密碼文件在此設置下只有 SYS 帳號能被密碼文件識別即使文件中存有其他用戶的信息也不允許他們以 SYSOPER /SYSDBA 的權限登錄
在 REMOTE_LOGIN_PASSWORDFILE 參數設置為 EXCLUSIVE SHARED 情況下 Oracle 系統搜索密碼文件的次序為在系統注冊庫中查找 ORA_SID_PWFILE 參數值(它為密碼文件的全路徑名);若未找到則查找 ORA_PWFILE 參數值;若仍未找到則使用缺省值 ORACLE_HOME/DATABASE/PWDSIDORA ;其中的 SID 代表相應的 Oracle 數據庫系統標識符
總結
$ORACLE_HOME/network/admin/sqlnetora中的AUTHENTICATION_SERVICES參數
在windows下SQLNETAUTHENTICATION_SERVICES必須設置為NTS或者ALL才能使用OS認證;不設置或者設置為其他任何值都不能使用OS認證
在linux下在SQLNETAUTHENTICATION_SERVICES的值設置為ALL或者不設置的情況下OS驗證才能成功;設置為其他任何值都不能使用OS認證
spfile中的REMOTE_LOGIN_PASSWORDFILE參數
值為exclusive時遠程能作為sysdba身份登錄
值為none時以sysdba身份無法登錄
oracle的sys用戶密碼怎麼修改
一忘記除SYSSYSTEM用戶之外的用戶的登錄密碼
用SYS (或SYSTEM)用戶登錄: CONN SYS/PASS_WORD AS SYSDBA;
使用如下語句修改用戶的密碼: ALTER USER user_name IDENTIFIED BY newpass;
注意密碼不能全是數字並且不能是數字開頭否則會出現ORA: 口令缺失或無效
二忘記SYS用戶或者是SYSTEM用戶的密碼
如果是忘記SYSTEM用戶的密碼可以用SYS用戶登錄然後用ALTER USER 命令修改密碼
CONN SYS/PASS_WORD AS SYSDBA;
ALTER USER SYSTEM IDENTIFIED BY newpass;
如果是忘記SYS用戶的密碼可以用SYSTEM用戶登錄然後用ALTER USER 命令修改密碼
CONN SYSTEM/PASS_WORD ;
ALTER USER SYSTEM IDENTIFIED BY newpass;
三如果SYSSYSTEM用戶的密碼都忘記或是丟失
可以使用ORAPWDEXE 工具修改密碼
開始菜單>運行>輸入CMD打開命令提示符窗口輸入如下命令
orapwd file=D:\oracleg\database\pwdctcsysora password=newpass
這個命令重新生成了數據庫的密碼文件密碼文件的位置在ORACLE_HOME目錄下的\database目錄下
這個密碼是修改sys用戶的密碼除sys其他用戶的密碼不會改變
不過Oracle提供了兩種驗證方式一種是OS驗證另一種密碼文件驗證方式如果是第一種方式用以下方法修改密碼
sqlplus /nolog;
connect / as sysdba
alter user sys identified by ;
alter user system identified by ;
如果是第二種方法就用上述方式修改也可以下方法修改密碼
orapwd file=pwdxxxora password=你設定的新密碼 entries=
設定完後重新啟動服務再次登陸就可以了
oracle g
在本機安裝完Oracle以後不記得sys用戶的密碼了采用如下方法可以修改密碼
打開cmd輸入sqlplus /nolog回車;輸入conn / as sysdba;輸入alter user sys identified by 新密碼注意新密碼最好以字母開頭否則可能出現錯誤Ora有了這個方法後只要自己對oracle服務器有管理員權限不記得密碼的時候就可以隨意修改密碼了
在命令行執行如下命令sqlplus /@服務名 as sysdba然後在sqlplus中alter user sys identified by 新密碼;
alter user system identified by 新密碼;
運行到C盤根目錄
)輸入SET ORACLE_SID = 你的SID名稱
)輸入sqlplus/nolog
)輸入connect/as sysdba
)輸入alert user sys identified by sys
)輸入alert user system identified by system
)更改完成密碼是Oracle數據庫初始密碼
首先在CMD下輸入SQLPLUS/NOLOG然後再在出來的界面中打入CONN/AS SYSDBA這樣就會以本地系統登錄的用戶為信任用戶進入數據庫的操作解決這個問題的方式有兩種一個是ALTER USER (USERNAME) IDENTIFIED BY 密碼;這個是可以改變USERNAME的密碼當然這個USERNAME必須已經存在的
另一種是CREATE USER (USERNAME) IDENTIFIED BY 密碼;改變用戶權限的命令是GRANT ROLES TO (USERNAME);以上種方法都是針對ORACLE I的版本
用orapwdexe命令可以修改命令
orapwd file=/oracle/pwdsidora password=這個命令是修改sys用戶的密碼你把生成的文件覆蓋原來的密碼文件除sys其他用戶的密碼不會改變
su oracle
sqlplus /nolog
conn / as sysdba
startup (如果數據庫不是處於啟動狀態則啟動)
alter user sys identified by
然後就可以使用sys用戶密碼登陸了
操作系統認證方式
conn / as sysdba
alter user sys identified by xxx
From:http://tw.wingwit.com/Article/program/Oracle/201311/16741.html