GOLDENGATE 950关于DDL复制读书笔记.docx
- 文档编号:11422868
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:29
- 大小:28.41KB
GOLDENGATE 950关于DDL复制读书笔记.docx
《GOLDENGATE 950关于DDL复制读书笔记.docx》由会员分享,可在线阅读,更多相关《GOLDENGATE 950关于DDL复制读书笔记.docx(29页珍藏版)》请在冰豆网上搜索。
GOLDENGATE950关于DDL复制读书笔记
GOLDENGATE9.50关于DDL复制读书笔记
1、DDLmarkertable
该表的缺省名称为:
GGS_MARKER,用来存储数据库表中的DDL变化,该表只能插入INSERT;
2、Sequenceonmarkertable
用以标识表GGS_MARKER的列数据,类似于数据库的sequence数据;
3、DDLhistorytable
DDL历史记录表;
4、ObjectIDhistorytable
用以记录DDL语句操作的数据库对象;
5、DDLtrigger
DDL操作引发的操作,把DDL语句写入GGS_MARKER、以及history表;
6、DDLSHEMA
需要用来复制DDL操作的数据库用户名,必须在参数文件GLOBALS中声明;
7、USERROLE
用户用以复制DDL操作的规则
8、Internalsetuptable;
内部安装表,用以记录内部数据使用;
9、DUMPDLLTABLES
代表一系列表,用以存储DUMPDLL命令查询的数据库状态数据—元数据;
10、DDL_PIN
用以跟踪DDL操作的标记,以及性能提高的参数;
11、ddl_cleartrace.sql
清空DDL跟踪文件脚本;
12、ddl_status.sql
用来查询DDL安装包的安装情况;
13、Marker_status.sql
用以查询MARKER表的安装情况;
14、Ddl_tracelevel.sql
设置DDL跟踪文件的等级;
15、ObjectIDhistorytable
用以记录DDL语句操作的数据库对象;
二、安装DDL的顺序
1、首先确认安装使用的数据库用户,必须有SYSDBA权限;
2、编写全局参数文件GLOBALS
GGSSCHEMADATABASE_SYSDBA;
3、一些参数和对象的名称改变必须在安装过程中修改,在运行过程中修改必须使用固定的脚本文件;并且参数名称的修改必须在GLOBALS文件中声明;
4、关闭ORACLERECYCLE—9I中没有,否则将无法安装;
5、安装目录必须和GOLDENGATE是同一个目录;
6、
三、数据库与DDL同步相关的指南
1、GOLDENGATE支持DDL复制的目标和操作范围
Clusters----集群
Functions---函数
Indexes---索引
Packages---数据包
Procedures—过程
Roles---规则
Sequences---序列号
Synonyms---同义词---GOLDENGATE关于Synonyms复制,不复制Synonyms里面的数据;
Tables---数据表
Tablespaces---表空间
Triggers---触发器
Types---类型
Views—视图
materializedviews(alsoknownas--snapshots)物化视图
users---用户
2、ORACLE有些保留的SCHEMA是不允许使用的(注意)
四、TABLEDEFINE---表的定义;
当DDL数据被复制的时候,相关的表的数据转换,GOLDENGATE是不允许一些特殊的数据类型的转换的;
参考详细可以支持的数据类型转换;
DDL数据复制时候,目标和源数据库操作的对象必须是一致的;
ASSUMETARGETDEFS参数在REPLICAT参数文件的使用,而SOURCEDEFS参数在源端使用,一旦数据库对象产生了DDL操作那必然,REP进程会ABEND;
五、TRUNCATE操作
GOLDENGATE支持TRUNCATE操作是独立与DDL同步的一部分内容;在9。
5以前就有;
目前9。
5的DDL包支持所有包括TRUNCATE以及其它表操作的数据库表记录;
在9。
5以前的版本中专门用了GETTRUNCATES参数来控制;
ThestandaloneTRUNCATEfeaturesupportsthereplicationofTRUNCATETABLE,
butnootherDDL.
ThefullDDLfeaturesupportsTRUNCATETABLE,ALTERTABLETRUNCATEPARTITION,
andotherDDL
六、ALTERTABLENAME和RENAME
GOLDENGATE处理两个DDL操作是将RENAME转换为了ALTERTABLENAME,但是RENAME并不需要使用SCHEMA,但是ALTERTABLENAME却需要SCHEMA;
新表的名称不能超过18个字符;
七、OPERATIONONLOBSCOLUMNS---大对象数据列复制的操作;
DDL操作不会被复制,当指定的目标表正在执行DML操作的时候;EXT从数据库日志中读取到记录后,会自动按顺序产生事务的记录,所以数据库的状态数据—元数据用来被使用来解决这个问题,用以提示是否有DML操作出现;
异常发生在大对象数据上,EXT抓取一个大对象数据的值通过回闪查询,但是ORACLE并不支持象除了DROP以外的DDL操作提供这样一个值的功能;
当大对象数据列被操作的时候,大对象列的数据结构需要反射目前的元数据,但是在日志中,大队列的数据记录反映的是旧的数据库元数据;
但是GOLDENGATE为了从结构上解决这个问题,GOLDENGATE通过名称、类型、长度、编译成一些的小列数据;这样大数据的读取就变成了从小列数据中取得了;
但是由于DDL的出现,可能导致在小列数据DROP或则没有及时刷新,这样事务日志中记录的数据与实际的数据可能无法保证一致性;
例如如果存在DDL将某一列删除后,重新建设了一个同名但是数据类型不同的列,这样复制进程REP在目标端可能导致错误;
为了解决这个问题,注意:
A、保证抓取时间的延迟必须在一个限度;
B、或则保证DDL在DML后面被复制;
C、如果让包含大对象数据列的表仅仅执行DM操作,表可以使用一个唯一的小数据字段作为主键,或则建设一个复合的主键,或则通过全字段组合识别,如果一定要使用DDL复制,必须注意的是“
1、暂停源数据的DML的EXT;
2、确保REP队列中的DML数据已经完成;
3、然后执行DDL;
4、恢复DML;
八、OPERATIONONUDTS---DDL用于用户定义DDL复制操作需要注意的
I、DDL可能包含了部分用户自己定义的DML应用范围内,导致应用错误;比如数据修改数据类型,而DML无法实现被复制;
II、
九、没有使用的字段UNUSERDCOLUMNS
通常情况下,GOLDENGATE不支持通过表中没有使用的字段进行数据复制,但是9。
5通过“DBOPTIONSALLOWUNUSEDCOLUMN“实现了这个功能;
首先,两端都必须有这样一个没有使用的字段,这样在REP的参数文件中,使用“IncludeALTERTABLE...SETUNUSEDstatementsinyour
DDLreplicationconfiguration.“
十、CommentsinSQL
如果DDL语句中保留了数据对象,那复制的语句也必然回保留那个数据对象;
比如CREATESCHEMA1。
TABLENAME1
目标端自然也是CREATESCHEMA。
TABLENAME1
十一、Specialcharacters—特殊字符
!
$,and#.字符被限制使用在参数文件中的mappedwithTABLEorMAP中;
十二、Compilationerrors
如果一个存储过程、功能、函数、功能包中的CREATE出错,但是GOLDENGATE还是会继续执行DDL复制的;
十三、ALTERTABLEMOVETABLESPACE
修改表空间大小必须要确认数据是否出现丢失或者改变的问题;
十四、GoldenGate-relatedguidelinesforDDLsupport
一些部署DDL同步的限制和知道考虑的地方;
1、EnsuringdatacontinuityafterDDL—保证数据在复制DDL后的持续复制;
例如,复制一个DML操作到一个源端数据库中由CREATE或则RENAME的表,EXT以及REP的配置文件中都必须在TABLE,和MAP参数中包含住,否则将出现DML错误;
创建了一个新的用户,将新的数据表移动到新的用户名下,这样同样需要在配置文件里面增加制定的相关参数,否则将出现DML复制被丢失的情况;
2、初始化导入initialload
3、Wildcardresolution—通配符解决方案
通过“*”与标准的配置语句结合,来实现DDL的同步,为了保证通配符的正常使用,通常参数WILDCARDRESOLVEparameterissettoDYNAMICbydefault;
4、SQLEXEC
在实现DDL复制功能的时候,使用SQLEXEC功能必须考虑到调用的存储过程或则SQL语句的函数可能和复制DDL操作所影响的对象可能一致,这样就必须保证在执行SQL时候,被DDL修改的数据库对象能够正确的实现所谓的SQLEXEC的调用;
所以,DDL的操作必然是有相对的优先级的;
而SQLEXEC调用的过程或则函数中包含的对象,在MGR启动以前,也就是DDL复制以前就是必须已经存在的;因此,DDL的复制操作的对象是和EXEC的对象是不可能一致的,所以必须给DDL的过滤条件给过滤开;否则DDL将很可能修改了某些数据对象的结构,导致SQLEXEC无法实现调用;
5、UserExits
GoldenGateuserexitsarenotsupportedforusewithDDLsynchronization
6、IdentifyingGoldenGateDDLoperations
区分GOLDENGATEDDL操作,ToidentifyGoldenGateDDLoperations,thefollowingcommentispartofeachExtractandReplicatDDLstatement:
/*GOLDENGATE_DDL_REPLICATION*/
7、ControllingthepropagationofReplicatDDL
缺省的情况下,EXT忽略本地REP的DDL复制操作;通过DDL语句中的
/*GOLDENGATE_DDL_REPLICATION*/
来实现;
DDLOPTIONS下的参数GETREPLICATES、IGNOREREPLICATES来控制本地的REP的DDL复制操作是否被EXT进程捕获或则忽略;
DDLOPTIONS的参数GETAPPLOPS、IGNOREAPPLOPS除了控制REP外的DDL还包括控制从数据库事务的DDL是否被EXT进程抓取或则忽略;
通常意义上来说,在配置双向的时候,我们通常使用DDLOPTIONS
IGNOREREPLICATES,GETAPPLOPS;这样EXT只抓取事物交易中的DDL,而忽略来自REP的操作;
在一个级联配置中,使用DDLOPTIONS参数GETREPLICATES,IGNOREAPPLOPS.
ExtractmustcapturetheDDLfromReplicatoneachintermediarysystem
andcascadeittothenextsystemdownstream.
8、DDLanddatapumps---数据泵
AdatapumpdoesnotprocessDDL.Itcanonlypassittothenextprocess.
WithoutDDLsupport,adatapumpcannotfilter—过滤ormanipulate—操作控制DMLonobjects
affectedbyDDLoperations.Thepumpmustbeconfiguredinpass-through—传递
mode.
9、configurepass-throughmode---如何配置传递模式
1在datapump的参数文件中引如.PASSTHRU参数,如果遇到DLL操作,而没有设置PASSTHRU,datapump会abend
2.不要为datapump配置任何DLL的参数:
DDLOPTIONS,DDLSUBST,DDLERROR,PURGEDDLHISTORY,PURGEMARKERHISTORY或则其它的跟踪使用DDL的参数,这些参数都将导致datapumpabend.
10、PallelExtractandReplicatprocesses--并行的EXT、REP进程;
可以通过并行的进程来分别处理不同的数据对象,如此提高系统的性能,当我们采用并行进程的时候,应该如此配置;
某些对象的DDL、DML应该使用一个共同的EXT或则REP进程;
●所有业务数据相关的数据对象必须在一个进程里面;
保证有关联的DDL和DML在一个进程里面,必须保证数据的完整性;
Forexample,ifReplicatAprocessesDMLforTable1,thenitshouldalsoprocessthe
DDLforTable1.IfTable2hasaforeignkeytoTable1,thenitsDMLandDDL
operationsalsoshouldbeprocessedbyReplicatA.
11、Multi-targetconfigurations
如果一个EXT进程写多个队列,他们被不同的REP进程读,这样EXT将所有的DDL操作写入队列TRAIL中,而每个REP进程通过自己的参数文件进行DDL的过滤;
11、UnderstandingDDLscopes—DDL范围
GOLDENGATE将数据库objects按范围分类,一个对象范围事实上是由DDL可以始终的操作来进行区分的;
●MAPPED
●UNMAPPED
●OTHER
通过这三个参数来控制DDL的操作上的过滤;
Mappedscope---MAP范围
数据库对象在进程配置文件中参数TABLEandMAP后,导致EXT、REP对指定对象的操作进行过滤;除非出现覆盖他们的规则被特殊声明;
.例如,ForobjectsinTABLEandMAPstatements,而theDDLoperationslistedinTable41
aresupported
TABLE、MAP不支持一些被一些操作影响数据库对象名称的特殊的DDL操作;
例如,对于EXT来说,MAPPED的范围确定队列中哪写DDL是需要被REP进程所复制的;REP会自动检测MAPPED的范围,并将DDL转换成MAPPED中TARGET的目标下;
例如:
Extract(source)Replicat(target)
TABLEfin.expen;
TABLEhr.tab*;
MAPfin.expen,TARGETfin2.expen2;
MAPhr.tab*,TARGEThrBackup.bak_*
当源端:
ALTERTABLEfin.expenADDnotesvarchar2(100);
EXT检测到TABLE中的参数设置将它抓获放入队列
而目标端:
检测到,MAPfin.expen,TARGETfin2.expen2;则转换DDL到FIN2下执行
ALTERTABLEfin2.expen2ADDnotesvarchar2(100);
同样:
Source:
CREATETABLEhr.tabPayables...;
Target:
CREATETABLEhrBackup.bak_tabPayables...;
当复制的对象在MAPPED范围内,我们可以忽略DDL的DDL的一些参数,除非我们希望可以转换在不同的SCHEMA下面执行某些DDL操作;
并且我们必须在MAPPED的范围内的目标端做好相关的SCHEMA的指定;
12、Unmappedscope---不复制的范围—REP进程;
如果某个DDL涉及的数据对象不在TABLE和MAP范围参数中的任何一个,那他就是UNMAPPED范围内的;
一个数据库对象目标在源端UNMAPPED范围内,(notinanExtractTABLEstatement),但是在目标端的MAPPED范围内;(inaReplicatMAPstatement),DDL将直接被用源端的(数据库对象+DDL)进行操作执行;.WhenDDLisofUNMAPPEDscopeintheReplicat
configuration,itisappliedtothetargetwiththesameownerandobjectnameas
inthesourceDDL.
13、Otherscope
14、EnablingandfilteringDDLforsynchronization
通常情况下,在源数据库中,DDL是不被抓取的,我们必须配置EXT进程的参数文件让EXT进程抓取DDL;
在目标端,DDL通常是被缺省复制的,这是为了保证事务提交的数据被完整的保留;所以,通常意义下,REP进程在没有参数配置的情况下会将所有的DDL都复制在目标数据库;
当然我们可以通过配置REP关于DDL复制的过滤参数来实现对DDL语句的选择性复制;
EXT进程根据自己的参数文件,去抓获符合参数文件规定的DDL操作,然后将DDL语句写入队列文件中;
REP进程,它复制所有的队列里面的DDL操作到目标数据库;尽管在没有任何参数的前提下也会如此;
所谓的过滤事实上就是,去includeorexcludeDDL
●scope
●objecttype
●operationtype
●objectname
●stringsintheDDLcommandsyntaxorcomments,orboth
仅仅一个DDL参数能被在进程的参数文件中使用,所以我们必须集合multipleinclusionandexclusionoptionstofiltertheDDL以达到我们的过滤目标;
集合的复合型的参数设置申明用“AND”进行连接;所有符合这个组合参数设置申明的DDL都会被完全复制;
所以,集合的复合型参数设置必须在使用前经过测试;
SyntaxDDL[
{INCLUDE|EXCLUDE}
[,MAPPED|UNMAPPED|OTHER|ALL]
[,OPTYPE
[,OBJTYPE‘
[,OBJNAME“
[,INSTR‘
[,INSTRCOMMENTS‘
]
[...]
Syntax
INCLUDE|EXCLUDE
使用INCLUDEandEXCLUDE用以标记出包含还是不包含从句;
一个包含还是不包含从句,必须用INCLUDEorEXCLUDE关键字;后面用一些通过一些DDL参数进行有效的组合;
Forexample,thefollowingisinvalid:
DDLEXCLUDEOBJNAME“hr.*”
However,youcanuseeitherofthefollowing:
DDLINCLUDEALL,EXCLUDEOBJNAME“hr.*”
DDLINCLUDEOBJNAME“fin.*”EXCLUDE“fin.ss”
同样的标准级别内,EXCLUDE拥有比INCLUDEs更高的权限;所以我们可以使用多方组合的inclusionandexclusionclauses.
MAPPED|UNMAPPED|OTHER|ALL
UseMAPPED,UNMAPPED,OTHER,andALLtoapplyINCLUDEorEXCLUDEbasedonthe
DDLoperationscope.
●MAPPEDappliesINCLUDEorEXCLUDEtoDDLoperationsthatareofMAPPED
scope.MAPPEDfilteringisperformedbeforefilteringthatisspecifiedwith
otherDDLparameteroptions.
●UNMAPPEDappliesINCLUDEorEXCLUDEtoDDLoperationsthatareofUNMAPPED
scope.
●OTHERappliesINCLUDEorEXCLUDEtoDDLoperationsthatareofOTHERscope.
●ALLappliesINCLUDEorEXCLUDEtoDDLoperationsofallscopes.
DDLEXCLUDEALL---是一个比较特殊的进程参数,用来在禁止所有的DDL复制后,为GOLDENGATE保持每天更新的数据库元数据,
当需要阻止DDL操作被复制的时候而保证DML被完全的复制,我们可以使用DDLEXCLUDEALL;
这样系统将为GOLDENGATE提供当前数据库的元数据,因此避免了ER进程的停止和重新启动;
DDLEXCLUDEALL不需要INCLUDE从句的使用,为了完全避免任何DDL的元数据或则操作被复制,完全忽略了DDL的参数,DDLTRIGGER将继续在历史表中记录这些操作;除非手动禁止;
OPTYPE
使用OPTYPE在INCLUDEorEXCLUDE去特别声明一个DDL的操作类型,例如:
asCREATE,ALTER,andRENAME.,对于后面的
例如:
:
DDLINCLUDEOPTYPEALTER
OBJTYPE‘
使用OBJTYPE在INCLUDEorEXCLUDE中,声明一个特别的数据库对象对于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GOLDENGATE 950关于DDL复制读书笔记 950 关于 DDL 复制 读书笔记