1. 程式人生 > >orapwSID密碼檔案的使用示例

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

表示多個例項共享一個口令檔案,預設情況下,win下口令檔案的格式是pwdsid.ora,unix下的格式是orapwSID(大小寫敏感),

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
已連線到空閒例程。