Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 合并报告:ORA-28138:指定的策略谓词无效_Oracle_Merge_Audit_Auditing - Fatal编程技术网

Oracle 合并报告:ORA-28138:指定的策略谓词无效

Oracle 合并报告:ORA-28138:指定的策略谓词无效,oracle,merge,audit,auditing,Oracle,Merge,Audit,Auditing,执行合并语句时: merge into employees e using new_employees n on (e.employee_id = n.employee_id) when matched then update set e.salary = n.salary when not matched then insert (employee_id,first_name,last_name,email,phone_number,hire_date, job_id,s

执行合并语句时:

merge into employees e using new_employees n
on (e.employee_id = n.employee_id)
when matched then
update set e.salary = n.salary
when not matched then
insert (employee_id,first_name,last_name,email,phone_number,hire_date,
           job_id,salary,commission_pct,manager_id,department_id)
values (n.employee_id,n.first_name,n.last_name,n.email,n.phone_number,
           n.hire_date,n.job_id,n.salary,n.commission_pct,n.manager_id,
           n.department_id);
它报告:ORA-28138:指定了无效的策略谓词。 我怎么了

我发现此错误是由细粒度审核引起的。我以前创建过一个策略,如下所示:

 DBMS_FGA.add_policy (object_schema       => 'primer',
                object_name         => 'employees',
                policy_name         => 'audit_policy',
                audit_condition     => 'employee_id = 100',
                audit_column        => 'phone_number,salary',
                handler_schema      => 'primer',
                handler_module      => 'FGA_SEND_MAIL(primer,employees,audit_policy)',
                ENABLE              => TRUE,
                statement_types     => 'select,insert,update,delete',
                audit_trail         => DBMS_FGA.db_extended,
                audit_column_opts   => DBMS_FGA.any_columns);

create or replace procedure primer.fga_send_mail (p_schema   in varchar2,
                                          p_obj      in varchar2,
                                          p_pol      in varchar2)
as
begin
   dbms_output.put_line ('Audit Trail Generated');
   dbms_output.put_line ('SQL=' || sys_context ('USERENV', 'CURRENT_SQL'));
   dbms_output.put_line ('USER' || sys_context ('USERENV', 'SESSION_USER'));
结束


有什么问题吗?

您的员工表上是否应用了VPD策略。您可以通过运行以下查询select*from user_Policys来检查这一点,其中object_name='EMPLOYEES'我执行了该语句,它报告无。我发现prceeding语句可以作为用户
sys
执行。合并是否需要特殊权限?您是否有更新授权?employees表在其自己的架构中。您的employees表上是否应用了VPD策略。您可以通过运行以下查询select*from user_Policys来检查这一点,其中object_name='EMPLOYEES'我执行了该语句,它报告none。我发现prceceding语句可以作为user
sys
执行。合并是否需要特权?您是否拥有更新授权?EMPLOYEES表在其自己的架构中。