說說密碼檔案Passwordfile(一)
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。本地登入是透過遠端桌面、telnet、ssh連線到伺服器上,輸入OS帳號登入。執行的程式是駐留在資料庫伺服器上的程式。
資料庫層面的驗證就是資料庫使用者名稱和密碼的驗證。這部分資訊通常是儲存在資料庫檔案內部,是資料字典的一部分內容。只有在資料庫例項啟動並且載入上的情況下,才可以訪問到。
這是,就出現了一個矛盾。如果當前我的資料庫系統沒有啟動,沒法訪問使用者帳戶資訊。怎樣進行登入?
我們通常的解決方法是使用telnet/ssh登入到伺服器本地。使用conn / as sysdba連線上空例項,之後再啟動。也就是利用作業系統層面的驗證。那麼,如果我不希望使用作業系統層面的驗證,難道就沒有辦法登入例項了嗎?
於是,密碼檔案就出現了。
簡單的說,密碼檔案就是一個儲存在資料檔案外的資訊檔案,可以在資料檔案沒有載入的時候被例項訪問到。裡面儲存的就是使用者名稱資訊和密碼資訊,通常是那些執行啟動、關閉等維護許可權(sysdba/sysoper)使用者的密碼,如sys。
注意:
1、 在建立資料庫的時候,如果是使用DBCA進行建立,密碼檔案是已經建立的;
2、 在早期的版本中,Oracle使用者名稱和密碼,特別是密碼是沒有大小寫區分的。從Oracle11gr1開始,使用者名稱密碼開始大小寫敏感;
密碼檔案在不同平臺上的表現形式是有差異的。在windows平臺上,密碼檔案命名為pwd
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
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@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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Docker】(10)---詳細說說 Dockerfile檔案Docker
- 簡單說說webpack的配置檔案Web
- 說說在 Python 中,如何寫入檔案Python
- 無密碼身份認證,跟密碼說再見!密碼
- fepk檔案格式說明
- Oracle 密碼檔案Oracle密碼
- Nginx的配置檔案說明Nginx
- Oracle:ASM & 密碼檔案OracleASM密碼
- nginx日誌配置檔案說明Nginx
- 說說在 Python 中,如何讀取檔案中的資料Python
- Java 大檔案IO操作效率對比【我說說 你瞅瞅】Java
- 碼農深耕 - 說說IDisposable
- django的初始化檔案說明Django
- U盤中毒了怎麼恢復檔案,我來說道說道
- 通過手寫檔案伺服器,說說前後端互動伺服器後端
- Vue原始碼閱讀一:說說vue.nextTick實現Vue原始碼
- 【PROFILE】Oracle11g密碼複雜度說明Oracle密碼複雜度
- 談到區塊鏈,不得不說密碼學區塊鏈密碼學
- C++檔案說明及使用方法C++
- CentOS8中systemd配置檔案說明CentOS
- Hadoop之HDFS檔案讀寫流程說明Hadoop
- 說說這半年做的一個專案,並分享給各位
- 管理(002):建立密碼檔案示例密碼
- 管理(005):密碼檔案設定密碼
- Oracle 12c的DG自動同步密碼檔案--ASM 新特性:共享密碼檔案Oracle密碼ASM
- PDF檔案有限制密碼,該如何編輯檔案?密碼
- 小說軟體開發,java獲取文字檔案的編碼格式Java
- Linux中log檔案是什麼意思?Linux日誌檔案說明Linux
- 說一說Web端側AIWebAI
- 易優CMS模板目錄各檔案說明
- SpringBoot Jar包瘦身 - 跟大檔案說再見!Spring BootJAR
- Oracle安裝光碟內容的檔案說明Oracle
- SpringBoot專案配置檔案中密碼的加密Spring Boot密碼加密
- 如何給PDF檔案設定密碼?密碼
- 1.6.5. 使用密碼檔案認證密碼
- Bytom國密網說明和指南
- 說一說結構化思維
- 嘗試說一說事件的使用事件
- 自研 PHP 框架 1.1_index.php 檔案說明PHP框架Index