ORACLE database vault

studywell發表於2018-07-02

Oracle Database Vault


 TOC \o "1-3" \h \z \u

3.6.      Oracle Database Vault 和Oracle Label Security PL/SQL APIs. PAGEREF _Toc518292876 \h 4

1.  參考

詳說Oracle Vault——原理、安裝與配置

使用技術手段限制DBA的危險操作—Oracle Database Vault

https://www.cnblogs.com/raobing/p/6174551.html

官方文件

Oracle資料安全解決方案

2.  簡介

Oracle資料庫作為目前最成熟的商業資料庫,在穩定其核心功能的同時也針對數量眾多的使用者群提出了很多安全運維工具解決方案。在資料層面,Oracle有三個代表新的技術:Virtual Private DatabaseVPD)、Label SecurityOracle Vault

VPD主要是針對解決應用層面的資料訪問需求新增資料訪問許可權,對SYS無效,

Label SecurityVPD某種程度的擴充升級。

Oracle Database VaultDV)主要是對Oracle資料庫保護敏感資料和職責分離。將資料安全責任從使用者甚至sys身上剝離出去,進行細粒度的安全責任分配。作為Oracle資料庫的一個可選元件,Vault是需要額外的檔案連結、註冊和安裝的。安裝vault之後,Oracle會去建立一個全新的使用者dbvowner,原有的sys對一些資料的操作和訪問許可權,也都有進行控制的可能。

Vault中的三個核心要素:Realm(領域)、Factor(因素)和規則(Rule)。從資料物件、操作s命令等多個方面來限制或者保護特定的物件。

DV保護敏感資料主要透過Realm(安全域),Realm可以簡單理解為敏感資料的集合,DV透過realm的配置來指定使用者是否可以訪問Realm保護的資料,如果在DV中沒有給訪問許可權,即使是sysdba也無權訪問受Realm保護的資料,這是DV的核心功能.

DV還有一個很重要的功能,Command Rules,就是可以按一定的判斷條件,允許或阻止資料庫使用者執行DDLDML以及DCL命令,而且對特權使用者,包括sysdba都有效。這個功能正好可以滿足我們限制dba的需求。

Factor(認證因子)就是可以用於進行條件判斷的因素,比如客戶端主機名,客戶端IP等等,Oracle內建了一些常用的Factor,使用者也可以自己建立FactorFactor可以是一個表示式,也可以是一個儲存過程的返回值。

Rule Sets簡單說就是判斷條件的集合,類似SQLwhere之後的判斷條件,當規則集的判斷條件返回為true時,DV允許使用者訪問資料或執行特定的命令。Rule sets中的Rule可以引用Factor做判斷。

3.  Vault組成部分

Oracle Database Vault包含如下部分:

1)      Oracle Database Vault 訪問控制元件

2)      Oracle Database Vault 管理員元件(DVA)

3)      Oracle Database Vault配置助手(DVCA)

4)      Oracle Database Vault DVSYS DVF Schemas

5)      Oracle Database Vault PL/SQL介面和開發包

6)      Oracle Database VaultOracle Label Security PL/SQL APIs

7)      Oracle Database Vault 監控和報告工具

3.1.  Oracle Database Vault訪問控制元件

Oracle Database Vault使你能夠建立如下元件來保護你的資料庫例項的安全:

域:域是需要被保護的資料庫schemal、物件、角色的一個功能上的集合。例如:你可以將和賬戶、銷售、或者人力資源相關的資料庫schemal、物件、角色組成一個域。當你將這些組成一個域後,你可以使用域來控制賦給特定賬戶或者角色的系統許可權的使用。這樣你就可以給任何想使用這些資料庫schemal、物件、角色的使用者提供細粒度的訪問控制。 詳細討論了域。.

命令規則:命令規則是一個特殊的規則,透過這個規則,你可以控制使用者如何執行他們能夠執行的幾乎所有的SQL語句,包括SELECT, ALTER SYSTEM, database definition language (DDL), data manipulation language (DML)語句.命令規則必須和規則集一起決定某個語句是否允許執行。 詳細討論了規則集.

