zoukankan      html  css  js  c++  java
  • Oracle策略相关

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

    参照 http://blog.csdn.net/diyyong/article/details/19552637

    用法如下:

    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;

    创建函数:

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

      

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

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

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

    select * from emp;

     删除策略:

    begin  
      sys.dbms_rls.drop_policy(object_schema => 'scott',  
                               object_name => 'emp',  
                               policy_name => 'sal');  
    end;
    

      

  • 相关阅读:
    找控件的父类
    silverlight和wpf中暴露 给子类override
    Oracle PLSQL 记录
    C#之TopShelf启动Windows服务 原文链接:https://blog.csdn.net/qq_36664495/java/article/details/90600995
    Super socket 记录知识
    oracle 查找字符位置 开始按照长度截取
    转 acl 库是啥、主要包含哪些功
    转自 posted on 2015-05-18 11:50 LitDev https://www.cnblogs.com/New-world/p/4511543.html
    dtu server 编译错误
    iOS 杂笔-22(万年一遇~一张图片对代理的理解)
  • 原文地址:https://www.cnblogs.com/mellowsmile/p/4916858.html
Copyright © 2011-2022 走看看