甲骨文安全访问策略VPD与ora - 28132

  

  ,,今天下午,开发同事反馈,某地市的医保甲骨文数据库执行存储过程报错,报错信息是ora - 28132:   

  

  
  

     是:,ERROR  ora - 28132:, MERGE  INTO 语法不支持安全策略,         相关的sql语句如下:/* +,MERGE 平行(4),*/
  ,,,INTO  DW_BILL  B
  ,,,USING  (SELECT  T1.HIS_ID,总和(T1.DETAIL_DEDUCT_AMOUNT),金额
  ,,,,,,,,,,,,得到(SELECT  DISTINCT  T。HIS_ID,
  ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,T。DETAIL_ID,
  ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,T。DETAIL_DEDUCT_AMOUNT
  ,,,,,,,,,,,,,,,,,,,,得到TMP_DEDUCTIONPLAN_BILLDETAIL  T), T1
  ,,,,,,,,,,,GROUP  BY  T1.HIS_ID), T1
  ,,,,(=B.HISID  T1.HIS_ID)
  ,,,WHEN  MATCHED 然后
  ,,,,,更新
  ,,,,,,,,SET  B.BMI_NOPAY =
  ,,,,,,,,,,,,(例
  ,,,,,,,,,,,,,,WHEN  T1.AMOUNT 祝辞=,B.BMI_NOPAY 然后
  ,,,,,,,,,,,,,,,0
  ,,,,,,,,,,,,,,其他
  ,,,,,,,,,,,,,,,B.BMI_NOPAY 作用;T1。量
  ,,,,,,,,,,,,结束),
  ,,,,,,,,,,,,B.RULETYPE ,=, 0
  ,,,,,,WHERE  B.TABLE_PAR 祝辞=,I_TABLEPAR_BEGIN
  ,,,,,,,,以及B.TABLE_PAR  & lt;, I_TABLEPAR_END;            查看甲骨文联机文档解释:         [oracle@se31 ~] oerr ora 28132美元
  28132年,00000年,“合并成语法不支持安全策略。”
//,*原因:合并成语法不支持安全策略alt=凹坠俏陌踩梦什呗訴PD与ora - 28132”>
        经确认,合并成的sql语句涉及的目标表上的确添加了访问控制策略:ACLINSERT, ACLQUERY, ACLUPDATE,         但是,并入语句使用要求插入、删除、更新同时支持,所以并入语句执行报错ora - 28132。         解决方法:         1,为合并成涉及的目标表添加ACLDELETE策略:         
  
  
  
  
  
  
  
        2,删除并入涉及的目标表上添加的访问控制策略:         
  
  
  ”);
  
  
        
  
  
  
  
  
        
        

  所谓虚拟专用数据库(VPD)指的是,通过在数据库里进行配置,从而让不同的用户只能查看某个表里的部分数据。   

  

  VPD分为以下两个级别:   

  

  行级别:在该级别下,可以控制某些用户只能查看到某些数据行。比如,对于销售数据表销售来说,每个销售人员只能检索出他自己的销售数据,   

  

  不能查询其他销售人员的销售数据。   

  

  列级别:在该级别下,可以控制某些用户不能检索某个表的某个列的值比。如用户人力资源下的员工表中,含有工资(工资)列,由于该列比较敏感,   

  

  因此不让其他用户查询该列的值。其他用户检索该列时,会发现其值全都为空(null)。   

甲骨文安全访问策略VPD与ora - 28132