因素:因素是一個命名變數或者屬性,例如使用者位置、資料庫IP地址、會話使用者,這些因素是Oracle Database Vault能夠識別和保護的。你可以針對使用者活動使用這些因素,例如授權資料庫賬戶連結到資料庫,或者建立過濾邏輯條件來限制資料的可見性和可管理性。每個因素可以包含一個或者多個標識,標識是因素的具體的值。一個因素可以包含多個標識,這取決於因素的檢索方法或者它的對映邏輯。 詳細討論了因素.

規則集:規則集是一個或者多個規則的集合,你可以將規則集和一個域的授權、命令規則、因素指派、或者安全應用角色關聯起來。規則集基於其中的每個規則的計算值以及規則的計算方式(所有為真或者任意為真)。規則集中的規則是一個結果為“true”或“false”的PL/SQL表示式。詳細討論了規則集。

安全應用角色:一個安全應用角色是一個特殊的Oracle資料庫角色,它可以基於Oracle database vault規則集的計算結果啟用。Chapter 8, "Configuring Secure Application Roles for Oracle Database Vault"詳細討論了安全應用角色。

為了加強這些元件的功能,Oracle Database vault提供了一系列的PL/SQL介面和包。 提供了一個概括的介紹.

通常情況下,你要做的第一步是建立一個包含你想保護的schema或者資料庫物件的域,然後你就可以透過建立規則、命令規則、因素、標識、規則集、安全應用角色來保護你的域。除此以外,你可以執行報告工具來報告這些元件監控和保護的活動。提供了一個簡單的指南,可以使你熟悉Oracle Database Vault的功能,提供了更多關於如何執行報告來檢查配置和其它Oracle Database Vault 完成的活動。

3.2.  Oracle Database Vault管理員(DVA)

Oracle Database Vault 管理員是一個基於Oracle Database VaultPL/SQL API構建的Java程式。這個程式可以讓不熟悉PL/SQL介面的安全管理者透過友好的使用者介面來配置訪問控制策略。Oracle Database Vault管理員程式提供了眾多的安全相關的報告,這些報告可以幫助瞭解基準的安全配置。這些報告同時也有助於指出與基準配置相比,當前配置有哪些變化。

解釋瞭如何透過Oracle database Vault管理員程式來配置訪問策略, 以及如何將Oracle Database Vault與其它Oracle產品整合起來. 解釋了Oracle Database Vault報告.

3.3.  Oracle Database Vault 配置助手 (DVCA)

為了執行維護任務,可以使用命令列工具Oracle Database Vault配置助手(DVCA).更多資訊請參考.

3.4.  Oracle Database Vault DVSYS and DVF Schemas

Oracle Database Vault 提供了DVSYS這個schema來儲存所有需要Oracle Database Vault保護的資料庫物件。DVSYS schema包含角色、檢視、賬戶、函式、以及其它Oracle Database Vault使用的資料庫物件。DVF schema包含一些公共函式,這些函式用於從Oracle Database Vault訪問控制配置中讀取因素值的集合。

詳細描述了這兩個schema.

3.5.  Oracle Database Vault PL/SQL 介面和包

Oracle Database Vault提供了一個PL/SQL介面和包,讓安全管理員或者應用程式開發者按需配置訪問控制策略。PL/SQL儲存過程和函式使得普通的資料庫賬戶能夠在一個資料庫會話上下文中在訪問控制策略邊界裡進行操作。

參考 and 獲取更多資訊.

3.6.  Oracle Database Vault Oracle Label Security PL/SQL APIs

Oracle Database Vault提供了能夠和Oracle Label Security整合的訪問控制能力。Oracle Label Security是和Oracle Enterprise Manager Database Control整合的,Oracle Enterprise Manager Database Control能夠讓安全管理員定義應用到資料庫物件的標籤安全策略。Oracle Label Security同樣提供了一組可以供資料庫應用程式開發者用來提供標籤安全策略的PL/SQL API

參考 "Integrating Oracle Database Vault with Oracle Label Security" 獲取更多關於Oracle Database VaultOracle Label Security如何配合的資訊. 參考 Oracle Label Security Administrator's Guide 獲取更多關於Oracle Policy Manager的資訊.

