Orapwd 初步認(rèn)識
摘自 http://blog.csdn.net/java3344520/article/details/5672242 今天看到DBA常用工具里有個orapwd,初次相識.在CMD里輸入命令如下: C:/Documents and Settings/Administrator>orapwd where
例如:D:/oracle/ora92/database>orapwd file=orcl.ora password=orclsys entries=2
其中參數(shù)entries的含義是表示口令文件中可以存放的最大用戶數(shù),對應(yīng)于允許以SYSDBA/SYSOPER權(quán)限登錄數(shù)據(jù)庫的最大用戶數(shù),,如果用戶數(shù)超過這個值只能重建口令文件,,增大entries。
file后面可以指定口令文件的全路徑和文件名,,否則創(chuàng)建在當(dāng)前目錄下,。
windows
下oracle默認(rèn)的位置是ora92/database目錄,默認(rèn)的文件名是pwdSID.ora,,對于別的文件名是不認(rèn)的,。linux下oracle
默認(rèn)的位置是$ORACLE_HOME/dbs目錄,默認(rèn)的文件名是orapwSID,,對于別的文件名是不認(rèn)的,。
1、 為什么需要口令文件,? 在數(shù)據(jù)庫沒有啟動之前,,數(shù)據(jù)庫內(nèi)建用戶是無法通過數(shù)據(jù)庫來驗(yàn)證身份的.
2,、口令文件損壞或者丟失怎么辦,? 口令文件就是sysdba/sysoper用戶的唯一口令文件,丟了就進(jìn)不來,,不管數(shù)據(jù)庫啟動沒有,。連接報(bào)錯... SQL> connect sys/oracle@fzlgfm as sysdba
只能用操作系統(tǒng)級權(quán)限驗(yàn)證登陸,即oracle/oracle登陸,,然后orapwd重建口令文件: orapwd file=orcl.ora password=orclsys entries=2 Orapwd命令第二個參數(shù)是指定sys的密碼,,參數(shù)等于什么,sys密碼以后就是什么,。為什么要指定sys密碼,?因?yàn)榭诹钗募锩姹仨氁杏脩裘艽a,否則怎么驗(yàn)證???但此時(shí)數(shù)據(jù)庫如果沒啟動的話就根本取不到sys密碼,所以只能強(qiáng)行指定了,,啟動后數(shù)據(jù)庫里面sys的密碼會被改成此時(shí)指定的,。另外重建口令文件的工作只能由系統(tǒng)驗(yàn)證用戶完成,,或者具有dba權(quán)限的用戶也可以,,其他用戶執(zhí)行orapwd命令都會失敗。
3,、如何把sysdba/sysoper用戶加到口令文件中去,? 再執(zhí)行一遍grant sysdba/sysoper to 用戶 ,oracle會自動在口令文件中增加一個條目,并且把密碼copy過來,。察看口令文件內(nèi)容的方法:select * from v$pwfile_users; SQL> grant sysdba to scott; Grant succeeded SQL> select * from v$pwfile_users; USERNAME SYSDBA SYSOPER
4,、沒有口令文件是否可以啟動數(shù)據(jù)庫? 可以,,9i及以下mount過程中會報(bào)錯,,然后手動open就可以了。因?yàn)橹灰帽镜仳?yàn)證用戶照樣可以做sysdba的事情,,沒有理由讓數(shù)據(jù)庫啟動不了,。10g已經(jīng)不會報(bào)錯了。
5,、沒有口令文件為什么是mount階段報(bào)錯而不是nomount階段報(bào)錯,? 因?yàn)橹挥械搅?/span>alter mount階段才驗(yàn)證各種文件,nomount只讀spfile/pfile創(chuàng)建進(jìn)程,。
6,、修改sysdba/sysoper用戶密碼時(shí),能否同步到口令文件,? 可以同步,。Alter user xxx identified by yyy. 所有密碼忘記都沒關(guān)系,,但至少要記住sys用戶密碼。
7,、spfile/pfile中remote_login_passwordfile是干嘛用的,? 三種設(shè)定模式:可以通過show parameter pass命令查看當(dāng)前模式 remote_login_passwordfile = EXCLUSIVE,則一個實(shí)例專用,; remote_login_passwordfile = SHARE則可以多個實(shí)例共享(用于OPS/RAC環(huán)境),; remote_login_passwordfile = NONE則不啟用口令文件,此時(shí)任何sysdba/sysoper都無法連接進(jìn)來,。
remote_login_passwordfile = shared 我們看一下Oracle9i文檔中的說明: More than one database can use a password file. However, the only user recognized by the password file is SYS. 意思是說多個數(shù)據(jù)庫可以共享一個口令文件,但是只可以識別一個用戶:SYS
在用SPFILE的情況下,,remote_login_passwordfile參數(shù)怎么改呢?SPFILE是不可以強(qiáng)行編輯的,,否則數(shù)據(jù)庫不認(rèn)的,。用alter system set remote_login_passwordfile=none scope=spfile. 改成NONE以后怎么改回來呢? 用os級認(rèn)證登陸,,然后alter system set remote_login_passwordfile=none scope=spfile,,或者直接create spfile from pfile; remote_login_passwordfile=’none’意味著禁用口令文件,有也不能用,。等于可以disable所有sysdba/sysoper,,此時(shí)只能用oracle/oracle用戶來啟動和關(guān)閉數(shù)據(jù)庫,也就是只有os認(rèn)證,,沒有口令文件認(rèn)證,,這就是此參數(shù)的意義—口令文件驗(yàn)證的開關(guān)。
8,、sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES=(NTS/NONE)有什么用,? NTS=NT Security 即采用OS優(yōu)先認(rèn)證登陸,NONE為不可以,,必須采用usr/pwd as sysdba/sysoper 登陸,。這里是操作系統(tǒng)級驗(yàn)證的開關(guān)。如果SQLNET.AUTHENTICATION_SERVICES=(NONE)并且remote_login_passwordfile=’none’,,即兩個開關(guān)都關(guān)閉,,那么神仙也進(jìn)不了數(shù)據(jù)庫,hoho…我指的是sysdba/sysoper用戶,,普通用戶可以照常使用的,。當(dāng)然,有物理權(quán)限的人也除外,,即你可以物理地打開這臺計(jì)算機(jī)操作,。
總結(jié)一下,ORACLE有兩種方式可以認(rèn)證sysdba/sysoper用戶:操作系統(tǒng)級認(rèn)證—dba權(quán)限組(linux/unix)和ORA_DBA組(win);口令文件認(rèn)證,。 兩種方式有各自的開關(guān):sqlnet.ora中AUTHENTICATION_SERVICES參數(shù),;spfile/pfile中remote_login_passwordfile參數(shù)。并且這兩個開關(guān)互不矛盾,,可以同時(shí)打開同時(shí)關(guān)閉或者只開一個,。 OS級認(rèn)證是優(yōu)先于口令文件認(rèn)證的。 [@more@] |
|