四、 清除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过程。