ORA10G Streams复制实现文档Word格式.docx
《ORA10G Streams复制实现文档Word格式.docx》由会员分享,可在线阅读,更多相关《ORA10G Streams复制实现文档Word格式.docx(30页珍藏版)》请在冰豆网上搜索。
connsystem/destination_DBassysdba;
altersystemsetglobal_names=truescope=spfile;
说明streams_pool_size在生产环境中最好>
200m参数需要重新启动后才生效
Shutdownimmediate;
Startup;
1.3归档模式设置
查看是否为归档模式
Archiveloglist
源数据库必须处于归档模式
shutdownimmediate;
startupmount;
alterdatabasearchivelog;
alterdatabaseopen;
1.4创建复制表空间
Source_DB:
createtablespacestreams_tbsdatafile'
/oracle/product/10.2.0/oradata/streams_tbs.dbf'
size50Mautoextendon;
destination_DB:
E:
\ORACLE\PRODUCT\10.2.0\ORADATA\DESTINATION_DB\streams_tbs.dbf'
1.5创建复制用户
源与目标都需要创建
CREATEUSERstrmadminIDENTIFIEDBYstrmadminpw
DEFAULTTABLESPACEstreams_tbs
QUOTAUNLIMITEDONstreams_tbs;
GRANTconnect,resource,dba,aq_administrator_roleTOstrmadmin;
1.6创建数据库链接
在这里要做源服务器与目标服务器的tnsnames.ora文件需要设置一致
CONNECTstrmadmin/strmadmin@source_DB
CREATEDATABASELINKdestination_DB_LinkCONNECTTOstrmadminIDENTIFIEDBYstrmadminpw
USING'
destination_DB'
;
CONNECTstrmadmin/strmadmin@destination_DB
CREATEDATABASELINKsource_DB_LinkCONNECTTOstrmadminIDENTIFIEDBYstrmadminpw
source_DB'
注:
dblink的名字最好与目标数据库的名字一样,否则有可能不能被成功复制
1.7建立队列
CONNECTstrmadmin/strmadminpw@destination_DB
EXECDBMS_STREAMS_ADM.SET_UP_QUEUE();
CONNECTstrmadmin/strmadminpw@source_DB
这里的queue_name就默认为strmadmin.streams_queue,queru_talbe就默认为streams_queue_table
也可指定名称:
DBMS_STREAMS_ADM.SET_UP_QUEUE(queue_name=>
'
strmadmin.streams_queue_2'
queue_table=>
streams_queue_table_2'
)
1.8.建立复制替代主键
为没有主键的表来需要设置
--CONNECTSYS/ORACLE@source_DBASSYSDBA
在源执行
1.8.1复制单表
ALTERTABLEhrp270.ss_installADDSUPPLEMENTALLOGDATA(PRIMARYKEY)COLUMNS;
1.8.2复制数据库(可以省略):
为一个数据库设置复制主键
alterdatabasehrp270addSUPPLEMENTALLOGDATA(PRIMARYKEY)COLUMNS;
1.8.3设置追加日志(可以省略)
如果复制表上没有主键或者惟一的NOTNULL约束,就需要追加日志。
为一个表增加追加日志:
Altertablehrp270.gy_ksdmaddSUPPLEMENTALLOGDATA(PRIMARYKEY)COLUMNS;
为一个数据库增加追加日志:
alterdatabasehrp270addSUPPLEMENTALLOGDATA;
1.9建立传播队列
在源数据建立传播队列,指明从哪里到哪里
1.9.1传播表
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(
table_name=>
'
hrp270.ss_install'
streams_name=>
source_DB_to_destination_DB'
source_queue_name=>
strmadmin.streams_queue'
destination_queue_name=>
strmadmin.streams_queue@destination_DB_Link'
include_dml=>
true,
include_ddl=>
source_database=>
--源SID
inclusion_rule=>
true);
END;
/
1.9.2传播schema
DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(
schema_name=>
hrp270'
hrp270_to_bsoft'
strmadmin.streams_queue@destination_DB_Link'
include_tagged_lcr=>
false,
'
1.10建立捕获
在源数据服务器上操作
1.10.1捕获表
DBMS_STREAMS_ADM.ADD_TABLE_RULES(
streams_type=>
capture'
capture_first'
queue_name=>
1.10.2捕获schema:
DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
streams_queue'
null,
设置capture参数
DBMS_CAPTURE_ADM.SET_PARAMETER(
capture_name=>
parameter=>
parallelism'
value=>
1'
);
--在10G可以是8,9i中必须为1
1.11建立SCN号同步
1.11.1设置表SCN同步:
DECLARE
iscnNUMBER;
--VariabletoholdinstantiationSCNvalue
iscn:
=DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@DESTINATION_DB_LINK(
source_object_name=>
source_database_name=>
--源服务器sid
instantiation_scn=>
iscn);
1.11.2设置Schema级SCN同步:
DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN@DESTINATION_DB_LINK(
source_schema_name=>
source_database_name=>
source_DB'
instantiation_scn=>
iscn,
RECURSIVE=>
TRUE);
1.12建立apply联系
在目标数据库操作
1.12.1表级联系:
apply'
apply_first'
1.12.2Schema级联系
apply_second'
strmadmin.streams_queue_2'
source_DB'
1.12.3Apply参数设置
是否按业务按源数库的事务执行顺序来执行操作,默认值为FULL,完全按照事务次序执行,’NONE’表是不按次序来执行
DBMS_APPLY_ADM.SET_PARAMETER(
apply_name=>
APPLY_first'
commit_serialization'
none'
并行处理数高低,默认值是1,就是立即处理,如果设置成8则表示如果8个以上用户来同时处理就需要等待
PARALLELISM'
8'
设置成如果冲突则自动跳过,’n’表示跳过,'y’表示停止,默认值是停止
disable_on_error'
n'
2启动与停止复制
2.1启动复制
2.1.1在源数据库启动传播
DBMS_AQADM.ENABLE_PROPAGATION_SCHEDULE(
destination=>
destination_db_link'
2.1.2在源数据库启动捕获
DBMS_CAPTURE_ADM.START_CAPTURE(
2.1.3在目标数据库启动apply
DBMS_APPLY_ADM.START_APPLY(
2.2停止复制
CONNECTstrmadmin/strmadminpw@Source_DB;
2.2.1停止捕获
DBMS_CAPTURE_ADM.STOP_CAPTURE(
2.2.2停止传播
DBMS_AQADM.DISABLE_PROPAGATION_SCHEDULE(
destination_db_link'
2.2.3停止应用
CONNECTstrmadmin/strmadminpw@destination_DB;
DBMS_APPLY_ADM.STOP_APPLY(
3删除复制
3.1按明细步骤删除
在删除操作前需要先做停止复制操作
3.1.1删除传播
DBMS_PROPAGATION_ADM.DROP_PROPAGATION(
propagation_name=>
HRP270_TO_BSOFT'
drop_unused_rule_sets=>
3.1.2删除捕获
DBMS_CAPTURE_ADM.DROP_CAPTURE(
3.1.3删除应用
DBMS_APPLY_ADM.DROP_APPLY(
3.1.4删除队列(源与目标都要删除)
ExecDBMS_STREAMS_ADM.REMOVE_QUEUE(queue_name=>
cascade=>
true);
3.2快速删除
在源数据库与目标数据库可以使用下面命令来删除STREAMS
EXECDBMS_STREAMS_ADM.REMOVE_STREAMS_CONFIGURATION();
4信息查看及冲突处理
4.1查看信息及错误
4.1.1查看apply信息
COLUMNAPPLY_NAMEHEADING'
ApplyProcessName'
FORMATA25
COLUMNTOTAL_RECEIVEDHEADING'
Total|Trans|Received'
FORMAT99999999
COLUMNTOTAL_APPLIEDHEADING'
Total|Trans|Applied'
COLUMNTOTAL_ERRORSHEADING'
Total|Apply|Errors'
FORMAT9999
COLUMNBEING_APPLIEDHEADING'
Total|TransBeing|Applied'
COLUMNTOTAL_IGNOREDHEADING'
Total|Trans|Ignored'
SELECTAPPLY_NAME,
TOTAL_RECEIVED,
TOTAL_APPLIED,
TOTAL_ERRORS,
(TOTAL_ASSIGNED-(TOTAL_ROLLBACKS+TOTAL_APPLIED))BEING_APPLIED,
TOTAL_IGNORED
FROMV$STREAMS_APPLY_COORDINATOR;
4.1.2查看应用apply错误
Select*fromall_apply_error;
4.1.3显示当前APPLY应用参数
ApplyProcess|Name'
FORMATA15
COLUMNPARAMETERHEADING'
Parameter'
FORMATA20
COLUMNVALUEHEADING'
Value'
COLUMNSET_BY_USERHEADING'
SetbyUser?
PARAMETER,
VALUE,
SET_BY_USER
FROMDBA_APPLY_PARAMETERS;
4.1.4查看传播情况
⏹传播设置信息
SELECTp.DESTINATION_DBLINK,
DECODE(s.SCHEDULE_DISABLED,
Y'
'
Disabled'
N'
Enabled'
)SCHEDULE_DISABLED,
s.PROCESS_NAME,
s.FAILURES,
s.LAST_ERROR_TIME,
s.LAST_ERROR_MSG
FROMDBA_QUE