命令orapwd的学习
在CMD里輸入命令如下:
C:\Documents and Settings\Administrator>orapwd
Usage: orapwd file=<fname> password=<password> entries=<users>
where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA and OPERs (opt),
There are no spaces around the equal-to (=) character.
例如: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ù) 超過這個(gè)值只能重建口令文件,增大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)證身份的。口令文件中存放sysdba/sysoper 用戶的用戶名及口令,允許用戶通過口令文件驗(yàn)證,在數(shù)據(jù)庫未啟動之前登陸,從而啟動數(shù)據(jù)庫。如果沒有口令文件,在數(shù)據(jù)庫未啟動之前就只能通過操作系統(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、口令文件損壞或者丟失怎么辦?
口令文件就是sysdba/sysoper用戶的唯一口令文件,丟了就進(jìn)不來,不管數(shù)據(jù)庫啟動沒有。連接報(bào)錯(cuò)...
SQL> connect sys/oracle@fzlgfm as sysdba
ERROR:
ORA-01031: insufficient privileges
只能用操作系統(tǒng)級權(quán)限驗(yàn)證登陸,即oracle/oracle登陸,然后orapwd重建口令文件:
orapwd file=orcl.ora password=orclsys entries=2
Orapwd命令第二個(gè)參數(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會自動在口令文件中增加一個(gè)條目,并且把密碼copy過來。
察看口令文件內(nèi)容的方法:
select * from v$pwfile_users;
SQL> grant sysdba to scott;
Grant succeeded
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER
--------------- ------- -------
SYS TRUE TRUE
SCOTT TRUE FALSE
4、沒有口令文件是否可以啟動數(shù)據(jù)庫?
可以。9i及以下mount過程中會報(bào)錯(cuò),然后手動open就可以了。因?yàn)橹灰帽镜仳?yàn)證用戶照樣可以做sysdba的事情,沒有理由讓數(shù)據(jù)庫啟動不了。10g已經(jīng)不會報(bào)錯(cuò)了。
5、沒有口令文件為什么是mount階段報(bào)錯(cuò)而不是nomount階段報(bào)錯(cuò)?
因?yàn)橹挥械搅薬lter 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,則一個(gè)實(shí)例專用;
remote_login_passwordfile = SHARE則可以多個(gè)實(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.
意思是說多個(gè)數(shù)據(jù)庫可以共享一個(gè)口令文件,但是只可以識別一個(gè)用戶: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',即兩個(gè)開關(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ù)。并且這兩個(gè)開關(guān)互不矛盾,可以同時(shí)打開同時(shí)關(guān)閉或者只開一個(gè)。
轉(zhuǎn)載于:https://www.cnblogs.com/huangjingzhou/articles/2294512.html
總結(jié)
以上是生活随笔為你收集整理的命令orapwd的学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eclipse如何连接SQL Serve
- 下一篇: SQL SERVER 高级数据库脚本编程