【Oracle】设置FGA(Fine-Grained Audit)细粒度审计
-- 启用对特定表的审计操作(插入、更新、删除)
BEGIN
-- 为插入操作启用审计
DBMS_FGA.ADD_POLICY(
object_schema => 'YOUR_SCHEMA_NAME', -- 替换为你的模式名
object_name => 'YOUR_TABLE_NAME', -- 替换为你的表名
policy_name => 'audit_insert_policy', -- 审计插入的策略名
audit_condition => NULL, -- 可以设置审计条件,例如 ':NEW.COLUMN_NAME = ''VALUE'''
audit_column => 'ALL', -- 审计所有列或者指定列名
handler_schema => 'YOUR_SCHEMA_NAME', -- 替换为你的模式名,通常是'SYS'
handler_module => 'SYS.AUDIT_INSERT' -- Oracle提供的审计处理模块
);
-- 为更新操作启用审计
DBMS_FGA.ADD_POLICY(
object_schema => 'YOUR_SCHEMA_NAME', -- 替换为你的模式名
object_name => 'YOUR_TABLE_NAME', -- 替换为你的表名
policy_name => 'audit_update_policy', -- 审计更新的策略名
audit_condition => NULL, -- 可以设置审计条件
audit_column => 'ALL', -- 审计所有列或者指定列名
handler_schema => 'YOUR_SCHEMA_NAME', -- 替换为你的模式名,通常是'SYS'
handler_module => 'SYS.AUDIT_UPDATE' -- Oracle提供的审计处理模块
);
-- 为删除操作启用审计
DBMS_FGA.ADD_POLICY(
object_schema => 'YOUR_SCHEMA_NAME', -- 替换为你的模式名
object_name => 'YOUR_TABLE_NAME', -- 替换为你的表名
policy_name => 'audit_delete_policy', -- 审计删除的策略名
audit_condition => NULL, -- 可以设置审计条件
audit_column => 'ALL', -- 审计所有列或者指定列名
handler_schema => 'YOUR_SCHEMA_NAME', -- 替换为你的模式名,通常是'SYS'
handler_module => 'SYS.AUDIT_DELETE' -- Oracle提供的审计处理模块
);
END;
/
-- 注意:在实际应用中,你需要将YOUR_SCHEMA_NAME、YOUR_TABLE_NAME、以及策略名替换成实际的模式名、表名和策略名。
这段代码示例展示了如何为特定的表启用插入、更新和删除操作的审计。在实际使用时,需要将代码中的占位符替换为实际的数据库模式名、表名和策略名。此外,你可以根据需要设置audit_condition
来限定审计的条件。
评论已关闭