GoldenGate°²×°²¿Êð¼°½â¾ö·½°¸ ÏÂÔØ±¾ÎÄ

4¡¢GoldenGateͬ²½»ù±¾ÅäÖÃ

GoldenGateÖ§³ÖĿǰ´ó²¿·ÖÖ÷Á÷Êý¾Ý¿â£¬ÕâÒ²ÊÇËüµÄÓÅÊÆÖ®Ò»¡£ÏÂÃæÁоÙÁËOracle¡¢Db2¡¢SybaseÖ®¼äµÄͬ²½¡£

ͬ²½²âÊÔµÄ×¼±¸¹¤×÷ÖУ¬ÓÐÒ»²¿·ÖÊǹ²Í¨µÄ£¬ÈçÏ£º

£¨1£© ÔÚÔ´¶ËºÍÄ¿±ê¶Ë½¨Á¢Ïàͬ½á¹¹µÄÁ½¸ö±í£¬½¨Á¢Ö÷¼ü¡£±£Ö¤¸´ÖƵĶÔÏóÔÚÒ»¿ªÊ¼ÊÇÒ»

Öµġ£

£¨2£© ±£Ö¤Ã»ÓÐÏà¹Ø¶ÔÏóµÄ´¥·¢Æ÷£¨»áµ¼ÖÂÊý¾Ý³åÍ»µÄÄÇЩ£©»òÉèÖÃʧЧ¡£ £¨3£© Êý¾Ý¿âÐèÒª¿ªÆô±ØÐëµÄÈÕ־ģʽ¡£²»Í¬Êý¾Ý¿âµÄÅäÖòîÒìÖ÷ÒªÔÚÕâÒ»²½¡£

£¨4£© Ô´¶ËºÍÄ¿±ê¶Ë¶¼ÐèÒª°²×°ÏàÓ¦°æ±¾µÄGoldenGateÈí¼þ£¬²¢·ÖÅäÒ»¸öÓÐDBAȨÏÞµÄ

Êý¾Ý¿âÓû§¸øGoldenGateÓÃÒÔÁ¬½ÓÊý¾Ý¿â¡£

±¸×¢£º·ÖÅ䏸GoldenGateµÄÓû§Ò»°ãÇé¿öϲ¢²»ÐèÒªÍêÈ«µÄDBAȨÏÞ£¬ÔÚ¹Ù·½ÎĵµÉÏÓÐÏêϸµÄȨÏÞÐèÇó˵Ã÷£¬µ«ÊÇÍêÈ«°´ÕÕÄǸöÅäÖñȽϷ±Ëö¡£¶îÍâµÄ£¬Èç¹ûÊý¾Ý¿âʹÓÃASMʱ£¬ÐèÒªsysdbaȨÏÞ¡£

4.1 oracleÖ®¼äͬ²½ºÍGoldenGate»ù´¡

4.1.1 OracleÊý¾Ý¿âÉèÖÃ

Ê×ÏȰ²×°ºÃORACLE£¬ÉèÖúÃORACLE_SID£¬ORACLE_HOMEµÈ»·¾³±äÁ¿¡£µ±È»£¬ÍƼöµÄ×ö·¨ÊÇÔÚÿ¸ö½ø³ÌÅäÖÃÎļþÀï¶¼¼ÓÉÏÖ¸¶¨µÄ»·¾³±äÁ¿²ÎÊý£¬ÔÚºóÃæÓÅ»¯ÅäÖÃÖнøÐÐ˵Ã÷¡£

OracleÊý¾Ý¿âÐèÒª¿ªÆô¹éµµÈÕÖ¾£¬²¢¿ªÆô×îС¸½¼ÓÈÕ־ģʽ¡£

SQL> select supplemental_log_data_min from v$database; --²é¿´ÊÇ·ñ¿ªÆôÁË×îС¸½¼ÓÈÕ־ģʽ SQL> alter database add supplemental log data; --¿ªÆô×îС¸½¼ÓÈÕ־ģʽ

ʵ¼ÊÉú²úÓ¦ÓÃÖУ¬×îºÃͬʱ´ò¿ªORACLEµÄÇ¿ÖÆÈÕ־ģʽ£¬ÒÔ·ÀÖ¹Ô´Êý¾Ý¿âÒòÖ±½Ó·¾¶¼ÓÔØºöÂÔredoÉú³É¶øµ¼ÖÂÕⲿ·ÖÊý¾ÝÎÞ·¨Í¬²½£º SQL> select force_logging from v$database; SQL> Alter database force logging;

