四、 清除Streams复制环境

  一方面是为了方便后面的测试环境搭建,一方面也是因为10g中Streams复制环境的移除非常简单,因此将此做为本章最后一小节。

  要移除整个复制环境非常简单,只需在源端目标端以STREAMS管理员帐号登陆,并分别执行 dbms_streams_adm.remove_streams_configuration ,如例 :

    JSSWEB> conn strmadmin/strmadmin

    Connected.

    JSSWEB > exec dbms_streams_adm.remove_streams_configuration;

    PL/SQL procedure successfully completed

 

    JSSSTR> conn strmadmin/strmadmin

    Connected.

    JSSSTR > exec dbms_streams_adm.remove_streams_configuration;

    PL/SQL procedure successfully completed

  然后视需求删除STREAMS管理员帐号及所属表空间即可。

  正常情况下,执行 DBMS_STREAMS_ADM.REMOVE_STREAMS_CONFIGURATION 会进行下列操作:

  • 删除所有capture进程。
  • 如果仍有表正准备初始化,则通过DBMS_CAPTURE_ADM.ABORT_TABLE_INSTANTIATION过程中止。
  • 如果仍有schema正准备初始化,则通过DBMS_CAPTURE_ADM.ABORT_SCHEMA_INSTANTIATION过程中止。
  • 如果数据库仍正准备初始化,则通过DBMS_CAPTURE_ADM.ABORT_GLOBAL_INSTANTIATION过程中止。
  • 删除propagation进程(DBMS_AQADM包创建的propagation不会被删除),删除之前,传播任务将会被禁止。
  • 禁止所有传播任务。
  • 删除所有apply进程。如果apply进程存在应用错误,则在删除apply进程前会首先删除这些应用错误。
  • 删除apply进程的DDL handlers,不过用于handlers的pl/sql过程不会被删除。
  • 删除apply进程的message handlers,同样用于handlers的pl/sql过程不会被删除。
  • 删除apply进程的precommit handlers,用于handlers的pl/sql过程不会被删除。
  • 删除所有应用对象,schema的instantiation SCN和ignore SCN。
  • 删除消息客户端
  • 重置使用DBMS_STREAMS_ADM.SET_MESSAGE_NOTIFICATION设置的message notification specifications
  • 删除DML handlers和error handlers,用于handlers的pl/sql过程不会被删除。
  • 删除update conflict handlers。
  • 删除apply tables的substitute key columns。
  • 删除DBMS_STREAMS_ADM创建的规则集。但不会删除DBMS_RULE_ADM创建的规则集。

    提示:

    在执行删除capture/apply进程前会首先停止这些进程。 REMOVE_STREAMS_CONFIGURATION 过程可 重 复执行(不管是否执行成功) ,如果执行出错,可在解决造成错误的原因后重新执行该过程。

    另外,有时候直接执行REMOVE_STREAMS_CONFIGURATION会报错,这个时候可以尝试通过DBMS_CAPTURE_ADM/DBMS_PROPAGATION_ADM/DBMS_APPLY_ADM手工停止并删除捕获/传播/应用进程,然后再执行REMOVE_STREAMS_CONFIGURATION过程。