Oracle的文档上给出了流环境的配置过程,但是没有给出如何才能彻底清除流环境。
这篇文章介绍一下流环境中捕获环境的清除过程。
Oracle9i流环境清除(一):http://yangtingkun.itpub.net/post/468/414098
Oracle9i流环境清除(二):http://yangtingkun.itpub.net/post/468/414104
首先确保所有的CATPURE相关的JOB已经停止,而且APPLY和PROPAGATION部分已经根据上两篇的文章进行了清除。
检查一下系统中的捕获配置:
SQL> SELECT CAPTURE_NAME, QUEUE_NAME, RULE_SET_NAME FROM ALL_CAPTURE;
CAPTURE_NAME QUEUE_NAME RULE_SET_NAME
------------------------------ ------------------------------ ------------------------------
DATA_CAPTURE STREAMS_QUEUE_D1 RULESET$_167
1 row selected.
SQL> SELECT RULE_SET_NAME, RULE_SET_EVAL_CONTEXT_OWNER, RULE_SET_EVAL_CONTEXT_NAME FROM USER_RULE_SETS;
RULE_SET_NAME RULE_SET_EVAL_CONTEXT_OWNER RULE_SET_EVAL_CONTEXT_NAME
------------------------------ ------------------------------ ------------------------------
RULESET$_167 SYS STREAMS$_EVALUATION_CONTEXT
STREAMS_QUEUE_D1_R STRMADMIN AQ$_STREAMS_QUEUE_TABLE_D1_V
2 rows selected.
SQL> SELECT RULE_NAME FROM ALL_RULES;
RULE_NAME
------------------------------
CAT_STREAM_DATA178
CAT_REGION177
.
.
.
CAT_ZONE_DEALER180
CAT_WRAP179
44 rows selected.
SQL> SELECT STREAMS_NAME, RULE_NAME FROM SYS.STREAMS$_RULES;
STREAMS_NAME RULE_NAME
------------------------------ ------------------------------
DATA_CAPTURE CAT_DOSEAGE_FORM172
DATA_CAPTURE CAT_DRUG173
DATA_CAPTURE CAT_METRIC174
.
.
.
DATA_CAPTURE CAT_CATEGORY170
DATA_CAPTURE CAT_DISTRICT171
22 rows selected.
SQL> SELECT * FROM ALL_LOG_GROUPS;
OWNER LOG_GROUP_NAME TABLE_NAME ALWAYS
---------- ------------------------------ ------------------------------ ------
www.ixdba.net
NDMAIN LOG_GROUP_CAT_AREA_QUA_DEF_PK CAT_AREA_QUALITY_DEFINE ALWAYS
NDMAIN LOG_GROUP_PLT_PLAT_PK PLT_PLAT ALWAYS
.
.
.
NDMAIN LOG_GROUP_USER_DISTRICT_PK USER_DISTRICT ALWAYS
NDMAIN LOG_GROUP_CAT_STR_DATA_PK CAT_STREAM_DATA ALWAYS
22 rows selected.
SQL> SELECT NAME, QUEUE_TABLE FROM USER_QUEUES;
NAME QUEUE_TABLE
------------------------------ ------------------------------
STREAMS_QUEUE_D1 STREAMS_QUEUE_TABLE_D1
AQ$_STREAMS_QUEUE_TABLE_D1_E STREAMS_QUEUE_TABLE_D1
这些配置就是需要清除的。
首先还是清除流环境的CAPTURE规则,仍然是通过DBMS_STREAMS_ADM的REMOVE_RULE过程来进行清除:
SQL> EXEC DBMS_STREAMS_ADM.REMOVE_RULE('CAT_DRUG173', 'CAPTURE', 'DATA_CAPTURE')
PL/SQL procedure successfully completed.
全部清除后,检查视图:
SQL> SELECT * FROM SYS.STREAMS$_RULES;
no rows selected
下面清除CAPTURE过程:
SQL> EXEC DBMS_CAPTURE_ADM.DROP_CAPTURE('DATA_CAPTURE')
PL/SQL procedure successfully completed.
SQL> SELECT * FROM ALL_CAPTURE;
no rows selected
去掉所有的RULE和RULESET