¹â¿ªÆô×îС¸½¼ÓÈÕ־ģʽ»¹²»¹»£¬»¹ÐèÒª´ò¿ª±í¼¶µÄ²¹È«ÈÕÖ¾£¬¿ÉÒÔÔÚGoldenGateÖÐʹÓÃadd trandataÃüÁîÇ¿ÖÆÖØ×öÈÕÖ¾¼Ç¼Ö÷¼üÖµ£¬ÒÔ±£Ö¤ÔÚÄ¿±ê¶ËÄܳɹ¦¸´ÖÆ£º GGSCI> dblogin userid ddw,password ddw --GoldenGateÖеǼOARCLEÊý¾Ý¿â GGSCI>add trandata ddw. --±íÃû¿ÉÒÔʹÓÃͨÅä·û

GGSCI> add trandata coss3.per_test,nokey,cols(sampletime, objectid) --ÎÞÖ÷¼üÖ¸¶¨×ֶβ¹È«µÄʾÀý

רҵ×ÊÁÏ

Ò²¿ÉÒÔÔÚÊý¾Ý¿âÖдò¿ª£º

SQL> alter table add supplemental log data (primary key) columns;

ǧÍò²»ÒªÐ¡¿´Õâ²½ÈÕÖ¾ÉèÖã¬ÆäʵÔÚGoldenGateµÄÅäÖÃÖУ¬Õâ²½ÊÇ×îÈÝÒ׳ö´íµÄ»·½Ú¡£Èç¹û¿ªÆôDDL¸´ÖÆ×öÈßÔÖ±¸·Ý£¬×îºÃÖ±½ÓÔÚÊý¾Ý¿â¼¶±ð´ò¿ª²¹È«ÈÕÖ¾£º

SQL> alter database add supplemental log data (primary key,unique,foreign key) columns;

¼ì²éһϣ¬È«ÊÇYES¾ÍOKÁË£¨Õû¸öÊý¾Ý¿â¼¶±ð²¹È«£©

SQL> select supplemental_log_data_min,

supplemental_log_data_pk,supplemental_log_data_ui from v$database;

4.1.2¹ØÓÚOracle²¹È«ÈÕÖ¾²¹³ä˵Ã÷

OracleÈÕÖ¾£¨redo log£©Ò»°ãÓÃÓÚʵÀý»Ö¸´ºÍ½éÖʻָ´£¬µ«ÊÇÈç¹ûÐèÒª¿¿ÈÕÖ¾»¹Ô­ÍêÕûµÄDML²Ù×÷ÐÅÏ¢£¨±ÈÈçLogmnr¡¢StreamsºÍÕâÀïµÄGoldengate£©£¬Ä¬ÈϼǼµÄÈÕÖ¾Á¿»¹²»¹»¡£±ÈÈçÒ»¸öUPDATEµÄ²Ù×÷£¬Ä¬ÈÏredoÖ»¼Ç¼ÁËrowidÒÔ¼°±»Ð޸ĵÄ×Ö¶ÎÐÅÏ¢£¬µ«ÕâÀïGoldenGate»¹Ô­Õâ¸öÊÂÎñ£¬ÒòΪ²»ÊǸù¾Ýrowid¶øÊÇSQL²ãÃæ¸ù¾ÝΨһ¼üÖµÀ´¶¨Î»¼Ç¼£¬ËùÒÔ»¹ÐèÒª½«Ö÷¼ü»òÕ߯äËû×ֶεÄÐÅÏ¢¸½¼Óµ½ÈÕÖ¾ÖÐÈ¥¡£ÒªÍùÈÕÖ¾ÖÐÔö¼ÓÕâЩ¶îÍâ×Ö¶ÎÐÅÏ¢µÄ²Ù×÷£¬¾ÍÊÇ¿ªÆô²¹È«ÈÕÖ¾£¬¼´Add Supplemental Logging¡£´ò¿ª²¹È«ÈÕÖ¾£¬»áʹÊý¾Ý¿âµÄÈÕÖ¾Á¿Ôö¼Ó£¬ËùÒÔÖ»´ò¿ªÐèÒªµÄ¼¶±ðºÍ¶ÔÏó¼´¿É¡£

