Oracle策略相关

数据库 Oracle
Oracle策略可以限制查询、修改、删除、新增等操作,刚接触,对查询做一个测试:

  Oracle策略可以限制查询、修改、删除、新增等操作,刚接触,对查询做一个测试:

  用法如下:

  begin

  -- Call the procedure

  sys.dbms_rls.add_policy(object_schema => :数据表(或视图)所在的Schema名称/用户,

  object_name => :数据表(或视图)的名称,

  policy_name => :policy的名称

  function_schema => :返回Where子句的函数所在Schema名称/用户,

  policy_function => :返回Where子句的函数名称,

  statement_types => :要使用该Policy的DML类型,如'Select,Insert,Update,Delete',

  update_check => 仅适用于Statement_Type为'Insert,Update',值为'True'或'False',

  enable => 是否启用,值为'True'或'False',

  static_policy => 默认值为FALSE。如果它被设置为TRUE则所有用户启用该策略,sys或特权用户例外。

  policy_type => :默认值是null,意味着static_policy的值决定,在这里指定任何策略将覆盖static_policy的值。

  long_predicate => long_predicate,

  sec_relevant_cols => :敏感的字段名称,

  sec_relevant_cols_opt => :设置为dbms_rls.ALL_ROWS来显示所有的行,敏感的列的值为null);

  end;

  创建函数:

 

  1. create or replace function f_policy 
  2.   p_owner  in varchar2,--两个参数必须要有,名字可以不一样 
  3.   p_object in varchar2 
  4. return varchar2 as 
  5.   v_sql varchar2(2000); 
  6. begin 
  7.   v_sql := lower(sys_context('USERENV''CURRENT_SQL', 4000)); 
  8.   if instr(v_sql, ' where ') = 0 then 
  9.     return 'deptno=10'
  10.     --raise_application_error(-20001, '未包含where条件'); 
  11.   end if; 
  12.   return ''
  13. end;

  添加策略(需在sys下添加):

  1. begin 
  2. dbms_rls.add_policy(object_schema => 'scott', object_name => 'emp'
  3. policy_name => 'sal', function_schema => 'scott'
  4. policy_function => 'f_policy', sec_relevant_cols => 'sal'); 
  5. end;

  该策略和函数搭配,限制了如果关于emp表的dml语句中未包含where下自动添加where dept=10的条件,示例如下:

  select * from emp;

  删除策略:

  1. begin  
  2.   sys.dbms_rls.drop_policy(object_schema => 'scott',  
  3.                            object_name => 'emp',  
  4.                            policy_name => 'sal');  
  5. end

 

责任编辑:honglu 来源: 红黑联盟
相关推荐

2010-04-20 14:10:35

Oracle访问

2009-11-19 15:32:50

Oracle索引

2010-11-19 12:03:41

ORACLE密码策略

2010-10-26 13:17:28

oracle备份策略

2009-12-11 10:03:28

策略路由配置

2010-04-07 17:56:49

Oracle位图索引

2010-05-05 15:38:31

Oracle安全策略

2010-10-29 10:22:21

Oracle表空间

2010-04-08 09:27:44

Oracle 安装脚本

2010-04-26 11:37:25

Oracle merg

2010-03-31 18:38:10

Oracle命令

2010-03-30 13:49:15

Oracle clob

2010-04-12 13:45:35

Oracle认证

2010-04-01 14:35:36

Oracle绑定变量

2010-04-08 09:00:29

Oracle内存结构

2009-10-27 13:38:08

Oracle解锁

2024-10-31 16:31:16

2010-05-05 11:48:27

Oracle设计开发阶

2013-03-12 09:51:02

2010-05-04 15:49:24

Oracle修改
点赞
收藏

51CTO技术栈公众号