oracle VPD
- oracle 支持中文schema名字
- 创建VPD用户
create user 采油三厂 identified by vpd;
grant resource, connect,dba to 采油三厂;
如果没权限
grant execute ON DBMS_RLS to dqa5;
- 创建表
create table sys_department_mapping as select * from a5admin.sys_department_mapping;
- 创建function
CREATE OR REPLACE PACKAGE a5_security
AS
FUNCTION deptno_sec (a1 VARCHAR2, a2 VARCHAR2)
RETURN VARCHAR2;
END a5_security;
CREATE OR REPLACE PACKAGE BODY a5_security
AS
FUNCTION deptno_sec (a1 VARCHAR2, a2 VARCHAR2)
RETURN VARCHAR2
IS
vc_userid varchar2(100);
l_predicate VARCHAR2 (2000);
BEGIN
select SYS_CONTEXT('USERENV','SESSION_USER')
into vc_userid
from dual;
if(trim(vc_userid)='VPD') then
l_predicate := '1=1';
else
l_predicate := 'cj='|| ''''||vc_userid|| '''';
end if;
RETURN l_predicate;
END deptno_sec;
END a5_security;
- 添加安全策略
BEGIN
DBMS_RLS.add_policy (object_schema => 'VPD'
,object_name => 'sys_department_mapping'
,policy_name => 'dept_policy'
,function_schema => 'VPD'
,policy_function => 'a5_security.deptno_sec'
,statement_types => 'select'
);
END;
删除安全策略
begin
DBMS_RLS.drop_policy(object_name =>'sys_department_mapping',policy_name => 'dept_policy');
end;
- 创建测试用户
create user 采油三厂 identified by vpd;
grant connect to 采油三厂;
grant select on xxx(表或视图) to 采油三厂
- select * from vpd.sys_department_mapping;
- 参考文档
http://blog.itpub.net/17203031/viewspace-1135651
http://blog.csdn.net/t0nsha/article/details/7423638
浙公网安备 33010602011771号