Oracle²¹È«ÈÕÖ¾¿ÉÒÔÔÚÊý¾Ý¿â¼¶±ðÉèÖã¬Ò²¿ÉÒÔÔÚ±í¼¶±ðÉèÖá£ÔÚÊý¾Ý¿â¼¶±ðÖУ¬²¹È«ÈÕÖ¾°´²¹È«µÄÐÅÏ¢Á¿£¬¶ÔÓ¦ºÃ¼¸¸ö¼¶±ð£º

£¨1£© ×îС¸½¼ÓÈÕÖ¾£¨Minimal supplemental logging£©£ºÊÇ¿ªÆôlogmnrµÄ×îµÍÈÕÖ¾Òª

Çó£¬ÌṩÁËÐÐÁ´½Ó£¨chained rows£©ºÍ¶àÖÖÊý¾Ý´æ´¢£¨±ÈÈç¾Û´Ø±í¡¢Ë÷Òý×éÖ¯±í£©µÄÐÅÏ¢¡£ÔÚOracle 9.2Ö®ºóµÄ°æ±¾ÖУ¬Ä¬È϶¼²»¿ªÆô¡£

£¨2£© Ö÷¼ü²¹È«£¨Primary key supplemental logging£©£ºÔÚÈÕÖ¾Öв¹È«ËùÓÐÖ÷¼üÁС£Èç

¹û±íÖÐÎÞÖ÷¼ü£¬Ôò²¹È«Ò»¸ö·Ç¿ÕΨһË÷ÒýÁУ»Èç¹û·Ç¿ÕΨһË÷Òý¼üҲû£¬ÄÇô»á²¹È«³ýÁËLOBºÍLONGÀàÐÍ×Ö¶ÎÒÔÍâµÄËùÓÐÁУ¬Õâʱ¾ÍºÍÏÂÃæµÄËùÓв¹È«Ò»ÑùÁË¡£

£¨3£© Ψһ¼ü²¹È«£¨Unique key supplemental logging£©£ºµ±Î¨Ò»¼üÁлòλͼË÷ÒýÁб»

ÐÞ¸Äʱ£¬ÔÚÈÕÖ¾Öв¹È«ËùÓÐΨһ¼üÁлòλͼË÷ÒýÁС£´ò¿ªÎ¨Ò»¼ü²¹È«Ò²»áͬʱ´ò¿ªÖ÷¼ü²¹È«¡£×¢ÒâÕâ¸ö¼¶±ðÊÇÐèÒªÌõ¼þ´¥·¢µÄ¡£

£¨4£© Íâ¼ü²¹È«£¨Foreign Key supplemental logging£©£ºµ±Íâ¼üÁб»ÐÞ¸Äʱ£¬½«ÔÚÈÕÖ¾

Öв¹È«ËùÓÐÍâ¼üÁС£Õâ¸ö¼¶±ðÒ²ÊÇÐèÒªÌõ¼þ´¥·¢µÄ¡£

£¨5£© ËùÓв¹È«£¨All supplemental logging£©£ºÔÚÈÕÖ¾Öв¹È«ËùÓÐ×ֶΣ¨ÅųýLOBºÍ

LONGÀàÐÍ£©¡£

ÕâÀï¶ÔÓÚ²¹È«ÈÕÖ¾µÄÏêϸ²Ù×÷Óï¾ä²»×öһһ˵Ã÷¡£

Êý¾Ý¿â¼¶±ðÖеÄ5¸öÀàÐÍÖУ¬³ýÁË×îС¸½¼ÓÈÕÖ¾¼¶±ð£¬¶¼¿ÉÒÔÔÚ±í¼¶½øÐÐÉèÖᣳý´Ë

רҵ×ÊÁÏ

Ö®Í⣬±í¼¶»¹¿ÉÒÔÃ÷È·Ö¸¶¨ÐèÒª²¹È«µÄÁС£

