說說密碼檔案Passwordfile(一)

realkid4發表於2011-01-19

Oracle資料庫系統DBMS是由資料庫例項和資料庫本身構成的。資料庫例項本質上就是一系列Oracle相關的程式外加一塊記憶體區域構成。而資料庫本身指的就是儲存在物理硬碟上的資料庫檔案。

 

資料庫檔案是由多種型別,不同型別檔案在資料庫工作過程中扮演不同的作用。根據對資料庫核心工作的影響,檔案也是有等級的。最緊要的檔案三個為資料檔案、控制檔案和線上online日誌檔案。三個檔案如果遭到破壞丟失,會引起資料庫崩潰或者嚴重故障。其次為引數檔案、歸檔檔案、密碼檔案、Alert和跟蹤檔案等檔案。今天我們一起看一下密碼檔案。

 

密碼檔案Password解決的是資料庫使用者非作業系統驗證問題。Oracle對使用者名稱、密碼的驗證是有很多層次的,分別為作業系統層面和資料庫層面。

 

作業系統層面驗證,就是利用使用者登入作業系統時的作業系統帳號作為驗證手段。當我們登入一個host主機(作業系統),實際上已經經過了作業系統級別的驗證。Oracle在驗證使用者登入的時候,是可以指定是否使用作業系統的驗證結果。如果系統設定為允許作業系統驗證結果,那麼是不需要輸入使用者名稱和密碼就可以登入系統的。

 

我們經常登入資料庫伺服器本機(一般透過ssh或者telnet遠端連線),之前是需要輸入OS的使用者名稱和密碼。之後,常常使用這個命令進行登入。

 

[oracle@oracle11g ~]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.1.0 Production on Wed Jan 19 01:24:11 2011

 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

SQL> conn / as sysdba   //沒有指定使用者名稱和密碼

Connected.

 

SQL> show user

USER is "SYS"   //竟然是以SYS最高許可權使用者進行登入的。

SQL>

 

我們常常使用的conn / as sysdba,就表示不使用資料庫例項驗證,直接使用作業系統層面進行驗證。這裡面,要注意兩個問題:

 

1、  並不是每個作業系統使用者都允許這樣登入系統,作業系統層面的驗證很多時候對我們是很嚴格的。一般都是在安裝Oracle的時候,預設進行的作業系統角色許可權配置。比如:在windows環境下,安裝oracle的使用者(管理員使用者)就被GUI安裝程式設為為一個ora_dba的角色組。在Unix/Linux環境下,也有osdba的角色組。將登入使用者名稱加入到改組中,實際上就可以透過作業系統驗證;

2、  是否使用OS驗證,是有相應的選項的。在sqlnet.ora檔案中,有對應的引數項,可以適時關閉作業系統驗證機制。不允許只透過作業系統就可以登入系統的情況。在這個問題上,可以參考筆者的一篇文章:http://space.itpub.net/17203031/viewspace-681029

 

 

注意:這裡對遠端登入和本地登入一個區分。本文提到的遠端登入,是透過Oracle客戶端軟體,透過訪問遠端資料庫伺服器的監聽器,構建與例項的連線。在這個過程中,是沒有輸入伺服器使用者名稱、密碼要求的。也就是說,遠端登入從沒有登入OS。本地登入是透過遠端桌面、telnetssh連線到伺服器上,輸入OS帳號登入。執行的程式是駐留在資料庫伺服器上的程式。

 

 

資料庫層面的驗證就是資料庫使用者名稱和密碼的驗證。這部分資訊通常是儲存在資料庫檔案內部,是資料字典的一部分內容。只有在資料庫例項啟動並且載入上的情況下,才可以訪問到。

 

這是,就出現了一個矛盾。如果當前我的資料庫系統沒有啟動,沒法訪問使用者帳戶資訊。怎樣進行登入?

 