3.7.  Oracle Database Vault 報告和監控工具

你可以根據Oracle Database Vault監控的不同的活動來生成報告,你可以監控策略的改變、異常的安全嘗試、資料庫配置和結構的變化。

參考 獲取更多關於你可以生成的報告的資訊. 解釋瞭如何監控Oracle Database Vault.

4.  Vault安裝

4.1.  檢查是否已安裝

預設企業版中,Vault是不會安裝的。我們需要手工的進行編譯、安裝,才能使用。

我們採用Oracle 11gR2進行測試,版本號為11.2.0.4

 

SQL> select * from v$version;

判斷當前vault是否安裝,檢視v$option檢視。

SQL> select * from v$option where parameter like '%Vault%';

PARAMETER                VALUE

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

Oracle Database Vault    FALSE

 

在本版本中,檢視均已安裝,但隨後配置塑件提示沒有安裝。

select * from v$option where parameter like '%Vault%';

select * from v$option where parameter like '%Security%';

 

4.2.  關閉資料庫及相關服務

安裝配置之前,要將資料庫、監聽程式、DB Console關閉。

--監聽程式

[oracle@SimpleLinux ~]$ lsnrctl stop

--Console

[oracle@SimpleLinux ~]$ emctl stop dbconsole

--Database Server

SQL> shutdown immediate;

 

4.3.  元件編譯

Oracle Vault是依賴Label Security,需要在作業系統層面上啟動配置。在Linux/Unix環境下,使用make進行配置連結。

[oracle@SimpleLinux lib]$ cd $ORACLE_HOME/rdbms/lib

[oracle@SimpleLinux lib]$ make -f ins_rdbms.mk dv_on lbac_on ioracle

注意:如果在Exadata中需要使用IPC協議訪問儲存,則需要加入ipc_rds協議模組。另外如果Windows平臺,則是將$ORACLE_HOME/bin目錄中oradv11.dll.dbl改名為oradv11.dll命令。

之後,重新啟動監聽器和伺服器。

[oracle@SimpleLinux lib]$ lsnrctl start

SQL> conn / as sysdba

SQL> startup

4.4.  呼叫dbca部署

在支援GUI的介面方式下,呼叫dbca啟動編譯。

點選下一步Next,選擇Configure Database Options專案。之後選擇目標資料庫。

從選項中,選擇上Label SecurityVault選項。

Oracle Label Security 使用者未system

Oracle Database Vault SYSAUX

配置專案中,包括了Oracle Vault使用者owner的名稱和管理員密碼。注意:這個配置密碼環節是很嚴格的,要求長度是8-30位、不出現重複字元和包括至少一個標點符號。

database vault owner: dbvowner     password:Abcd_1234

建立單獨的賬戶管理員,已區分賬戶管理和安全策略管理。

database vault account manager: dbvmgr    password:Abcd_1234

選擇連線方法,包括獨佔方式和共享連線方式。最後安裝選項。

最後安裝成功,結束GUI介面。

4.5.  啟動DBV配置介面

和很多Oracle元件一樣,Oracle Vault是可以透過一系列的API介面呼叫來進行配置管理的。但是,由於複雜性,Oracle並不推薦直接使用API介面命令進行管理,而是透過提供的dbv應用進行配置。使用dbv的方法和em很像,而且避免了出現錯誤的機率。

呼叫dbv的方法,首先是啟動emctl。之後呼叫

埠號和em是一樣的。

使用者名稱:dbvowner

口令:Abcd_1234

HOST:192.0.2.20

PORT:1521

SID/服務:SID:orcl

點選登入,就可以看到配置專案。

4.6.  結論

Oracle Vault是目前Oracle官方推薦的運維安全策略。在實際應用中,主要便於進行sys等管理員帳號許可權限制,保護核心業務資料。

5.  案例介紹

5.1.  示例1:只允許在非業務時間執行drop命令

這個例子是最簡單的,不需要使用Factor,只使用Rule SetsCommand Rules就可以完成。我們用資料庫使用者test來示範:

1)      登入DV的管理頁面:

