处理oracle逻辑备库不应用某一个特定dml语句
例如设置逻辑备库不应用update prod set id=1 where id=91
CREATE OR REPLACE PROCEDURE handle_sys_gen_big3 (statement IN VARCHAR2,
statement_type IN VARCHAR2,
schema IN VARCHAR2,
name IN VARCHAR2,
xidusn IN NUMBER,
xidslt IN NUMBER,
xidsqn IN NUMBER,
error IN VARCHAR2,
new_error OUT VARCHAR2) AS
BEGIN
-- Always make sure that the default is to use the original statement
IF upper(statement) LIKE '%update%PROD%BIG3%where%ID%= 91%'
THEN
--
-- Set NEW_ERROR to NULL to allow the apply to continue
--
new_error := NULL;
END IF;
END HANDLE_SYS_GEN_BIG3;
/
ALTER DATABASE STOP LOGICAL STANDBY APPLY;
exec dbms_logstdby.skip_error('DML','PROD','BIG3','HANDLE_SYS_GEN_BIG3');
ALTER DATABASE START LOGICAL STANDBY APPLY immediate ;
类似的还可以做逃过其他操作