Oracle±í¼¶²¹È«ÈÕÖ¾ÐèÒªÔÚ×îС²¹È«ÈÕÖ¾´ò¿ªµÄÇé¿öÏÂ²ÅÆð×÷Ó㬼´ÈôÒ»¸öÊý¾Ý¿âûÓпª×îС²¹È«ÈÕÖ¾»ò֮ǰdrop supplemental log data²Ù×÷Ôò¼´±ãÖ¸¶¨ÁË±í¼¶²¹È«ÈÕÖ¾£¬Êµ¼ÊÔÚÖØ×öÈÕÖ¾Êä³öµÄ¹ý³ÌÖÐÃèÊöµÄ¼Ç¼ÈÔÖ»¼Ç¼rowidºÍÏà¹ØÁÐÖµ¡£¶øÒª¹Ø±Õ×îС²¹È«ÈÕÖ¾£¬Ò²±ØÐëÊ×ÏȹرÕÊý¾Ý¿â¼¶±ðµÄÆäËû²¹È«¼¶±ðºó£¬²ÅÄܹرա£ ËùÒÔÔÚGoldenGateÖУ¬¶ÔÓÚOracleÊý¾Ý¿âµÄÈÕÖ¾²¹È«ÒªÇó£¬ÖÁÉÙÊÇ´ò¿ª×îС¸½¼ÓÈÕÖ¾ºÍÖ÷¼ü²¹È«¡£Ö÷¼ü²¹È«Ö»ÒªÔÚÐèҪͬ²½µÄ±íÉÏ¿ªÆô¼´¿É¡£µ±È»GoldenGateµÄadd trandataÓï·¨ÖÐÒ²¿ÉÒÔÖ¸¶¨²¹È«µÄÁУ¬ÕâºÍOracle±í¼¶²¹È«ÈÕÖ¾µÄ¹¦ÄÜÍêȫһÖ¡£±Ï¾¹£¬ÈÕÖ¾»¹ÊÇÓÉÊý¾Ý¿âÉú³ÉµÄ£¬GoldenGate²¢²»ÄÜÖ±½Ó¿ØÖÆÈÕÖ¾µÄÉú³É·½Ê½ºÍ¹æÔò£¬Ö»Äܸù¾ÝËù²¶»ñµÄÊý¾Ý¿âµÄÈÕÖ¾¹æÔò¶øÀ´¡£²»Í¬µÄÊý¾Ý¿â£¬ÈÕÖ¾²¹È«µÄ¹æÔòÒ²»á²»Í¬¡£

ÒÔÉϲ¿·ÖÄÚÈݲο¼×Ô¡¶Oracle 10gR2 Utilities¡·Supplemental Logging²¿·Ö

4.1.3 dmlͬ²½

4.1.3.1 Ò»¶ÔÒ»µÄʵʱͬ²½¼òµ¥ÅäÖÃ

ͬ²½Á÷³ÌÈçͼ£º

£¨1£©Ô´Êý¾Ý¿â¶ËÌí¼ÓÌáÈ¡½ø³Ì£¨extract process£©

GGSCI> add extract extl,tranlog,begin now --ÐÂÔö³éÈ¡½ø³Ìextl£¬»ùÓÚÈÕÖ¾·½Ê½£¬Á¢¼´ÉúЧ ÐèҪעÒâµÄÊÇ£¬GoldenGateÖеĽø³ÌÃû×ֻÄÜ8¸ö×Ö·û¡£

×¢Ò⣬Èç¹ûÊÇÔÚRAC»·¾³Ï£¬ÐèÒªÔÙ¼ÓÉÏTHREADS Ö¸¶¨ÌáÈ¡µÄÈÕÖ¾THREAD GGSCI> add extract extl,tranlog,begin now , THREADS

GGSCI> edit param extl --Éú³É²¢±à¼­Í¬ÃûÅäÖÃÎļþ /***

extract extl --³éÈ¡½ø³ÌÃû

רҵ×ÊÁÏ

userid ddw@orcl,password ddw --Á¬½Ó±¾»úDBµÄÕʺÅÃÜÂë

rmthost 192.168.0.44, mgrport 7801 --Ä¿±êÊý¾Ý¿â·þÎñÆ÷µØÖ·ºÍGG·þÎñ¶Ë¿ÚºÅ rmttrail d:\\tools\\GG\\gg10g\\dirdat\\rl --Ô¶³Ì¶ÓÁеÄλÖã¨ÏÂÒ»²½½¨µÄ¶«Î÷£© dynamicresolution --ÓÅ»¯²ÎÊý£¬¶¯Ì¬·ÖÎö±í½á¹¹ gettruncates --ץȡtruncateÊý¾Ý

table ddw.aatest; --ÐèÒª³éÈ¡µÄ±í£¬¿ÉÒÔʹÓÃͨÅä·û ***/