2)      建立一個Rule Set,名字叫”Can not drop table in business time”,選擇Any True,意思是說規則集中的規則(判斷條件)任何一個為True,規則集判斷結果就為True。其實All True就相當於andAny True就相當於or。審計選型:成功或失敗的審計。錯誤處理頁面:處理時出錯:show error message,失敗程式碼:-20001,失敗訊息:Can not drop table in business time

3)      要與規則集關聯的規則,建立兩個規則:

規則名:RULE1    規則表示式:to_char(sysdate,'HH24MM')<'1145'

規則名:RULE2    規則表示式:to_char(sysdate,'HH24MM')>'1155'

這兩個RULE也很好理解,就是判斷當前時間是否為業務時間,在這裡,為了便於做實驗,把業務時間定義為1145~1155,這個規則集判斷當前時間,如果當前時間不在業務時間內,規則集返回True

4)      然後建立Command Rule

在主頁,點選規則>建立,命令了型別選擇DROP TABLE,狀態:啟用,使用者所有者:SCOTT,命令集:Can not drop table in business time

這個Command Rule的意思就是指定的Rule Set 返回True時,允許drop test使用者下的表,否則即使是sysdba或表的owner也無權drop table

5)      效果:

23:50:48 SCOTT@orcl >create table dept3 as select * from dept;

23:51:09 SCOTT@orcl >drop table dept3;

drop table dept3

*

ERROR at line 1:

ORA-47306: 20001: Can not drop table in business time

23:51:59 @ >conn sys/oracle@s11 as sysdba

23:52:12 SYS@s11 >drop table scott.dept2;

drop table scott.dept2

ERROR at line 1:

ORA-47306: 20001: Can not drop table in business time

其他我們想控制的Alter TableCommand Rule的設定方法類似。

5.2.  例項2:只允許使用者使用特定工具(應用)登入資料庫

實際工作中,我們經常遇到這樣的情況:應用開發人員都有應用使用者的口令,他們可以隨意用SQL*PLUSPL/SQL Developer這樣的工具連線到生產庫上,如果一時搞混了生產庫和測試庫,就可能有悲劇發生。最好的解決方法就是限制應用使用者所用的工具,應該只允許中介軟體以這個使用者連線,其他工具都不允許連線。

這個例子會用到Factor,首先我們建立一個Factor,取使用者會話的Module:

1)      建立因子:

名稱:Module

因子型別:Application

因子標識:By Method ,

因子賦值:By Access,

因子標籤:By Self

檢索方法:UPPER(SYS_CONTEXT('USERENV','MODULE'))

點選“建立”。

2)      SQL*PLUS登入資料庫,驗證這個Factor取出的值:

SYS@orcl >select dvf.f$module from dual;

F$MODULE  

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

SQLPLUS@S11 (TNS V1-V3)

 

引用Factor的方法就是DVF.F$+Factor name,在Linux本機登入,Module就是上面顯示的那樣,在windows上遠端登入,Module的值是“SQLPLUS.EXE”。

3)      下面建立Rule Set,名字叫“Limit SQL*PLUS“,

建立規則集:

名稱:Limit SQL*PLUS

狀態:啟用

賦值選項:Any True

錯誤處理選項:-20002

失敗訊息:can’t login

定製事件處理程式選項:禁用處理程式

4)      建立規則:

RULE3: DVF.F$MODULE like 'SQLPLUS%' AND DVF.F$SESSION_USER IN ('SYS','SYSTEM','DV_MANAGER')

RULE4: DVF.F$MODULE NOT LIKE 'SQLPLUS%'

5)      建立Command Rule

建立命令規則:

命令:CONNECT

狀態:啟用

物件所有者:%

物件名:%

規則集:Limit SQL*PLUS

6)      效果

按照這種規則,除了SYSSYSTEMDV_MANAGER之外的使用者,不管是本地還是遠端,都不能用SQL*PLUS登入。

23:58:44 SYS@orcl >conn / as sysdba

Connected.

00:12:28 SYS@orcl >conn scott/tiger@s11

ERROR:

ORA-47306: 20002: can't login

Warning: You are no longer connected to ORACLE.

SQL Developer登入正常:

5.3.  例項3:使用Dual Key安全功能

