ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle9i流环境清除(二)

Oracle9i流环境清除(二)

原创 Linux操作系统 作者:yangtingkun 时间:2007-11-17 00:00:00 0 删除 编辑

Oracle的文档上给出了流环境的配置过程,但是没有给出如何才能彻底清除流环境。

这篇文章介绍一下流环境中传播环境的清除过程。

Oracle9i流环境清除(一):http://yangtingkun.itpub.net/post/468/414098


首先确保所有于PROPAGATION相关的JOB已经停止,而且流应用过程已经根据上一篇的文章进行了清除。

检查一下系统中的传播配置:

SQL> SELECT PROPAGATION_NAME, RULE_SET_NAME FROM ALL_PROPAGATION;

PROPAGATION_NAME RULE_SET_NAME
------------------------------ ------------------------------
DATA_TO_REPORT RULESET$_144

SQL> SELECT RULE_SET_NAME, RULE_SET_EVAL_CONTEXT_OWNER, RULE_SET_EVAL_CONTEXT_NAME FROM USER_RULE_SETS
2 WHERE RULE_SET_NAME = 'RULESET$_144';

RULE_SET_NAME RULE_SET_EVAL_CONTEXT_OWNER RULE_SET_EVAL_CONTEXT_NAME
------------------------------ ------------------------------ ------------------------------
RULESET$_144 SYS STREAMS$_EVALUATION_CONTEXT

SQL> SELECT RULE_NAME FROM USER_RULES;

RULE_NAME
------------------------------
CAT_AREA_QUALITY_DEFINE143
CAT_AREA_QUALITY_DEFINE166
CAT_BUYER146
.
.
.
USER_DISTRICT165
USER_DISTRICT188

44 rows selected.

SQL> SELECT STREAMS_NAME, RULE_NAME FROM SYS.STREAMS$_RULES WHERE STREAMS_NAME = 'DATA_TO_REPORT';

STREAMS_NAME RULE_NAME
------------------------------ ------------------------------
DATA_TO_REPORT CAT_AREA_QUALITY_DEFINE143
DATA_TO_REPORT CAT_BUYER_DISTRICT145
DATA_TO_REPORT CAT_BUYER146
.
.
.
DATA_TO_REPORT PLT_PLAT164
DATA_TO_REPORT USER_DISTRICT165

22 rows selected.

有了清除APPLY的经验,PROPAGATION的清除就比较简单了。

首先使用DBMS_STREAMS_ADM包来去掉流环境中配置的PROPAGATION规则:

SQL> SELECT 'EXEC DBMS_STREAMS_ADM.REMOVE_RULE(''' || RULE_NAME || ''', ''PROPAGATION'', ''DATA_TO_REPORT'')'
2 FROM SYS.STREAMS$_RULES
3 WHERE STREAMS_NAME = 'DATA_TO_REPORT';

'EXECDBMS_STREAMS_ADM.REMOVE_RULE('''||RULE_NAME||''',''PROPAGATION'',''DATA_TO_REPORT'')'
--------------------------------------------------------------------------------------------
EXEC DBMS_STREAMS_ADM.REMOVE_RULE('CAT_AREA_QUALITY_DEFINE143', 'PROPAGATION', 'DATA_TO_REPORT')
EXEC DBMS_STREAMS_ADM.REMOVE_RULE('CAT_BUYER_DISTRICT145', 'PROPAGATION', 'DATA_TO_REPORT')
.
.
.
EXEC DBMS_STREAMS_ADM.REMOVE_RULE('PLT_PLAT164', 'PROPAGATION', 'DATA_TO_REPORT')
EXEC DBMS_STREAMS_ADM.REMOVE_RULE('USER_DISTRICT165', 'PROPAGATION', 'DATA_TO_REPORT')

22 rows selected.

SQL> EXEC DBMS_STREAMS_ADM.REMOVE_RULE('CAT_AREA_QUALITY_DEFINE143', 'PROPAGATION', 'DATA_TO_REPORT')

PL/SQL procedure successfully completed.

利用SQL生成脚本,然后通过REMOVE_RULE过程进行删除。这里需要注意,REMOVE_RULE过程中的RULE_TYPE类型应该为PROPAGATION,而不是文档上给出的PROPAGATE

确认所有流配置的PROPAGATION规则已经被清除掉了。

SQL> SELECT STREAMS_NAME, RULE_NAME FROM SYS.STREAMS$_RULES WHERE STREAMS_NAME = 'DATA_TO_REPORT';

no rows selected

下面清除掉PROPAGATION

SQL> EXEC DBMS_PROPAGATION_ADM.DROP_PROPAGATION('DATA_TO_REPORT')

PL/SQL procedure successfully completed.

SQL> SELECT * FROM ALL_PROPAGATION;

no rows selected

然后清除掉已经没有作用的RULE_SETRULESET$_144

SQL> EXEC DBMS_RULE_ADM.DROP_RULE_SET('RULESET$_144', TRUE)

PL/SQL procedure successfully completed.

SQL> SELECT * FROM USER_RULE_SETS WHERE RULE_SET_NAME = 'RULESET$_144';

no rows selected

检查RULE,发现规则并没有被清除掉,这时候可以通过关联SYS.STREAMS$_RULES将已经没有使用的RULE删除掉,不过为了保险起见,可以等到删除CAPTURE信息的时候,再将所有的RULE一起删除掉。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-69506/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1954
  • 访问量
    10876588