??? 關(guān)鍵詞: Oracle 數(shù)據(jù)庫(kù) 密碼文件
??? 在 Oracle 數(shù)據(jù)庫(kù)系統(tǒng)中,用戶(hù)如果要以特權(quán)用戶(hù)身份( INTERNAL / SYSDBA / SYSOPER )登錄 Oracle 數(shù)據(jù)庫(kù)可以有兩種身份驗(yàn)證的方法:即使用與操作系統(tǒng)集成的身份驗(yàn)證或使用 Oracle 數(shù)據(jù)庫(kù)的密碼文件進(jìn)行身份驗(yàn)證。因此,管理好密碼文件,對(duì)于控制授權(quán)用戶(hù)從遠(yuǎn)端或本機(jī)登錄 Oracle 數(shù)據(jù)庫(kù)系統(tǒng),執(zhí)行數(shù)據(jù)庫(kù)管理工作,具有重要的意義。
??? Oracle 數(shù)據(jù)庫(kù)的密碼文件存放有超級(jí)用戶(hù) INTERNAL / SYS 的口令及其他特權(quán)用戶(hù)的用戶(hù)名/口令,它一般存放在 ORACLE_HOME \ DATABASE 目錄下。
? 一、 密碼文件的創(chuàng)建:
??? 在使用 Oracle Instance Manager 創(chuàng)建一數(shù)據(jù)庫(kù)實(shí)例的時(shí)侯,在 ORACLE_HOME \ DATABASE 目錄下還自動(dòng)創(chuàng)建了一個(gè)與之對(duì)應(yīng)的密碼文件,文件名為 PWDSID.ORA ,其中 SID 代表相應(yīng)的 Oracle 數(shù)據(jù)庫(kù)系統(tǒng)標(biāo)識(shí)符。此密碼文件是進(jìn)行初始數(shù)據(jù)庫(kù)管理工作的基礎(chǔ)。在此之后,管理員也可以根據(jù)需要,使用工具 ORAPWD.EXE 手工創(chuàng)建密碼文件,命令格式如下:
C: \ >ORAPWD FILE= < FILENAME > PASSWORD
= < PASSWORD > ENTRIES=< MAX_USERS >
?
各命令參數(shù)的含義為:
FILENAME :密碼文件名;
PASSWORD :設(shè)置 INTERNAL / SYS 帳號(hào)的口令;
MAX_USERS :密碼文件中可以存放的最大用戶(hù)數(shù),對(duì)應(yīng)于允許以 SYSDBA / SYSOPER 權(quán)限登錄數(shù)據(jù)庫(kù)的最大用戶(hù)數(shù)。由于在以后的維護(hù)中,若用戶(hù)數(shù)超出了此限制,則需要重建密碼文件,所以此參數(shù)可以根據(jù)需要設(shè)置得大一些。
有了密碼文件之后,需要設(shè)置初始化參數(shù) REMOTE_LOGIN_PASSWORDFILE 來(lái)控制密碼文件的使用狀態(tài)。
? 二、 設(shè)置初始化參數(shù) REMOTE_LOGIN_PASSWORDFILE :
??? 在 Oracle 數(shù)據(jù)庫(kù)實(shí)例的初始化參數(shù)文件中,此參數(shù)控制著密碼文件的使用及其狀態(tài)。它可以有以下幾個(gè)選項(xiàng):
NONE :指示 Oracle 系統(tǒng)不使用密碼文件,特權(quán)用戶(hù)的登錄通過(guò)操作系統(tǒng)進(jìn)行身份驗(yàn)證;
EXCLUSIVE :指示只有一個(gè)數(shù)據(jù)庫(kù)實(shí)例可以使用此密碼文件。只有在此設(shè)置下的密碼文件可以包含有除 INTERNAL / SYS 以外的用戶(hù)信息,即允許將系統(tǒng)權(quán)限 SYSOPER / SYSDBA 授予除 INTERNAL / SYS 以外的其他用戶(hù)。
SHARED :指示可有多個(gè)數(shù)據(jù)庫(kù)實(shí)例可以使用此密碼文件。在此設(shè)置下只有 INTERNAL / SYS 帳號(hào)能被密碼文件識(shí)別,即使文件中存有其他用戶(hù)的信息,也不允許他們以 SYSOPER / SYSDBA 的權(quán)限登錄。此設(shè)置為缺省值。
??? 在 REMOTE_LOGIN_PASSWORDFILE 參數(shù)設(shè)置為 EXCLUSIVE 、 SHARED 情況下, Oracle 系統(tǒng)搜索密碼文件的次序?yàn)椋涸谙到y(tǒng)注冊(cè)庫(kù)中查找 ORA_SID_PWFILE 參數(shù)值(它為密碼文件的全路徑名);若未找到,則查找 ORA_PWFILE 參數(shù)值;若仍未找到,則使用缺省值 ORACLE_HOME \ DATABASE \ PWDSID.ORA ;其中的 SID 代表相應(yīng)的 Oracle 數(shù)據(jù)庫(kù)系統(tǒng)標(biāo)識(shí)符。
三、 向密碼文件中增加、刪除用戶(hù):
??? 當(dāng)初始化參數(shù) REMOTE_LOGIN_PASSWORDFILE 設(shè)置為 EXCLUSIVE 時(shí),系統(tǒng)允許除 INTERNAL / SYS 以外的其他用戶(hù)以管理員身份從遠(yuǎn)端或本機(jī)登錄到 Oracle 數(shù)據(jù)庫(kù)系統(tǒng),執(zhí)行數(shù)據(jù)庫(kù)管理工作;這些用戶(hù)名必須存在于密碼文件中,系統(tǒng)才能識(shí)別他們。由于不管是在創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例時(shí)自動(dòng)創(chuàng)建的密碼文件,還是使用工具 ORAPWD.EXE 手工創(chuàng)建的密碼文件,都只包含 INTERNAL / SYS 用戶(hù)的信息;為此,在實(shí)際操作中,可能需要向密碼文件添加或刪除其他用戶(hù)帳號(hào)。
??? 由于僅被授予 SYSOPER / SYSDBA 系統(tǒng)權(quán)限的用戶(hù)才存在于密碼文件中,所以當(dāng)向某一用戶(hù)授予或收回 SYSOPER / SYSDBA 系統(tǒng)權(quán)限時(shí),他們的帳號(hào)也將相應(yīng)地被加入到密碼文件或從密碼文件中刪除。由此,向密碼文件中增加或刪除某一用戶(hù),實(shí)際上也就是對(duì)某一用戶(hù)授予或收回 SYSOPER / SYSDBA 系統(tǒng)權(quán)限。
??? 要進(jìn)行此項(xiàng)授權(quán)操作,需使用 SYSDBA 權(quán)限(或 INTERNAL 帳號(hào))連入數(shù)據(jù)庫(kù),且初始化參數(shù) REMOTE_LOGIN_PASSWORDFILE 的設(shè)置必須為 EXCLUSIVE 。具體操作步驟如下:
創(chuàng)建相應(yīng)的密碼文件;
設(shè)置初始化參數(shù) REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE ;
使用 SYSDBA 權(quán)限登錄:CONNECT SYS / internal_user_passsword AS SYSDBA ;
啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例并打開(kāi)數(shù)據(jù)庫(kù);
創(chuàng)建相應(yīng)用戶(hù)帳號(hào),對(duì)其授權(quán)(包括 SYSOPER 和 SYSDBA ):
授予權(quán)限: GRANT SYSDBA TO user_name ;
收回權(quán)限: REVOKE SYSDBA FROM user_name ;
現(xiàn)在這些用戶(hù)可以以管理員身份登錄數(shù)據(jù)庫(kù)系統(tǒng)了。
? 四、 使用密碼文件登錄:
??? 有了密碼文件后,用戶(hù)就可以使用密碼文件以 SYSOPER / SYSDBA 權(quán)限登錄 Oracle 數(shù)據(jù)庫(kù)實(shí)例了,注意初始化參數(shù) REMOTE_LOGIN_PASSWORDFILE 應(yīng)設(shè)置為 EXCLUSIVE 或 SHARED 。任何用戶(hù)以 SYSOPER / SYSDBA 的權(quán)限登錄后,將位于 SYS 用戶(hù)的 Schema 之下,以下為兩個(gè)登錄的例子:
1. 以管理員身份登錄:
假設(shè)用戶(hù) scott 已被授予 SYSDBA 權(quán)限,則他可以使用以下命令登錄:
CONNECT scott / tiger AS SYSDBA
?
2. 以 INTERNAL 身份登錄:
CONNECT INTERNAL / INTERNAL_PASSWORD
五、密碼文件的維護(hù):
1. 查看密碼文件中的成員:
??? 可以通過(guò)查詢(xún)視圖 V$PWFILE_USERS 來(lái)獲取擁有 SYSOPER / SYSDBA 系統(tǒng)權(quán)限的用戶(hù)的信息,表中 SYSOPER / SYSDBA 列的取值 TRUE / FALSE 表示此用戶(hù)是否擁有相應(yīng)的權(quán)限。這些用戶(hù)也就是相應(yīng)地存在于密碼文件中的成員。
2. 擴(kuò)展密碼文件的用戶(hù)數(shù)量:
??? 當(dāng)向密碼文件添加的帳號(hào)數(shù)目超過(guò)創(chuàng)建密碼文件時(shí)所定的限制(即 ORAPWD.EXE 工具的 MAX_USERS 參數(shù))時(shí),為擴(kuò)展密碼文件的用戶(hù)數(shù)限制,需重建密碼文件,具體步驟如下:
a) 查詢(xún)視圖 V$PWFILE_USERS ,記錄下?lián)碛?SYSOPER / SYSDBA 系統(tǒng)權(quán)限的用戶(hù)信息;
b) 關(guān)閉數(shù)據(jù)庫(kù);
c) 刪除密碼文件;
d) 用 ORAPWD.EXE 新建一密碼文件;
e) 將步驟 a 中獲取的用戶(hù)添加到密碼文件中。
3. 修改密碼文件的狀態(tài):
??? 密碼文件的狀態(tài)信息存放于此文件中,當(dāng)它被創(chuàng)建時(shí),它的缺省狀態(tài)為 SHARED 。可以通過(guò)改變初始化參數(shù) REMOTE_LOGIN_PASSWORDFILE 的設(shè)置改變密碼文件的狀態(tài)。當(dāng)啟動(dòng)數(shù)據(jù)庫(kù)事例時(shí), Oracle 系統(tǒng)從初始化參數(shù)文件中讀取 REMOTE_LOGIN_PASSWORDFILE 參數(shù)的設(shè)置;當(dāng)加載數(shù)據(jù)庫(kù)時(shí),系統(tǒng)將此參數(shù)與口令文件的狀態(tài)進(jìn)行比較,如果不同,則更新密碼文件的狀態(tài)。若計(jì)劃允許從多臺(tái)客戶(hù)機(jī)上啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例,由于各客戶(hù)機(jī)上必須有初始化參數(shù)文件,所以應(yīng)確保各客戶(hù)機(jī)上的初始化參數(shù)文件的一致性,以避免意外地改變了密碼文件的狀態(tài),造成數(shù)據(jù)庫(kù)登陸的失敗。
4. 修改密碼文件的 存儲(chǔ) 位置:
??? 密碼文件的存放位置可以根據(jù)需要進(jìn)行移動(dòng),但作此修改后,應(yīng)相應(yīng)修改系統(tǒng)注冊(cè)庫(kù)有關(guān)指向密碼文件存放位置的參數(shù)或環(huán)境變量的設(shè)置。
5. 刪除密碼文件:
??? 在刪除密碼文件前 , 應(yīng)確保當(dāng)前運(yùn)行的各數(shù)據(jù)庫(kù)實(shí)例的初始化參數(shù) REMOTE_LOGIN_PASSWORDFILE 皆設(shè)置為 NONE 。在刪除密碼文件后,若想要以管理員身份連入數(shù)據(jù)庫(kù)的話,則必須使用操作系統(tǒng)驗(yàn)證的方法進(jìn)行登錄。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
