在Oracle數據庫系統中用戶如果要以特權用戶身份登錄Oracle數據庫可以有兩種身份驗證的方法即使用與操作系統集成的身份驗證或使用Oracle數據庫的密碼文件進行身份驗證因此管理好密碼文件對於控制授權用戶從遠端或本機登錄Oracle數據庫系統執行數據庫管理工作具有重要的意義
Oracle數據庫的密碼文件存放有超級用戶INTERNAL/SYS的口令及其他特權用戶的用戶名/口令它一般存放在ORACLE_HOME\DATABASE目錄下
創建密碼文件
在使用Oracle Instance Manager創建一數據庫實例的時侯在ORACLE_HOME\DATABASE目錄下還自動創建了一個與之對應的密碼文件文件名為PWDSIDORA其中SID代表相應的Oracle數據庫系統標識符此密碼文件是進行初始數據庫管理工作的基矗在此之後管理員也可以根據需要使用工具ORAPWDEXE手工創建密碼文件命令格式如下
C:\ >ORAPWDFILE=< FILENAME >PASSWORD =< PASSWORD > ENTRIES=< MAX_USERS >
各命令參數的含義為
FILENAME密碼文件名;
PASSWORD設置INTERNAL/SYS帳號的口令
MAX_USERS密碼文件中可以存放的最大用戶數對應於允許以SYSDBA/SYSOPER權限登錄數據庫的最大用戶數由於在以後的維護中若用戶數超出了此限制則需要重建密碼文件所以此參數可以根據需要設置得大一些
有了密碼文件之後需要設置初始化參數REMOTE_LOGIN_PASSWORDFILE來控制密碼文件的使用狀態
設置初始化參數
在Oracle數據庫實例的初始化參數文件中此參數控制著密碼文件的使用及其狀態它可以有以下幾個選項
NONE指示Oracle系統不使用密碼文件特權用戶的登錄通過操作系統進行身份驗證
EXCLUSIVE指示只有一個數據庫實例可以使用此密碼文件只有在此設置下的密碼文件可以包含有除INTERNAL/SYS以外的用戶信息即允許將系統權限SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用戶
SHARED指示可有多個數據庫實例可以使用此密碼文件在此設置下只有INTERNAL/SYS帳號能被密碼文件識別即使文件中存有其他用戶的信息也不允許他們以SYSOPER/SYSDBA的權限登錄此設置為缺省值
在REMOTE_LOGIN_PASSWORDFILE參數設置為EXCLUSIVESHARED情況下Oracle系統搜索密碼文件的次序為在系統注冊庫中查找ORA_SID_PWFILE參數值(它為密碼文件的全路徑名);若未找到則查找ORA_PWFILE參數值;若仍未找到則使用缺省值ORACLE_HOME\DATABASE\PWDSIDORA;其中的SID代表相應的Oracle數據庫系統標識符
向密碼文件中增加刪除用戶
當初始化參數REMOTE_LOGIN_PASSWORDFILE設置為EXCLUSIVE時系統允許除INTERNAL/SYS以外的其他用戶以管理員身份從遠端或本機登錄到Oracle數據庫系統執行數據庫管理工作;這些用戶名必須存在於密碼文件中系統才能識別他們由於不管是在創建數據庫實例時自動創建的密碼文件還是使用工具ORAPWDEXE手工創建的密碼文件都只包含INTERNAL/SYS用戶的信息;為此在實際操作中可能需要向密碼文件添加或刪除其他用戶帳號
由於僅被授予SYSOPER/SYSDBA系統權限的用戶才存在於密碼文件中所以當向某一用戶授予或收回SYSOPER/SYSDBA系統權限時他們的帳號也將相應地被加入到密碼文件或從密碼文件中刪除由此向密碼文件中增加或刪除某一用戶實際上也就是對某一用戶授予或收回SYSOPER/SYSDBA系統權限
要進行此項授權操作需使用SYSDBA權限(或INTERNAL帳號)連入數據庫且初始化參數REMOTE_LOGIN_PASSWORDFILE的設置必須為EXCLUSIVE具體操作步驟如下
創建相應的密碼文件;
設置初始化參數REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;
使用SYSDBA權限登錄 CONNECTSYS/internal_user_passswordASSYSDBA;
啟動數據庫實例並打開數據庫;
創建相應用戶帳號對其授權(包括SYSOPER和SYSDBA) 授予權限GRANTSYSDBATOuser_name;
收回權限REVOKESYSDBAFROMuser_name現在這些用戶可以以管理員身份登錄數據庫系統了
使用密碼文件登錄
有了密碼文件後用戶就可以使用密碼文件以SYSOPER/SYSDBA權限登錄Oracle數據庫實例了注意初始化參數REMOTE_LOGIN_PASSWORDFILE應設置為EXCLUSIVE或SHARED任何用戶以SYSOPER/SYSDBA的權限登錄後將位於SYS用戶的Schema之下以下為兩個登錄的例子
以管理員身份登錄
假設用戶scott已被授予SYSDBA權限則他可以使用以下命令登錄
CONNECTscott/tigerASSYSDBA
以INTERNAL身份登錄
CONNECTINTERNAL/INTERNAL_PASSWORD
保護密碼文件
查看密碼文件中的成員
可以通過查詢視圖V$PWFILE_USERS來獲取擁有SYSOPER/SYSDBA系統權限的用戶的信息表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此用戶是否擁有相應的權限這些用戶也就是相應地存在於密碼文件中的成員
修改密碼文件的狀態
密碼文件的狀態信息存放於此文件中當它被創建時它的缺省狀態為SHARED可以通過改變初始化參數REMOTE_LOGIN_PASSWORDFILE的設置改變密碼文件的狀態當啟動數據庫事例時Oracle系統從初始化參數文件中讀取REMOTE_LOGIN_PASSWORDFILE參數的設置;當加載數據庫時系統將此參數與口令文件的狀態進行比較如果不同則更新密碼文件的狀態若計劃允許從多台客戶機上啟動數據庫實例由於各客戶機上必須有初始化參數文件所以應確保各客戶機上的初始化參數文件的一致性以避免意外地改變了密碼文件的狀態造成數據庫登陸的失敗
修改密碼文件的存儲位置
密碼文件的存放位置可以根據需要進行移動但作此修改後應相應修改系統注冊庫有關指向密碼文件存放位置的參數或環境變量的設置
刪除密碼文件
在刪除密碼文件前應確保當前運行的各數據庫實例的初始化參數REMOTE_LOGIN_PASSWORDFILE皆設置為NONE在刪除密碼文件後若想要以管理員身份連入數據庫的話則必須使用操作系統驗證的方法進行登錄
From:http://tw.wingwit.com/Article/program/Oracle/201311/16762.html