[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 數據庫 > Oracle > 正文
Oracle數據庫密碼文件的使用和維護
本文出自: (2001-06-25 12:10:00)
  在Oracle數據庫系統中,用戶如果要以特權用戶身份(INTERNAL/SYSDBA/SYSOPER)登錄Oracle
數據庫可以有兩種身份驗証的方法:即使用與操作系統集成的身份驗証或使用Oracle數據庫的密碼文件
進行身份驗証。因此,管理好密碼文件,對控制授權用戶從遠端或本機登錄Oracle數據庫系統,執行
數據庫管理工作,具有重要的意義。

  Oracle數據庫的密碼文件存放有超級用戶INTERNAL/SYS的口令及其他特權用戶的用戶名/口令,
它一般存放在ORACLE_HOME\DATABASE目錄下。

    一、 密碼文件的創建:

  在使用Oracle Instance Manager創建一數據庫實例的時侯,在ORACLE_HOME\DATABASE目錄下還自動
創建了一個與之對應的密碼文件,文件名為PWDSID.ORA,其中SID代表相應的Oracle數據庫系統標識符。
此密碼文件是進行初始數據庫管理工作的基礎。在此之,管理員也可以根據需要,使用工具ORAPWD.EXE
手工創建密碼文件,命令格式如下: C:\ >ORAPWD FILE=< FILENAME > PASSWORD =< PASSWORD >
 ENTRIES=< MAX_USERS >

  各命令參數的含義為:

  FILENAME:密碼文件名;

  PASSWORD:設置INTERNAL/SYS帳號的口令;

  MAX_USERS:密碼文件中可以存放的最大用戶數,對應允許以SYSDBA/SYSOPER權限登錄數據庫的最大
用戶數。由在以的維護中,若用戶數超出了此限制,則需要重建密碼文件,所以此參數可以根據需要設
置得大一些。    有了密碼文件之,需要設置初始化參數REMOTE_LOGIN_PASSWORDFILE來控制密碼文件的
使用狀態。

    二、 設置初始化參數REMOTE_LOGIN_PASSWORDFILE:

  在Oracle數據庫實例的初始化參數文件中,此參數控制著密碼文件的使用及其狀態。它可以有以下幾個
選項: NONE:指示Oracle系統不使用密碼文件,特權用戶的登錄通過操作系統進行身份驗証; EXCLUSIVE:
指示只有一個數據庫實例可以使用此密碼文件。只有在此設置下的密碼文件可以包含有除INTERNAL/SYS以外
的用戶信息,即允許將系統權限SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用戶。 SHARED:指示可有
多個數據庫實例可以使用此密碼文件。在此設置下只有INTERNAL/SYS帳號能被密碼文件識別,即使文件中存
有其他用戶的信息,也不允許他們以SYSOPER/SYSDBA的權限登錄。此設置為缺省值。

  在REMOTE_LOGIN_PASSWORDFILE參數設置為EXCLUSIVE、SHARED情況下,Oracle系統搜索密碼文件的次序為:
在系統注冊庫中查找ORA_SID_PWFILE參數值(它為密碼文件的全路徑名);若未找到,則查找ORA_PWFILE參數值;
若仍未找到,則使用缺省值ORACLE_HOME\DATABASE\PWDSID.ORA;其中的SID代表相應的Oracle數據庫系統標識符。

    三、 向密碼文件中增加、刪除用戶:

  當初始化參數REMOTE_LOGIN_PASSWORDFILE設置為EXCLUSIVE時,系統允許除INTERNAL/SYS以外的其他用戶以
管理員身份從遠端或本機登錄到Oracle數據庫系統,執行數據庫管理工作;這些用戶名必須存在密碼文件中,
系統才能識別他們。由不管是在創建數據庫實例時自動創建的密碼文件,還是使用工具ORAPWD.EXE手工創建的
密碼文件,都只包含INTERNAL/SYS用戶的信息;為此,在實際操作中,可能需要向密碼文件添加或刪除其他用戶
帳號。

  由僅被授予SYSOPER/SYSDBA系統權限的用戶才存在密碼文件中,所以當向某一用戶授予或收回
SYSOPER/SYSDBA系統權限時,他們的帳號也將相應地被加入到密碼文件或從密碼文件中刪除。由此,向密碼文件
中增加或刪除某一用戶,實際上也就是對某一用戶授予或收回SYSOPER/SYSDBA系統權限。

  要進行此項授權操作,需使用SYSDBA權限(或INTERNAL帳號)連入數據庫,且初始化參數
REMOTE_LOGIN_PASSWORDFILE的設置必須為EXCLUSIVE。具體操作步驟如下: 創建相應的密碼文件; 設置初始化參
數REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE; 使用SYSDBA權限登錄: CONNECT SYS/internal_user_passsword
 AS SYSDBA; 啟動數據庫實例並打開數據庫; 創建相應用戶帳號,對其授權(包括SYSOPER和SYSDBA): 授予
權限:GRANT SYSDBA TO user_name; 收回權限:REVOKE SYSDBA FROM user_name; 現在這些用戶可以以
管理員身份登錄數據庫系統了;

    四、 使用密碼文件登錄:

  有了密碼文件,用戶就可以使用密碼文件以SYSOPER/SYSDBA權限登錄Oracle數據庫實例了,注意初始化參
數REMOTE_LOGIN_PASSWORDFILE應設置為EXCLUSIVE或SHARED。任何用戶以SYSOPER/SYSDBA的權限登錄,將位
SYS用戶的Schema之下,以下為兩個登錄的例子:

   1. 以管理員身份登錄:

   假設用戶scott已被授予SYSDBA權限,則他可以使用以下命令登錄:

   CONNECT scott/tiger AS SYSDBA

   2. 以INTERNAL身份登錄:

   CONNECT INTERNAL/INTERNAL_PASSWORD

    五、 密碼文件的維護:

   1. 查看密碼文件中的成員:

  可以通過查詢視圖V$PWFILE_USERS來獲取擁有SYSOPER/SYSDBA系統權限的用戶的信息,表中SYSOPER/SYSDBA
列的取值TRUE/FALSE表示此用戶是否擁有相應的權限。這些用戶也就是相應地存在密碼文件中的成員。

   2. 擴展密碼文件的用戶數量:

  當向密碼文件添加的帳號數目超過創建密碼文件時所定的限制(即ORAPWD.EXE工具的MAX_USERS參數)時,
為擴展密碼文件的用戶數限制,需重建密碼文件,具體步驟如下:

    a) 查詢視圖V$PWFILE_USERS,記錄下擁有SYSOPER/SYSDBA系統權限的用戶信息;

   b) 關閉數據庫;

   c) 刪除密碼文件;

   d) 用ORAPWD.EXE新建一密碼文件;

   e) 將步驟a中獲取的用戶添加到密碼文件中。

   3. 修改密碼文件的狀態:

  密碼文件的狀態信息存放此文件中,當它被創建時,它的缺省狀態為SHARED。可以通過改變初始化參數
REMOTE_LOGIN_PASSWORDFILE的設置改變密碼文件的狀態。當啟動數據庫事例時,Oracle系統從初始化參數文件
中讀取REMOTE_LOGIN_PASSWORDFILE參數的設置;當加載數據庫時,系統將此參數與口令文件的狀態進行比較,
如果不同,則更新密碼文件的狀態。若計劃允許從多台客戶機上啟動數據庫實例,由各客戶機上必須有初始化
參數文件,所以應確保各客戶機上的初始化參數文件的一致性,以避免意外地改變了密碼文件的狀態,造成數據
庫登陸的失敗。

   4. 修改密碼文件的存儲位置:

   密碼文件的存放位置可以根據需要進行移動,但作此修改,應相應修改系統注冊庫有關指向密碼文件存放
 位置的參數或環境變量的設置。

   5. 刪除密碼文件:

  在刪除密碼文件前,應確保當前運行的各數據庫實例的初始化參數REMOTE_LOGIN_PASSWORDFILE皆設置為NONE。
在刪除密碼文件,若想要以管理員身份連入數據庫的話,則必須使用操作系統驗証的方法進行登錄。
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★