56.精細訪問控制使使用者可以使用函式、策略實現更加細微的安全訪問控制。如果使用精細訪問控制,那麼當在客戶端發出sql語句(select、insert、update、delete)時,oracle會自動在這些sql語句後追加謂詞(where子句),並執行新的sql語句。通過使用精細訪問控制,可以使不同資料庫使用者在訪問相同表時返回不同資料。
userenv是oracle為其應用程式提供的預設應用上下文。常用屬性如下:
terminal
language
nls_date_format
session_user
current_schema
db_name
host
os_user
自定義應用上下文
create context contextname using username.packagename
取得上下文屬性值
select sys_context(『userenv』,』language』) from dual;
設定上下文屬性
自定義上下文沒有任何預設屬性,其屬性需要使用包dbma_session中的過程set_context進行設定。
exec dbms_session.set_context(『empenv』,』deptno』,20);
實現精細訪問控制
建立應用上下文
create or replace context empenv using scott.ctx;
建立包過程設定應用上下文屬性
create or replace package scott.ctx as
procedure set_deptno;
end;
create or replace package body scott.ctx as
procedure set_deptno is
id number;
begin
if sys_context('userenv','session_user')='jones' then
dbms_session.set_context('empenv','deptno',20);
elsif sys_context('userenv','session_user')='blake' then
dbms_session.set_context('empenv','deptno',30);
else
dbms_session.set_context('empenv','deptno',10);
end;
end;
建立登入觸發器,必須以sys使用者身份建立登入觸發器
create or replace trigger login_tring
after logon on database call scott.ctx.set_deptno
建立策略函式
create or replace package scott.emp_security as
function emp_sec(p1 varchar2,p2 varchar2) return varchar2;
end;
create or replace package body scott.emp_security as
function emp_sec(p1 varchar2,p2 varchar2) return varchar2
isd_predicate varchar2(2000);
begin
if user not in ('sys','system','scott') then
d_predicate := 'deptno = sys_context("empenv","deptno")';
return d_predicate;
end if;
return '1=1';
end;
end;
增加策略,定義物件、策略、策略函式以及sql語句之間的對應關係
execute dbms_rls.add_policy('scott','emp','emp_policy','scott','emp_security.emp_sec','select');
Oracle10g系統管理2
13.資料庫物理結構 資料庫檔案 資料檔案datafile 重做日誌logfile 控制檔案controlfile 資料檔案的位置及大小,重做日誌檔案的位置及大小,資料庫名稱及建立時間,日誌序列號 歸檔日誌archive log file 引數檔案pfile,spfile,init.ora,spfi...
Oracle10g系統管理4
30.建立資料庫步驟 建立例程服務 建立引數檔案 以nomount方式啟動例程 建立資料庫 執行指令碼完成後續操作 31.建立資料庫指令碼 create database demo maxinstances 8 maxloghistory 1 maxlogfiles 16 maxlogmembers...
Oracle10g系統管理6
39.控制檔案用於記錄和維護資料庫的物理結構。當啟動例程並開啟資料庫時,oracle會根據初始化引數control files在例程和資料庫之間建立關聯。裝載資料庫 mount狀態 時,oracle會按照初始化引數control files定位並開啟控制檔案。開啟資料庫時,oracle會根據控制檔案...