Oracle是關系型數據庫管理系統,它功能強大、性能卓越,在當今大型數據庫管理系統中占有重要地位。在正常情況下,Oracle數據庫會保證數據的安全、穩定,為用戶提供正確的數據,但由於計算機系統的故障(硬件故障、軟件故障、網絡故障和系統故障)影響數據庫系統的操作,影響數據庫中數據的正確性,甚至破壞數據庫,使數據庫中全部或部分數據丟失,整個系統都將處於癱瘓狀態。因此,如何保證Oracle數據庫的安全就成為整個系統安全的重要組成部分。
Oracle數據庫的安全策略包括數據庫的備份和恢復、用戶角色管理。
一、數據庫備份所使用的結構
Oracle數據庫使用幾種結構來保護數據:數據庫後備、日志、回滾段和控制文件。
1.數據庫後備是由構成Oracle數據庫的物理文件的操作系統後備所組成。當介質故障時進行數據庫恢復,利用後備文件恢復毀壞的數據文件或控制文件。
2.每一個Oracle數據庫實例都提供日志,記錄數據庫中所作的全部修改。每一個運行的Oracle數據庫實例相應地有一個在線日志,它與 Oracle後台進程LGWR一起工作,立即記錄該實例所作的全部修改。歸檔(離線)日志是可選擇的,一個Oracle數據庫實例一旦在線日志填滿後,可形成在線日志歸檔文件。歸檔的在線日志文件被唯一標識並合並成歸檔日志。
3.回滾段用於存儲正在進行的事務(為未提交的事務)所修改值的老值,該信息在數據庫恢復過程中用於撤消任何非提交的修改。
4.控制文件,一般用於存儲數據庫的物理結構的狀態。控制文件中某些狀態信息在實例恢復和介質恢復期間用於引導Oracle。
二、在線日志
一個Oracle數據庫的每一實例有一個相關聯的在線日志。一個在線日志由多個在線日志文件組成。在線日志文件(online redo log file)填入日志項(redo entry),日志項記錄的數據用於重構對數據庫所作的全部修改。
三、歸檔日志
Oracle要將填滿的在線日志文件組歸檔時,則要建立歸檔日志(archived redo log)。其對數據庫備份和恢復有下列用處:
1.數據庫後備以及在線和歸檔日志文件,在操作系統和磁盤故障中可保證全部提交的事物可被恢復。
2.在數據庫打開和正常系統使用下,如果歸檔日志是永久保存,在線後備可以進行和使用。
數據庫可運行在兩種不同方式下:NOARCHIVELOG方式或ARCHIVELOG方式。數據庫在NOARCHIVELOG方式下使用時,不能進行在線日志的歸檔。如果數據庫在ARCHIVELOG方式下運行,可實施在線日志的歸檔。
四、Oracle的備份特性
Oracle備份包括邏輯備份和物理備份。
1.邏輯備份
數據庫的邏輯備份包含讀一個數據庫記錄集和將記錄集寫入文件。
(1)輸出(Export)輸出可以是整個數據庫、指定用戶或指定表。
(2)輸入(Import)輸入將輸出建立的二進制轉儲文件讀入並執行其命令。
2.物理備份
物理備份包含拷貝構成數據庫的文件而不管其邏輯內容。
Oracle支持兩種不同類型的物理文件備份:脫機備份(offline backup)和聯機備份(online backup)。
(1) 脫機備份
脫機備份用在當數據庫已正常關閉,數據庫處於"offline"時,要備份下列文件:
所有數據文件
所有控制文件
所有聯機日志
init.ora(可選的)
(2) 聯機備份
聯機備份可用來備份任何運作在ARCHIVELOG方式下的數據庫。在這種方式下,聯機日志被歸檔,在數據庫內部建立一個所有作業的完整記錄。
聯機備份過程具備強有力的功能。第一,提供了完全的時間點(point-in-time)恢復。第二,在文件系統備份時允許數據庫保持打開狀態。
備份方式特性比較
五、Oracle數據庫的角色管理
Oracle數據庫系統在利用角色管理數據庫安全性方面采取的基本措施有:
通過驗證用戶名稱和口令,防止非Oracle用戶注冊到Oracle數據庫,對數據庫進行非法存取操作。
授予用戶一定的權限,限制用戶操縱數據庫的權力。
授予用戶對數據庫實體的存取執行權限,阻止用戶訪問非授權數據。
提供數據庫實體存取審計機制,使數據庫管理員可以監視數據庫中數據的存取情況和系統資源的使用情況。
采用視圖機制,限制存取基表的行和列集合。
六、Oracle數據庫的安全策略
由於Oracle數據庫備份有三種方式,每種方式具有不同的恢復特性,因此應集成數據庫與文件系統備份,集成邏輯備份和物理備份。
(一)、備份策略
在操作系統級別,使用大容量磁盤陣列,通過磁盤映像技術使每一個數據庫文件自動分布於每個物理磁盤。這樣,當某個磁盤出現物理損壞時,操作系統會自動引發映像磁盤來取代失效的磁盤,保證數據庫的正常運行。
在多個不同的物理磁盤上保持多個控制文件的備份。控制文件在數據庫恢復期間用於引導Oracle,因此保持多個控制文件的備份,可以確保在出現磁盤故障後,能有可用的控制文件用於數據庫恢復。
使數據庫運行在ARCHIVELOG(歸檔)方式下,歸檔日志存放於另一映像的邏輯磁盤上。每晚進行一次聯機備份操作,備份所有數據文件、所有歸檔日志文件、一個控制文件。每周進行一次輸出(Export)操作。
(二)、恢復策略
1.實例失敗
從實例失敗中恢復是自動進行的。實例失敗一般是由服務器失敗引起的,當數據庫實例失敗後,重新啟動服務器,啟動數據庫,Oracle檢查數據文件和聯機日志文件,並把所有文件同步到同一個時間點上。
2.磁盤失敗
如果丟失的是控制文件,只要關閉數據庫,從保留有控制文件的地方拷貝一份即可。
如果丟失的是數據文件,可用前一天晚上的聯機備份進行恢復,步驟如下:
1)從備份中把丟失的文件存在原來位置。
2)加載數據庫
3)恢復數據庫
4)打開數據庫
3.錯誤刪除或修改對象
在這種情況下,一般希望能追溯返回到錯誤發生前的那個時間點上。這叫做時間點恢復。完成恢復的步驟如下:
1)從當前數據庫輸出(Export),輸入(Import)到備用數據庫,使備用數據庫與當前數據庫保持一致。
2)向前滾動備用數據庫到錯誤發生前的那個時間點。
3)從備用數據庫輸出受錯誤影響的邏輯對象。
4)使用上一步產生的輸出文件輸入那些受影響的對象到當前數據庫。
(三)、用戶角色管理
1.對所有客戶端按工作性質分類,分別授予不同的用戶角色。
2.對不同的用戶角色,根據其使用的數據源,分別授予不同的數據庫對象存取權限。
基於以上的安全策略,可以防止非法用戶訪問數據庫,限制合法用戶操縱數據庫的權限;可以使數據庫在故障發生後,不會丟失任何數據,並能使數據庫迅速恢復到故障發生前的那一時間點上,最大限度的保證數據的安全和整個系統的連續運行