为什么FGA Oracle会捕获错误?

为什么FGA Oracle会捕获错误?,oracle,Oracle,我正在尝试对具有特殊用户的表进行审核。从系统写入: BEGIN DBMS_FGA.add_policy ( object_schema => 'system', object_name => 'my_fga_table', policy_name => 'my_fga_policy_1', statement_types => 'SELECT, INSERT, DELETE, UPD

我正在尝试对具有特殊用户的表进行审核。从
系统
写入:

BEGIN
   DBMS_FGA.add_policy (
        object_schema   => 'system',
        object_name     => 'my_fga_table',
        policy_name     => 'my_fga_policy_1',
        statement_types => 'SELECT, INSERT, DELETE, UPDATE',
        audit_condition => 'USER=''REFEREE_1'' OR USER=''REFEREE_2'''
   );
END;
裁判员\u 1
我试图更改表格:

UPDATE SYSTEM.my_fga_table SET points=90 WHERE boxer_name='BOXER_1';
Oracle回答:

Error starting at line : 1 in command -
UPDATE SYSTEM.my_fga_table SET points=90 WHERE boxer_name='BOXER_1'
Error at Command Line : 1 Column : 15
Error report -
SQL Error: ORA-28138: Error in Policy Predicate
28138. 00000 -  "Error in Policy Predicate"
*Cause:    An invalid policy predicate was specified.
*Action:   Please specify a valide policy Predicate for the FGA policy
问题是什么?

第六点:

audit\u条件
必须是一个布尔表达式…[段落的其余部分被截断]

表达式不能使用AND和OR等运算符组合条件

问题是您正在使用
组合两个条件

似乎您必须创建两个策略,一个策略的
audit\u条件设置为
'USER='referer\u 1'
,另一个策略的条件设置为
'USER='referer\u 2'


最后,请不要在
系统
模式或其他内置Oracle模式中创建对象。如果您一直这样做,Oracle可能会拒绝支持您。

很高兴了解
dbms\u fga
,但您知道它与
dbms\u rls
包有什么不同吗?我在搜索时没有得到足够的信息。提前谢谢。@Sujitmohanty30:如果你有单独的问题要问,请问单独的问题。谢谢你的回答。是的,这是个好主意,但我已经想好了。