آموزش GoldenGate 12c - قسمت 5
تاریخ انتشار: | 1398/فروردین/29 |
نویسنده: | مهندس قاسمی |
گروه دانش : | Oracle Datebase |
تعداد بازدید: | 23 مرتبه |
اشتراک گذاری: |
همانند سازی داده ها در مبدا و مقصد (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