آموزش GoldenGate 12c - قسمت 5


تاریخ انتشار: 1398/فروردین/29
نویسنده:مهندس قاسمی
گروه دانش : Oracle Datebase
تعداد بازدید: 16 مرتبه
اشتراک گذاری:

همانند سازی داده ها در مبدا و مقصد (synchronize the changed data)

در آموزشهای قبلی به بررسی چگونگی فراهم کردن محیطی برای ارسال اطلاعات و بارگذاری اولیه Initial load  پرداختم.

در این قسمت نحوه پیاده سازی همانند سازی تغییرات change synchronizationرا با مثالی ارائه خواهم کرد تا تغییراتی که در جداول مشخص شده در دیتابیس مبدا اتفاق می افتد در لحظه (real time) به دیتابیس مقصد منتقل شده و برروی دیتافایلها اعمال گردد.


در این مثال قرار است تغییرات جدول مبدا با نام EMP در اسکیمای Scott ، به جدولی با همین نام در اسکیمای SH در دیتابیس مقصد منتقل شود.

مراحلی که باید انجام شود به شرح زیر است:

1- ایجاد TableCheckpoint

GoldenGate  برای نگهداری تغییرات داده در صورت بروز خطا و یا توقف دیتابیس از جدولی بنام Checkpoint Table استفاده می کند. ما می توانیم به ازای هر پروسس Rep یک جدول Checkpoint داشته و یا برای همه پروسس ها از یک Checkpoint Table استفاده نماییم.

برای اینکار ما نیاز به ساخت یک فایل پارامتر GLOBALS داریم. محتوای این فایل بصورت عمومی برای تمامی پروسس ها قابل دسترس می باشد. مانند دستور زیر یک ورودی ckeckpointtable درون این فایل اضافه می کنیم:

GGSCI (devu007) 2> EDIT PARAMS ./GLOBALS
GGSCHEMA GGS_OWNER
 CHECKPOINTTABLE GGS_OWNER.CHKPTAB
GGSCI (devu007) 4> DBLOGIN USERID ggs_owner, PASSWORD ggs_owner
 Successfully logged into database.
GGSCI (devu007) 6> ADD CHECKPOINTTABLE GGS_OWNER.CHKPTAB
Successfully created checkpoint table GGS_OWNER.CHKPTAB.
# sqlplus ggs_owner/ggs_owner
SQL> desc chkptab
Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 GROUP_NAME                                NOT NULL VARCHAR2(8)
 GROUP_KEY                                 NOT NULL NUMBER(19)
 SEQNO                                              NUMBER(10)
 RBA                                       NOT NULL NUMBER(19)
 AUDIT_TS                                           VARCHAR2(29)
 CREATE_TS                                 NOT NULL DATE
 LAST_UPDATE_TS                            NOT NULL DATE
 CURRENT_DIR                               NOT NULL VARCHAR2(255)

در دیتابیس مبدا (Source):

2- ایجاد پروسس Extract

GGSCI (redhat346.localdomain) 1>ADD EXTRACT ext1, TRANLOG, BEGIN NOW
 EXTRACT added.

3- ایجاد فایل Trail

حالا نوبت به ساخت فایل Trail می باشد. با توجه به اینکه در این مثال قرار است پروسس تغییرات داده ها را مستقیما در دیتابیس مقصد منتقل کنید(بنویسد) باید از remote Trail استفاده کنیم و مسیر فایل هم باید مسیر معتبر در دیتابیس مقصد باشد. همچنین به طور معمول از پیشوند rt برای نامگذاری فایل های remote trail استفاده می نماییم.

GGSCI (redhat346.localdomain) 2>ADD RMTTRAIL /u01/oracle/software/goldengate/dirdat/rt, EXTRACT ext1
 RMTTRAIL added.

4- ایجاد فایل پارامتر برای پروسس Extract

GGSCI (redhat346.localdomain) 3> EDIT PARAMS ext1
EXTRACT ext1
 USERID ggs_owner, PASSWORD ggs_owner
 RMTHOST devu007, MGRPORT 7809
 RMTTRAIL /u01/oracle/software/goldengate/dirdat/rt
 TABLE scott.emp;

5- ایجاد پروسس Replicat

نکته: در دستور زیر محل ذخیره فایلهای EXTtrail باید دقیقا همان محلی باشد که در بالا برای Remote Trail ها استفاده کردیم:

GGSCI (devu007) 7>ADD REPLICAT rep1, EXTTRAIL /u01/oracle/software/goldengate/dirdat/rt
 REPLICAT added.

6- ایجاد فایل پارامتر آنلاین برای Replicat

GGSCI (devu007) 8> EDIT PARAMS rep1
REPLICAT rep1
 ASSUMETARGETDEFS
 USERID ggs_owner, PASSWORD ggs_owner
 MAP scott.emp, TARGET sh.emp;

بسیار خب!

پس از انجام تنظیمات فوق نوبت به استارت کردن پروسس های ایجاد شده می رسد، در زیر ادامه دستورات ارائه شده است:

On Source:
GGSCI (redhat346.localdomain) 16> START EXTRACT ext1
Sending START request to MANAGER …
 EXTRACT EXT1 starting
GGSCI (redhat346.localdomain) 17> STATUS EXTRACT ext1
 EXTRACT EXT1: RUNNING
GGSCI (redhat346.localdomain) 16> INFO EXTRACT ext1
EXTRACT EXT1 Last Started 2010-02-08 14:27 Status RUNNING
 Checkpoint Lag 00:00:00 (updated 00:00:09 ago)
 Log Read Checkpoint Oracle Redo Logs
 2010-02-08 14:27:48 Seqno 145, RBA 724480
On Target:
GGSCI (devu007) 1> START REPLICAT rep1
 Sending START request to MANAGER …
 REPLICAT REP1 starting
GGSCI (devu007) 2> INFO REPLICAT rep1
REPLICAT REP1 Last Started 2010-02-08 14:55 Status RUNNING
 Checkpoint Lag 00:00:00 (updated 00:00:01 ago)
 Log Read Checkpoint File /u01/oracle/software/goldengate/dirdat/rt000001
 2010-02-08 14:27:57.600425 RBA 1045

حالا اجازه بدهید صحت پیکربندی فوق را آزمایش نماییم:

ON SOURCE
SQL> conn scott/tiger
 Connected.
SQL> UPDATE emp SET sal=9999 WHERE ename=’KING’;
1 row updated.
SQL> COMMIT;
Commit complete.
ON TARGET
SQL> SELECT SAL FROM emp WHERE ename=’KING’;
SAL
 ———-
 9999