È»ºó¸øÕâ¸öÌáÈ¡½ø³Ì´´½¨Ô¶¶Ë¶ÓÁУ¬¼´Í¼ÖеÄRMTTRAIL£º GGSCI> add rmttrail d:\\tools\\GG\\gg10g\\dirdat\\rl extract extl

ÐèҪעÒâµÄÊÇ£¬ÕâÀï×îºóµÄÃû³Ærl£¨¿ÉÒÔ×Ô¶¨Ò壬×Öĸ»òÊý×Ö£©ÊÇÖ¸ÒÔºóÉú³ÉµÄtrailÎļþ¶¼»áÒÔrl¿ªÍ·£¬Èçrl000001£¬Õâ¸öÎļþÍ·Ãû³Æ×ֻÄÜ2¸ö×Ö·û¡£Èç¹ûÐèÒªÔÚÎļþ¼¶±ðÇø·Ö¶ÓÁУ¬½¨Ò齫¶ÓÁд´½¨ÓÚÓÚ²»Í¬µÄĿ¼Ï¡£

¿ªÆôÕâ¸öÌáÈ¡½ø³Ì£º GGSCI> start extl

GGSCI> info all --²é¿´ËùÓнø³Ì״̬

´Ëʱextl½ø³ÌrunningÔò±íʾÒѳɹ¦ÔËÐУ¬Õâʱ¿ªÊ¼»áÔÚÇ°ÃæÖ¸¶¨µÄÄ¿±ê¶Ë¶ÓÁÐλÖÃÉú³ÉtrailÎļþ¡£Èç¹û½ø³Ì³ö´í£¬¿ÉÒÔʹÓÃview report extl ²é¿´´íÎóÐÅÏ¢¡£

£¨2£©Ä¿±êÊý¾Ý¿â¶ËÌí¼Ó¸´ÖÆÓ¦Óýø³Ì£¨replicat process£©

ÔÚÄ¿±ê¶ËGoldenGateÃüÁîÐÐÖÐÅäÖø´Öƽø³Ì£º

GGSCI>add replicat repl exttrail d:\\tools\\GG\\gg10g\\dirdat\\rl,begin now,nodbcheckpoint ¨CÐÂÔö¸´Öƽø³Ì£¬Ê¹ÓöÔÓ¦µÄ¶ÓÁÐrl£¬¼´¿Ì¿ªÊ¼£¬Ê¹ÓÃÎļþ¼ì²éµã GGSCI>edit param repl --ÅäÖø´Öƽø³Ì²ÎÊý /***

replicat repl --¸´Öƽø³ÌÃû

userid ddw@orcl,password ddw --Ä¿±êÊý¾Ý¿âµÄÕʺÅÃÜÂë

assumetargetdefs --Á½Ì¨Êý¾Ý¿âÊý¾Ý½á¹¹Ò»ÖÂÔòʹÓô˲ÎÊý reperror default,discard --Èç¹û¸´ÖÆÊý¾Ý³ö´íÔòºöÂÔ

discardfile D:\\repsz.dsc,append,megabytes 100 --´íÎóÐÅϢдÈëXXXXÎļþ£¬×·¼Óģʽ£¬×î´ó100m

gettruncates --¸´ÖÆtruncate²Ù×÷ map ddw.aatest, target ddw.aatest_1; --Ó³Éä¹ØÏµ£¬×¢Òâtargetǰ±ØÐëÁôÒ»¸ö¿Õ¸ñ --map ddw.aatest, target ddw.aatest_1, keycols (name), where (TYPE1 = \

--¼ÓÁ½ºá¸ÜÔÚÅäÖÃÎļþÖнøÐÐ×¢ÊÍ£»keycolsÖ¸¶¨Î¨Ò»¼ü£»whereɸѡÊý

¾Ý

***/

¿ªÆô¸´Öƽø³Ì£º GGSCI>start repl

ÖÁ´Ë£¬Ò»¸ö×î¼òµ¥µÄͬ²½ÅäÖÃÍê³É£¬¶ÔÓÚÔ´Êý¾Ý¿âÏàÓ¦±íµÄinsert£¬update£¬deleteºÍ

רҵ×ÊÁÏ