1. 首页
  2. 数据库
  3. Oracle
  4. ORACLE 10G 数据库 通过STREAM实现数据库双向同步

ORACLE 10G 数据库 通过STREAM实现数据库双向同步

上传者: 2018-12-25 15:00:17上传 PDF文件 4.01MB 热度 45次
ORACLE 10G 数据库 通过STREAM实现数据库双向同步2双向同步说明一般情况下,只需要把数据库从源库同步到目标数据库,原库做交易库,目标库作为査询库但是也有这样的需求:源库作为后台应用程序的数据库,目标库作为前台应用程序的数据库,双方都要操作数据库,数据库要求一致。这样需要数据库双向同步,而且同时把数据库变更应用到对方数据库。3部署步骤构建 Oracle双向流复制是一个十分复杂的过程,我写这个文档的目的是尽量有条理地列出所需做的工作,帮助DBA更有效的建设流复制环境。1.以scot模式为复制示例,一般只要在创建数据库时选择了安装 sampleschema,都会存在该seot模式;至少保证源库中存在该 schema,以便可以初始化到目标库中2.在源和目标2个数据库中创建 strmadmin流管理用户,当然你也可以选用其他名字。同时在2个库中都要创建 streams使用的表空间,以便让logm使用它3.1打开归档模式docin. com如果数据库已经处于归档模式,则可以跳过此步骤sqlplus/as sysdbashutdown immediatestartup mountalter database archivelogalter database open3.2创建 stream表空间和管理用户CREATE TABLESPACE streams tbs dataFile XXXXXX SIZE 100M REUSEAUTOEXTEND ON MAXSIZE UNLIMITED/米10gr2中 logon默认使用 SYSAUX表空间*exec DBMS LOGMNR D SET TABLESPACE ( streams tbs)/*创建完表空间后,接着要创建 strmadmin用户*CREATE USER strmadmin Identified by strmadminDEFAULT TABLESPACE Streams tbsQUOTA UNLIMITED ON streams tbsGRANT DBA TO strmadminBEGINn豆丁DBMS STREAMS AUTH. GRANT ADMIN PRIVILEGE Lgrantee => strmadmingrant _ privileges=>truecleocIn. comEND/*可以通过査询 dba streams administrator视图检査用户是否正确授予流管理权限*SQL> SELECT k FROM dba streams administratorUSERNAMELOC ACCMACLEANYES YESSTRMADMINYES YES3.3修改数据库初始化参数3.在2边数据库中都需要设置合理的实例初始化参数,我们以10 g release2为例参数名与推荐值: job queue interval=描述:job的队列的扫描参数,默认为5,即5s扫措一次出于何种考虑:设置较小的 job queue interva1有利于 propagation作业如何设置: alter system set" job queue interval"=1 scope= spfile;/*注意 scope= spfile的参数都需要重启实例方能生效参数名与推荐值: COMPATIBLE>=10.2.0.0描述:数据库版本兼容性参数,以前介绍过,不再展开出十何种考虑:10 g release2的部分 Streams新特性要求该参数全少为10.20.0或更高如何设置:只有从较低版本升缴到10gr2的数据库需要设置该参数,alter system set compatible= 10. 2.0.0 scope=spfile参数名与推荐值: GLOBAL NAMES=trueom描述:指定是否要求 database link名与数据库全局名一致,默认为 FALS也就是不需要一致出于何种考虑:帮助我们准确识别 database link和数据库的关系,避免误操作如何设置: altcr system sct global names= truc scope= spfile;参数名与推荐值: job queue processes>4描述:指定了实例中job队列进程的数量(如J000出于何种考虑:该参数控制了实例中能够并行运行的job的最大值,应设一个大于已配置的 propagations数量的值,同时也要考虑到可能还有其他数据库作业如何设置: alter system set job queue processes=15参数名与推荐值: PARALLEL MAX SERVERS描述:指定了实例中最大并行进程的数量出于何种考虑:在 Streams环境中, capture进程和appy进程都会用到多个并行进程。设置该初始化参数为适当值(10*HU#)以保证总是有足够的可用并行进程每多一个 capture或 apply进程,则有必要为该参数+2再加上加入的 capture或 apply进程的并行度 parallelism参数。如何设置:alter system set PARALLEL MAX SERVERS=40参数名与推荐值: REMOTE ARCHIVE ENABLE描述:指定是否将归档日志传送到远程目的地出于何种考虑:只有 downstream capture时会用到,不展开丁参数名与推荐值: SGA MAX SIZE描述:设置合理的SGA内存最大值出于何种考虑:常见参数,不展开ocIn. com参数名与推荐值: SGA TARGET=0描述: disable掉10g中的 Automatic Shared Memory Management出于何种考虑: Oracle推荐在 stream环境中手动指定 streams pool和shared pool的大小而不使用10g中的内存自动管理特性如何设置:alter system set sga target=0参数名与推荐值:调优 STREAMS POOL SIZE描述:为流池指定大小。流池包括了缓存的队列消息。此外,流池也会被用于并行capture和 apply的内部通信。建议参考V$ STREAMS POOL ADVICE视图的信息判断最佳大小,避免spi11溢出出于何种考虑:该参数可以动态修改。若该参数归零则实例中 streams相关的进程和作业都将无法运行。流池的大小受到以下因素的影响1. capture进程的并行度,每增加一个 capture进程有必要为流池增加10B的大小;此外当 capture参数 PARALLELISM大于1时,有必要为流池增加10M* parallelism的大小;举例来说,若某 capture进程的并行度 parallelism设置为3,则需要为 Streams池增加30Mb。2. apply进程的并行度,每增加一个 apply进程有必要为 streams pool增加1B此外当 apply进程的并行度大于1时,为 streams poo1增加1Mb* parallelism的大小举例来说某ap1y进程的 parallelism被设置为5,则需要为 streal池增加5Mb3. Logical〔 hange Records(LCRS)被存储在 buffered queues缓存队列中适当増加 Streams pool大小以适应源库和目标库上数据复制的数据量;Oracle建议在低负载的数据库上最小设置 Streams pool为256Mb,而在活跃度高的0TP环境中设置为500b;通过$ TREAMS POOL ADⅥISE视图给出的建议进一步调整 Streams Pool的大小到一个合理值以避免过多的缓存队列溢出到磁盘上。如何设置select from streams pool advice/*査询v$ streams pool advice视图了解不同 streams Pool size情况下的estd spill time *alter system set streams pool size=500M完成以上设置后建议重启实例以便让全部参薮生效,2边都要做3.4添加追加日志为 scott schema下的对象创建追加日志( supplemental log),可以使用dbms capture adm包的 prepare schema instantiation存储过程为指定模式创建追加日志:NAMEprepare schema instantiation(FUNCTIONprepare a schema for instantiationPARAMETERS豆丁schema name(IN the name of the schema to preparesupplemental logging-(IN) supplemental logging levelNONE KEYS, r ,AllNOTESKEYS means PRIMaRY KeY, UNIQUE INDEX, and foreign KEY levels combinedPROCEDURE prepare schema instantiationSchema namcIN VARCHAR2supplemental logging IN VARCHAR2 DEFAULT 'KEYS)/*其默认 supplemental logging选项为Key,即为 PRIMARY KEY, UNIQUE INDEX,and FOREiGn KEY等键创建 IMPLICIT的追加日志、*//*在10g或以上版本中 preparc xxx instantiation有储过程也会隐式地创建追加口志组了(In versions 10g and above, prepare xxx instantiation procedureimplicitly creates supplemenal log groupsType of supplemental logging that is enabled implicitly using this commandcan be checkeusing the sql in the following link to the documentation. Howeveradditional supplementallogging might need to be enabled depending on the requirements asmentioned above)可以通过以下查询了解其追加日志组的属性:豆丁SELECT SCHEMA NAMESUPPLEMENTAL LOG DATA PK log pkSUPPLEMENTAL LOG DATA FK log fkIn. comSUPPLEMENTAL LOG DATA Ui log uiSUPPLEMENTAL LOG DATA ALL log allFROM DBA CAPTURE PREPARED SCHEMASSCIIEMA NAMDLOG PK LOG FK LOG UI LOG ALLCOTIMPLICIT IMPLICITIMPLICIT NO3.5创建DB-LINK创建 blink之前,需要在源和目标薮据库服务器上创建对方数据库的连接字符串此处略去在源库上创建到目标库 strmadmin用户的 database link:conn strmadmin/strmadminConnectedcreate database link clinic. rh3. oracle. com connect to strmadminidentified by strmadmin using clinic rh3. oracle. comDatabase link created/*其中clinic.h3.oracle.com为目标库的全局数据库名,clinic为db name, rh3. oracle. com 2 domain name */在目标库上创建到源库 strmadmin用户的 database linkconn strmadmin/strmadmin豆丁onnectedcreate database link clinica. rh2. oracle. com connect to strmadminidentifiedbystrmadminusingclinicarh2.oracle.comDatabase link created/*其中 clinica.rh2. oracle.Com为源库的全局数据库名, clinica为数据库名,rh2.orac1e.com为domainname米3.6创建队列3.6.1在源库中分别为 capture和 apply创建队列queueegindbms streams adm. set up queue(
用户评论
码姐姐匿名网友 2018-12-25 15:00:17

还可以,只是也不是特别详细

码姐姐匿名网友 2018-12-25 15:00:17

此文档描述的是使用stream进行方案级双向同步