現實場景中,我們希望DBA遵守制度,比如在修改表結構之前,通知OGG相關人。或者為了增加安全性,要求DBA做的重大操作,必須得到老闆的批准。DV可以利用Dual Key功能滿足這種需求。

簡單說,我們可以寫一個儲存過程,判斷流程中需要通知的人是否線上,如果線上,才允許執行相應的操作。而那個需要被通知的人,只要擁有connect資料庫的許可權就行,他(她)的登入動作就變成了一種授權或被通知後的確認。

具體步驟:

1)      首先給DV的管理員授權,讓使用者可以訪問字典檢視和編寫儲存過程:

SQL>

GRANT CREATE PROCEDURE TO DBVOWNER;

GRANT SELECT ON V_$SESSION TO DBVOWNER;

2)      建立儲存過程

我們假設授權的使用者是“system“,而執行操作的使用者是”scott“,相應的判斷system是否線上的儲存過程如下:

CREATE OR REPLACE FUNCTION check_boss_logged_in

return varchar2

authid definer as

v_session_number number := 0;

v_allow varchar2(10) := 'TRUE';

v_deny varchar2(10) := 'FALSE';

BEGIN

SELECT COUNT(*) INTO v_session_number

FROM SYS.V_$SESSION

WHERE USERNAME = 'SYSTEM';

IF v_session_number > 0

THEN RETURN v_allow;

ELSE

RETURN v_deny;

END IF;

END check_boss_logged_in;

/

使用DV管理員建立這個Function,然後授權給DVSYS

SQL>

conn dbvowner/Abcd_1234

GRANT EXECUTE ON check_boss_logged_in to DVSYS;

3)      建立Rule Set:

名稱:Dual Key

賦值選項:Any True

規則如下:

RULE5:SYS_CONTEXT('USERENV','SESSION_USER')='SCOTT' AND DBVOWNER.CHECK_BOSS_LOGGED_IN='TRUE'

RULE6: SYS_CONTEXT('USERENV','SESSION_USER') !='SCOTT'

4)      建立Command Rule:

命令規則:

型別:ALTER TABLE

物件所有者:SCOTT

RULE SET: dual key

5)      效果(失敗)

這個Command Rule達到的效果是,如果SCOTT使用者想alter ownerscotttable,必須boss使用者同時線上,否則報錯,無許可權。如果是其他人修改SCOTT使用者下的表,不受這個限制。

最後的效果:

SYSTEM使用者沒有線上,那麼SCOTT使用者alter table報錯

只有在SCOTT使用者通知了SYSTEM使用者,或者按照流程,得到了SYSTEM使用者的批准,SYSTEM使用者用登入資料庫這個動作來代表確認,SCOTT使用者才可以修改表結構:

6.  詳說Oracle Vault——使用資料泵工具

Oracle Vault的原則是安全職責的拆分保護。從原來資料庫管理員sys承擔安全職責這個假設,轉變為單獨安全人員dbvownerdbvaccount manager為安全配置中心。之後,從行為、領域等多個層面設定了很多安全區,對安全區採用額外的保護策略,將管理員遮蔽住。

資料庫管理員雖然可以進行管理工作,但是卻不能訪問特定敏感區域。而安全員雖然有安全授權能力,但是沒有管理員資料授權(系統許可權和資料許可權),安全員也不能訪問敏感資料。

這個過程中是有一些漏洞的,比如管理員存在修改安全員密碼,奪取安全員許可權的可能,所以Oracle Vault在安裝之後,有一些預設的領域和命令規則,將管理員嚴格的進行束縛。

此外,管理員有一些日常操作,如使用DB ControlDatapumpRecovery Manager,都有觸動安全領域規則的風險。這樣的情況Oracle是如何處理呢?本篇從Data Pump操作入手,進行簡單討論。

6.1.  Data PumpVault

