orapwSID密碼檔案的使用示例
如啟用ORACLE的OS認證預設是OS認證,則從伺服器登陸時不需要驗證(使用者需要在DBA使用者組中)
在ORACLE啟動過程中,會在$ORACLE_HOME、DATABASE下查詢 口令檔案,查詢順序是orapwSID檔案,如果不存在則查詢orapw檔案,如果orapw不存在,報錯。
是否使用口令檔案,是通過oracle提供的一個引數remote_login_passwordfile來控制的,remote_login_passwordfile有none,shared,exclusive3個值,none表示不使用口令檔案,exclusive表示例項獨佔使用口令檔案,也就是各自例項使用單獨的口令檔案,shared
LINUX下尋找口令檔案的順序是:
oracle_home\dbs\orapwSID,如果找不到,會在dbs目錄想尋找orapw檔案(LINUX下實驗驗證過,注意密碼檔名是orapwSID,而不是orapwSID.ora),10g後open資料庫時不在檢查口令檔案。win下如果在oracle_home/database/下找不到pwdsid.ora檔案,不會尋找任何檔案。
這裡所說的win下如果找不到PWDsid.ora檔案之後不會尋找任何檔案其實是相對unix下如果找不到orapwSID檔案之後會尋找orapw檔案而言的。其實win下尋找口令檔案也是有順序的。尋找順序是這樣的:首先尋找登錄檔中ora_sid_pwfile環境變數所指向的口令檔案,其次尋找ora_pwfile執行的口令檔案,最後才尋找$ORACLE_HOME/database/PWDsid.ora
建立密碼檔案後要重新啟動資料庫,因為記憶體中保留有原來的密碼
例子:
建立密碼檔案,指定密碼是oraclebys,force=y是如已經存放指定名字的密碼檔案,則覆蓋。
file= password=p 這兩個引數是強制性的,entries是可以儲存的記錄個數,每個具有sysdba或sysoper許可權的使用者算一個記錄,
如果一個使用者同時具有sysdba和sysoper的許可權,則只佔一個記錄。
注意:WINDOWS下密碼檔案格式為:PWDorcl.ORA LINUX下為orapwbysrac1
C:\Documentsand Settings\Administrator>orapwd file=G:\dbhome_1\database\PWDorcl.ORA password=oraclebys entries=3 force=y
修改引數啟用密碼檔案
首先需要修改引數,才能使用口令檔案。不然如禁用OS認證,此引數又不對,無法STARTUP資料庫,因為不能以SYSDBA身份連線到空閒程序。
SQL>show parameter pass
NAME TYPE VALUE
----------------------------------------------- ------------------------------
remote_login_passwordfile string NONE
SQL>alter system set remote_login_passwordfile=exclusive scope=spfile;
系統已更改。
SQL>shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE例程已經關閉。
此時,修改OS認證方式為NONE。下面是使用口令檔案啟動的:
SQL>startup;
ORACLE例程已經啟動。
TotalSystem Global Area 535662592 bytes
FixedSize 1375792 bytes
VariableSize 322961872 bytes
DatabaseBuffers 205520896 bytes
RedoBuffers 5804032 bytes
資料庫裝載完畢。
資料庫已經開啟。
驗證是否通過口令檔案啟動???
事實是隻能驗證是否存在PWFILE及PEFILE裡有哪些使用者及許可權。
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS TRUE TRUE FALSE
SQL>shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE例程已經關閉。
SQL>startup;
ORA-01031:insufficient privileges
SQL>conn sys/oraclebys as sysdba
已連線到空閒例程。