重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

标题: 配置审计表的跳过规则 [打印本页]

作者: Inkcup    时间: 3 天前
标题: 配置审计表的跳过规则
配置审计表的跳过规则
===============
-- 1. 先确认审计表是否存在
SELECT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_NAME IN ('AUD$', 'FGA_LOG$')
AND OWNER = 'SYS';

-- 2. 停止SQL Apply
ALTER DATABASE STOP LOGICAL STANDBY APPLY;

-- 3. 跳过审计表(使用上面查询到的实际表名)
-- 标准审计表
EXEC DBMS_LOGSTDBY.SKIP('DML', 'SYS', 'AUD$', NULL);
EXEC DBMS_LOGSTDBY.SKIP('SCHEMA_DDL', 'SYS', 'AUD$', NULL);

-- 细粒度审计表(如果存在)
EXEC DBMS_LOGSTDBY.SKIP('DML', 'SYS', 'FGA_LOG$', NULL);
EXEC DBMS_LOGSTDBY.SKIP('SCHEMA_DDL', 'SYS', 'FGA_LOG$', NULL);

-- 4. 启动SQL Apply
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

-- 5. 验证跳过规则
SELECT STATEMENT_OPT, OWNER, NAME FROM DBA_LOGSTDBY_SKIP WHERE OWNER = 'SYS';

------------------------
检查逻辑备库是否同步:

-- 监控应用状态(应该显示APPLYING,应用完成则显示IDLE)
SELECT STATE FROM V$LOGSTDBY_STATE;

-- 查看进程状态(READER应该在处理新日志)
SELECT TYPE, STATUS, STATUS_CODE FROM V$LOGSTDBY_PROCESS;

========================
========================

配置其他审计表的跳过规则
==================
停止SQL Apply
-- 在配置跳过规则前,必须先停止SQL Apply服务

ALTER DATABASE STOP LOGICAL STANDBY APPLY;

-- 查询审计记录引用的表名和所属模式(去重,只取最近5条)
SELECT DISTINCT
    OWNER,      -- 这就是 AUDIT_SCHEMA
    OBJ_NAME    -- 这就是 AUDIT_TABLE_NAME
FROM DBA_AUDIT_TRAIL
WHERE ROWNUM <= 5;

-- 跳过对该表的DML操作(INSERT, UPDATE, DELETE等)
EXECUTE DBMS_LOGSTDBY.SKIP(stmt => 'DML', schema_name => 'AUDIT_SCHEMA', object_name => 'AUDIT_TABLE_NAME', proc_name => NULL);

-- 跳过对该表的DDL操作(CREATE, ALTER, DROP等)
EXECUTE DBMS_LOGSTDBY.SKIP(stmt => 'SCHEMA_DDL', schema_name => 'AUDIT_SCHEMA', object_name => 'AUDIT_TABLE_NAME', proc_name => NULL);

启动SQL Apply
-- 规则配置完成后,重新启动SQL Apply服务使规则生效
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

--查询 DBA_LOGSTDBY_SKIP 视图,确认规则已成功添加(如果查询返回了刚才添加的记录,则表示规则配置成功)
SELECT OWNER, NAME, STATEMENT_OPT
FROM DBA_LOGSTDBY_SKIP
WHERE OWNER = 'AUDIT_SCHEMA' AND NAME = 'AUDIT_TABLE_NAME';








欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2