Oracle Data Pump(資料泵)是Oracle10g以後推出的資料備份管理工具。作為Exp/Imp的進化版,Data Pump對於各種Oracle新特性、功能支援力度是比較好的,在海量資料操作的時候,Data Pump也是有獨特的優勢。

 如果我們仔細研究過Data Pump操作過程,就可以得知,Oracle Data Pump進行資料匯入的過程並不是一個整體,而是一系列動作的集合。比如:當進行資料匯入Schema模式的時候,如果目標資料庫沒有這個使用者,Data Pump時會建立出這個使用者。這個過程其實就是一般的create user xxx語句執行。

 所以,進行exportimport資料的過程,是一個多種許可權(系統許可權)綜合的過程。這也就是為什麼Oracle中匯入匯出資料庫的許可權是兩個角色許可權(Import/Export Full Database)。

 那麼,如果管理員(備份操作員)需要進行資料匯入匯出敏感資料的時候,是要觸動到敏感資訊的。Oracle Vault環境下我們是怎麼配置呢?

6.2.  預設行為配置

當前我們實驗選擇Oracle 11gR2版本,資料庫已經配置Vault元件。對scott資料進行保護,即使sys管理員也是無法訪問的。

Oracle中建立directory物件dumps。嘗試進行匯出。

$ expdp \"/ as sysdba\" directory=dumps schemas=scott dumpfile=scottvault_%U.dmp

從報錯資訊中,我們看到Data Pump本質就是呼叫一系列的包方法,來將資料匯出。Sys使用者是有匯出資料許可權的,但是預設情況如果碰觸敏感資訊,也是報錯失敗。

6.3.  額外授權

在設定Vault情況下,Oracle對於一些管理操作時需要額外授權的。Dbms_macadm包就是用於進行特定管理操作授權的。

sys下,執行授權操作因無許可權會報錯。

Oracle Vault中,所有對於敏感區域的授權動作,都是要透過dvowner管理物件。

SQL>

conn dbvowner/Abcd_1234.@ora11g

exec dbms_macadm.authorize_datapump_user('SYS');

再次呼叫expdp程式。

expdp \"/ as sysdba\" directory=dumps schemas=scott dumpfile=scottvault.dmp

匯出成功。

6.4.  匯入敏感資料動作

此時,我們設想一個場景。如果一個位於安全領域的資料物件,被匯出為dmp檔案(或者備份到其他介質中)。還原到一個環境之後,安全原則是否還存在?

我們進行試驗測試,匯入剛剛匯出的dmp檔案到資料庫中。

--匯入相同資料庫,不同schema

impdp \"/ as sysdba\" dumpfile=scottvault.dmp directory=dumps remap_schema=scott:test

 

匯入成功,檢視Vault約束是否存在。

SQL>

conn sys/oracle@ora11g as sysdba

select * from scott.emp;

select * from test.bonus;

到一個新的環境之後,資料約束消失。

6.5.  結論與討論

發現匯入敏感vault失效之後,一些朋友是有疑惑的,認為這樣是Oracle的一個問題缺陷。在這個問題上,筆者是和Oracle站在相同的立場的。

首先,Vault的本質是一種系統級別的控制技術。而不是一種資料加密技術。如果尋求加密,可以考慮TDE或者應用端加密技術。Vault是在訪問層面的一種控制機制。所以,當資料被合法的讀取留存之後,被解密是合理的想法。

第二,在進行Export的時候,Oracle Vault是要求額外授權的。Oracle認為:既然已經讓安全管理員允許特定使用者匯出敏感資料,那麼安全責任就轉移出系統了,擔負在特定使用者的身上。所以,這樣也是合理的。

 最後,Vault的本質是防範自己人。這也就是限制了Oracle Vault發揮作用的層面。安全是一個多層面考慮的問題。沒有單獨的一種技術手段可以避免問題出現。在什麼都不可信的時候,我們總需要相信一些什麼。

 注意:在11gR2版本中,已經取消了對於Exp/ImpVault環境的使用。Data Pump已經成為唯一選擇。

7.  Vault解除安裝

轉:

Oracle Vault是安全三個技術策略的重要組成部分。相對於其他兩種,Label SecurityVPDVirtual Private Database),Oracle Vault更加體現運維體系管理建設和安全規則配置。安裝配置Vault之後,Oracle原有的sys超級使用者安全形色被剝離,資料、操作和資源以規則的方式進行安全限制。應該說,使用Vault之後,才能真正實現對於資料管理員行為的管制。

