Oracle數(shù)據(jù)庫的orapwd命令,,主要用來建立密碼(口令)文件,。 一.查看幫助信息 [oracle@oracle11g dbs]$ orapwd
Usage: orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n> where file - name of password file (required), password - password for SYS will be prompted if not specified at command line, entries - maximum number of distinct DBA (optional), force - whether to overwrite existing file (optional), ignorecase - passwords are case-insensitive (optional), nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only). There must be no spaces around the equal-to (=) character. 二.密碼文件的默認(rèn)位置 1.windows操作系統(tǒng)下 默認(rèn)的位置是$ORACLE_HOME/dbs目錄,,默認(rèn)的文件名是 orapw<ORACLE_SID>,其它的文件名,,都是不認(rèn)的。 三.參數(shù)說明 1. file 必選項(xiàng),,指生成的密碼文件的名稱,。 2.password 必選項(xiàng),指sys用戶的密碼,。 以上這兩個(gè)參數(shù)是必選項(xiàng),, 如果兩個(gè)參數(shù)都缺失,或者缺失file參數(shù),都會(huì)出現(xiàn)幫助信息,,見上面,。 如果缺失password,將會(huì)出現(xiàn)提示信息,,提你輸入SYS用戶的密碼,,輸入之后創(chuàng)建完成: [oracle@oracle11g dbs]$orapwd file=/u01/oracle/product/11.2.0.1/db_home1/dbs/orapworcl
Enter password for SYS: [oracle@oracle11g dbs]$ 3.entries 可選項(xiàng),entries是可以保存的記錄個(gè)數(shù),,每個(gè)具有sysdba或sysoper權(quán)限的用戶算一個(gè)記錄,。如果一個(gè)用戶同時(shí)具有sysdba和sysoper的權(quán)限,則只占一個(gè)記錄,。 對應(yīng)于允許以SYSDBA/SYSOPER權(quán)限登錄數(shù)據(jù)庫的最大用戶數(shù),,如果用戶數(shù) 超過這個(gè)值只能重建密碼(口令)文件,增大entries 數(shù)據(jù)庫啟動(dòng)后可以通過v$pwfile_users來查看密碼文件中記錄的情況,。 SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER -------------------- ---------- ---------- SYS TRUE TRUE SQL> conn /as sysdba Connected. SQL> grant sysdba to scott; Grant succeeded. SQL> select * from v$pwfile_users; USERNAME SYSDBA SYSOPER -------------------- ---------- --------- SYS TRUE TRUE SCOTT TRUE FALSE 4. ignorecase 可選項(xiàng),,密碼忽略大小寫。 四.取消密碼文件認(rèn)證方式 1.刪除密碼文件 2.將初始化參數(shù)設(shè)置成NONE, REMOTE_LOGIN_PASSWORDFILE=NONE. 刪除密碼文件以后,,只有能通過操作系統(tǒng)認(rèn)證的那些sysdba/sysoper身份的用戶才可以登錄,。 五.常見問題 1.為什么需要口令文件? 在數(shù)據(jù)庫沒有啟動(dòng)之前,,數(shù)據(jù)庫內(nèi)建用戶是無法通過數(shù)據(jù)庫來驗(yàn)證身份的,。口令文件中存放sysdba/sysoper 用戶的用戶名及口令,,允許用戶通過口令文件驗(yàn)證,,在數(shù)據(jù)庫未啟動(dòng)之前登陸,從而啟動(dòng)數(shù)據(jù)庫。 如果沒有口令文件,,在數(shù)據(jù)庫未啟動(dòng)之前就只能通過操作系統(tǒng)認(rèn)證,。 使用Rman,很多時(shí)候需要在nomount,,mount等狀態(tài)對數(shù)據(jù)庫進(jìn)行處理,所以通常要求sysdba權(quán)限. 如果屬于本地DBA組,,可以通過操作系統(tǒng) 認(rèn)證登陸。如果是遠(yuǎn)程sysdba登陸,,需要通過passwordfile認(rèn)證,。 2. 沒有口令文件是否可以啟動(dòng)數(shù)據(jù)庫? 可以啟動(dòng),9i及以下mount過程中會(huì)報(bào)錯(cuò),,然后手動(dòng)open就可以了,。10g已經(jīng)不會(huì)報(bào)錯(cuò)了。 5,、沒有口令文件在哪個(gè)階段報(bào)錯(cuò),? 在mount階段報(bào)錯(cuò),因?yàn)橹挥械搅薽ount階段才驗(yàn)證各種文件,nomount只讀spfile/pfile參數(shù)文件并且啟動(dòng)進(jìn)程,。 6,、修改sysdba/sysoper用戶密碼時(shí),能否同步到口令文件,? 可以同步。Alter user xxx identified by yyy 所有密碼忘記都沒關(guān)系,,但至少要記住sys用戶密碼,。 7、spfile/pfile參數(shù)文件中的remote_login_passwordfile參數(shù)有什么用? 三種設(shè)定模式:(可以通過show parameter remote命令查看當(dāng)前模式) 1) remote_login_passwordfile = EXCLUSIVE,,一個(gè)實(shí)例專用;2) remote_login_passwordfile = SHARE,可以多個(gè)實(shí)例共享(比如:RAC環(huán)境); 3) remote_login_passwordfile = NONE,不啟用口令文件,,只能通過操作系統(tǒng)認(rèn)證的用戶連進(jìn)來。 remote_login_passwordfile是靜態(tài)參數(shù),,修改后需要重啟才能生效,。 8、sqlnet.ora中的相關(guān)設(shè)置,? SQLNET.AUTHENTICATION_SERVICES=(NTS), NTS=NT Security 即采用OS優(yōu)先認(rèn)證登陸; SQLNET.AUTHENTICATION_SERVICES=(NONE)為不可以,,必須采用usr/pwd as sysdba/sysoper 登陸。 這里是操作系統(tǒng)級(jí)驗(yàn)證的開關(guān),。 如果SQLNET.AUTHENTICATION_SERVICES=(NONE),并且 remote_login_passwordfile='none',,即兩個(gè)開關(guān)都關(guān)閉,那么任何用戶也進(jìn)不來,。 六.總結(jié): ORACLE有兩種方式可以認(rèn)證sysdba/sysoper用戶: 1) 操作系統(tǒng)級(jí)認(rèn)證-dba權(quán)限組(linux /unix)和ORA_DBA組(win) 2) 口令文件認(rèn)證,。 兩種方式有各自的開關(guān): 1) sqlnet.ora中AUTHENTICATION_SERVICES參數(shù) 2) spfile/pfile中 remote_login_passwordfile參數(shù)。 并且這兩個(gè)開關(guān)互不矛盾,可以同時(shí)打開同時(shí)關(guān)閉或者只開一個(gè),。 |
|