我們通常的解決方法是使用telnet/ssh登入到伺服器本地。使用conn / as sysdba連線上空例項,之後再啟動。也就是利用作業系統層面的驗證。那麼,如果我不希望使用作業系統層面的驗證,難道就沒有辦法登入例項了嗎?

 

於是,密碼檔案就出現了。

 

簡單的說,密碼檔案就是一個儲存在資料檔案外的資訊檔案,可以在資料檔案沒有載入的時候被例項訪問到。裡面儲存的就是使用者名稱資訊和密碼資訊,通常是那些執行啟動、關閉等維護許可權(sysdba/sysoper)使用者的密碼,如sys

 

注意:

1、  在建立資料庫的時候,如果是使用DBCA進行建立,密碼檔案是已經建立的;

2、  在早期的版本中,Oracle使用者名稱和密碼,特別是密碼是沒有大小寫區分的。從Oracle11gr1開始,使用者名稱密碼開始大小寫敏感;

 

密碼檔案在不同平臺上的表現形式是有差異的。在windows平臺上,密碼檔案命名為pwd.ora,存放路徑為$ORACLE_HOME\database目錄。

 

D:\oracle\database>dir

 驅動器 D 中的卷沒有標籤。

 卷的序列號是 2294-1384

 

 D:\oracle\database 的目錄

 

2011-01-19  21:41   

          .

2011-01-19  21:41   

          ..

2008-09-01  20:35   

          archive

2008-09-01  20:52             2,048 hc_orcl.dat

2008-09-01  20:40                39 initorcl.ora

2005-06-25  03:18            31,744 oradba.exe

2011-01-17  20:59            10,178 oradim.log

2010-05-09  13:27             1,536 PWDorcl.ora  //密碼檔案

               5 個檔案         45,545 位元組

               3 個目錄 65,762,430,976 可用位元組

 

 

unix/linux環境下,密碼檔案通常命名為orapw,位於$ORACLE_HOME/dbs目錄下。

 

[oracle@oracle11g ~]$ ls -l $ORACLE_HOME/dbs

total 32

-rw-rw----  1 oracle oinstall 1544 Oct  1 21:44 hc_DBUA0.dat

-rw-rw----  1 oracle oinstall 1544 Oct  1 21:47 hc_wilson.dat

-rw-r--r--  1 oracle oinstall 2851 May 15  2009 init.ora

-rw-r-----  1 oracle oinstall   24 Oct  1 21:48 lkWILSON

-rw-r-----  1 oracle oinstall 1536 Jan  6 14:27 orapwwilson

drwx------  2 oracle oinstall 4096 Oct  1 21:44 peshm_DBUA0_0

drwx------  2 oracle oinstall 4096 Oct  1 21:47 peshm_wilson_0

-rw-r-----  1 oracle oinstall 2560 Jan 19 01:23 spfilewilson.ora

 

 

密碼檔案中的內容,是進行過加密的。直接開啟不能讀取,只能透過啟動例項之後,在檢視v$pwfile_users中檢視。

 

SQL> select * from v$pwfile_users;

 

USERNAME                       SYSDB SYSOP SYSAS

------------------------------ ----- ----- -----

SYS                         TRUE  TRUE  FALSE  //只記錄了一個擁有sysdba/sysoper許可權的使用者;

 

 

 

此外,在Oracle中,有一個控制引數remote_login_passwordfile,用來確定登入方式的驗證。

 

 

SQL> show parameter remote_login

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

remote_login_passwordfile            string      EXCLUSIVE

 

一般該項引數設定的都是EXCLUSIVE,表示在遠端登入的時候使用密碼檔案驗證。此外,還有其他可選擇值。

 

NONE:不使用password file進行驗證;

Shared:表示在RAC或者多例項公用host的情況下,使用一份passwordfile。這種方式下,sys的密碼是不能夠輕易修改的。此外,對於非sys使用者加入到密碼檔案中,也有一些限制。

 

 

下面我們來介紹如何來管理密碼檔案。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-684311/,如需轉載,請註明出處,否則將追究法律責任。

相關文章