本篇主要介紹如何對Vault進行解除安裝操作,依據的版本是11gR2。注意:Oracle Vault不同版本下進行解除安裝的方法有一定差異,特別是在relink的過程。

7.1.  解除安裝前準備

Oracle Vault在資料庫中涉及幾個部分:dva元件以Web App的方式繫結在OEM中、內部的dbownermanager管理物件和角色許可權調整。在正式的解除安裝操作之前,我們需要將資料庫和各種元件進行關閉。

 

資料庫完全關閉。

SQL>

conn / as sysdba

shutdown immediate;

監聽程式關閉。

[oracle@SimpleLinux ~]$ lsnrctl stop

DB Console Web應用關閉。

[oracle@SimpleLinux ~]$ emctl stop dbconsole

[oracle@SimpleLinux ~]$ emctl status dbconsole

7.2.  Disable Vault

Vault是一個預設情況下未啟用的元件。我們進行安裝Vault的過程,實際上就是將其重新打包如Oracle執行程式。進行解除安裝的過程,也需要重新relink Oracle應用程式。

首先進行Disable過程。

[oracle@SimpleLinux ~]$ cd $ORACLE_HOME/rdbms/lib

[oracle@SimpleLinux lib]$ make -f ins_rdbms.mk dv_off ioracle

注意:如果是在11gR2中,可以選擇chopt方式進行dv的解除安裝。

[oracle@SimpleLinux lib]$ chopt disable dv

Writing to /u01/app/oracle/install/disable_dv.log...

/usr/bin/make -f /u01/app/oracle/rdbms/lib/ins_rdbms.mk dv_off ORACLE_HOME=/u01/app/oracle

 

/usr/bin/make -f /u01/app/oracle/rdbms/lib/ins_rdbms.mk ioracle ORACLE_HOME=/u01/app/oracle

啟動監聽器,此時Oracle通常已經自動啟動。

[oracle@SimpleLinux lib]$ lsnrctl start

檢查資料庫,確保已啟動。

7.3.  資料庫中操作

 結束link過程後,還需要進行資料庫中一些物件的手工操作。在一些版本下,是需要將若干trigger手工禁用。筆者使用的版本不需要這樣操作。

SQL>

alter trigger dvsys.dv_before_ddl_trg disable;

alter trigger dvsys.dv_after_ddl_trg disable;

 

確定自定義ownermanager的使用者名稱稱。

SQL> conn as sysdba

SQL> select unique GRANTEE from dba_role_privs where GRANTED_ROLE in ('DV_ACCTMGR','DV_OWNER') and grantee <> 'DVSYS';

 

GRANTEE

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

DBVOWNER

DBVACCTMGR

 

11gR1版本中,需要進行更新。

SQL>

update dvsys.config$ set status=0;

commit;

 

操作之前,確認recyclebin已經關閉,並且重新啟動資料庫。

SQL>

alter system set recyclebin=off scope=spfile;

shutdown immediate;

startup

 

執行vault解除安裝指令碼,刪除資料。

SQL> @?/rdbms/admin/dvremov.sql

作用:DVSYS and DVF users and DV roles are removed

刪除自定義管理員和owner的使用者資料。

SQL>

drop user dbvowner cascade;

drop user dbvacctmgr cascade;

 

如果在11gR1版本,需要手工執行網路ACL授權取消動作。在11gR2版本,這個過程已經納入到指令碼中不需要執行了。

 SQL>

conn / as sysdba

exec DBMS_NETWORK_ACL_ADMIN.DROP_ACL ('/sys/acls/dvsys-network-privileges.xml');

commit;

 

開啟recyclebin功能,重啟動資料庫。

SQL>

alter system set recyclebin=on scope=spfile;

startup force;

 

測試刪除成功。

SQL> col parameter for a30;

SQL> select * from v$option where parameter='Oracle Database Vault';

 

PARAMETER VALUE

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

Oracle Database Vault FALSE

 

7.4.  結論

 Oracle Vault是比較完備的資料許可權、功能許可權解決方案。在實際中是有很大的作用的。記錄下解除安裝方法,留需要的朋友待查。


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

相關文章