Oracle10g系統管理11

2021-08-31 19:37:12 字數 2091 閱讀 4434

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會根據控制檔案...