-->

Wednesday, December 18, 2013

Oracle GoldenGate unidirectional configuration : Source - Oracle RAC, Target - Oracle Single instance

Энэхүү постоороо та бүхэнд Oracle GoldenGate гэж ямар бүтээгдэхүүн, юунд хэрэглэх, хэрхэн тохируулах талаар хүргэж байна. 2009 онд Oracle нь GoldenGate гэгч компаныг худалдаж авснаар Oracle GoldenGate бүтээгдэхүүний шинэ түүх эхэлсэн билээ. Oracle GoldeGate-г худалдаж авснаар Oracle - ийн Streams - ийн хөгжилд цэг тавьсан юм. Гэхдээ  Oracle Streams - ийн support байгаа бөгөөд цаашд хөгжүүлэлт хийх нь зогссон юм.

Oracle бүрэлдэхүүн хэсэгт нь орсон дараах бүтээгдэхүүнүүдийг та бүхэн мэдэх байх үүнд: 
  • Oracle Active Data Guard
  • Oracle GoldenGate
  • Oracle Data Integrator
Ихэнх хүмүүс Oracle GoldenGate - г яг ямар үед хэрхэн ашиглах тал дээр бага мэдээлэлтэй байдаг. Үүнээс болж буруу шийдэл гаргах зэрэг эрсдлийг тэд үүрдэг.
Oracle GoldenGate нь Data Replication шийдэл бөгөөд энэ нь өгөгдлийн сангийн хуулбар хийхэд ашигладаг. Өгөгдлийн сангийн хуулбар хийх гэхээр хүмүүс DR (Disaster Recovery) шийдэлтэй их андуурдаг. Энэ шийдэлд Oracle Active Data Guard зориулагдсан байдаг.

Oracle GoldenGate нь маш өргөн боломжтой ба маш олон хувилбараар тохиргоо хийж болдог бүтээгдэхүүн юм. Иймд тохиргоо хийхээс өмнө маш сайн зорилгоо тодорхойлох хэрэгтэй байдаг. Дараах зурган дээр боломжит хувилбаруудыг харж болно.

Эндээс би та бүхэндээ UNIDIRECTIONAL буюу хамгийн түгээмэл тохиргоог хэрхэн хийх талаар хүргэх болно.


Oracle GoldenGate Unidirectional шийдэл

Юуны түрүүнд replicate хийх 2 серверийн орчинг тохируулж Oracle GoldenGate прораммаа суулгана. Oracle GoldenGate - ийн patchset - г татаж авсан байх шаардлагатай.

Source болон Target 2 уулан дээр нь суулгана.
Source :

[oracle@source /]$ mkdir /gg
[oracle@source /]$ cp golden_gate_zip_file.zip
[oracle@source /]$ chown -R oracle:oinstall /gg
[oracle@source /]$ chmod -R 775 /gg
[oracle@source /]$ unzip golden_gate_zip_file.zip
[oracle@source /]$ tar -xvf golden_gate_zip_tar.tar
Target :
[oracle@target/]$ mkdir /gg
[oracle@target/]$ cp golden_gate_zip_file.zip
[oracle@target/]$ chown -R oracle:oinstall /gg
[oracle@target/]$ chmod -R 775 /gg
[oracle@target/]$ unzip golden_gate_zip_file.zip
[oracle@target/]$ tar -xvf golden_gate_zip_tar.tar
Source - ийн өгөгдлийн сангийн тохиргоог хийж өгнө.
Эхлээд GoldenGate-ийн user-г өгөгдлийн сандаа үүсгэж өгнө.
[oracle@source /]$ sqlplus / as sysdba
SQL> create user ggadmin identified by ggadmin;
Үүссэн user-т эрх өгнө. Энэ удаад жаахан залхуураад бүх эрхийг нь өгчий. Ном ёсоор бол нарийн тохируулах хэрэгтэй.
SQL> grant dba to ggadmin;
GoldenGate - ийн user нь тусдаа tablespace байх нь өгөгдлийн холион бантан болхоос сэргийлнэ
SQL> create tablespace ggtbs datafile '+DATA\ggtbs01.dbf' size 100m;
SQL> alter user ggadmin quota unlimited on ggtbs;

Хэрэв DDL replication хийнэ гэвэл дараах үйлдлийг хийнэ
SQL> alter system set recyclebin=OFF deferred;
Oracle GoldenGate-ийн home folder-т дагалдаж ирдэг дараах sql  - үүдийг ажлуулж өгнө
SQL> @marker_setup

Marker setup script

You will be prompted for the name of a schema for the GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter GoldenGate schema name:ggadmin


Marker setup table script complete, running verification script...
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to GGADMIN

MARKER TABLE
-------------------------------
OK

MARKER SEQUENCE
-------------------------------
OK

Script complete.

SQL> @ddl_setup.sql
...
 IMPORTANT: Oracle sessions that used or may use DDL must be disconnected. If you
 continue, some of these sessions may cause DDL to fail with ORA-6508.


To proceed, enter yes. To stop installation, enter no.

Enter yes or no:yes


You will be prompted for the name of a schema for the GoldenGate database objects.
NOTE: For an Oracle 10g source, the system recycle bin must be disabled. For Oracle 11g and later, it can be enabled.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter GoldenGate schema name:ggadmin

You will be prompted for the mode of installation.
To install or reinstall DDL replication, enter INITIALSETUP
To upgrade DDL replication, enter NORMAL
Enter mode of installation:initialsetup

Working, please wait ...
Spooling to file ddl_setup_spool.txt


Using GGADMIN as a GoldenGate schema name, INITIALSETUP as a mode of installation.

Working, please wait ...
...

SQL> @role_setup.sql
GGS Role setup script

This script will drop and recreate the role GGS_GGSUSER_ROLE
To use a different role name, quit this script and then edit the params.sql script to change the gg_role parameter to the preferred name. (Do not run the script.)

You will be prompted for the name of a schema for the GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter GoldenGate schema name:ggadmin
Wrote file role_setup_set.txt

PL/SQL procedure successfully completed.


Role setup script complete

Grant this role to each user assigned to the Extract, GGSCI, and Manager processes, by using the following SQL command:

GRANT GGS_GGSUSER_ROLE TO 

where  is the user assigned to the GoldenGate processes.
SQL> grant ggs_ggsuser_role to yourschemauser

SQL> @ddl_enable.sql


Өгөгдлийн санг archivelog mode - оор тохируулна.
[oracle@source~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Wed Dec 18 21:40:06 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 1185853440 bytes
Fixed Size                  2227784 bytes
Variable Size             905970104 bytes
Database Buffers          268435456 bytes
Redo Buffers                9220096 bytes
Database mounted.
SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL>
Өгөгдлийн сангийн undo_retention - г Oracle GoldenGate extract амжихаар хугацаатай тааруулах хэрэгтэй.
SQL> alter system set undo_retention=1800;
Oracle GoldenGate - т хэрэглэх log - ийн тохиргоо хийж өгнө
SQL> ALTER DATABASE FORCE LOGGING;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER SYSTEM SWITCH LOGFILE;
Одоо Target  дээр өмнөх тохиргооны зарим хэсгийг давтаж хийнэ.
[oracle@target/]$ sqlplus / as sysdba
SQL> create user ggadmin identified by ggadmin;

SQL> grant dba to ggadmin;

SQL> create tablespace ggtbs datafile '/u01/app/oracle/oradata/LMISDBPOS/ggtbs02.dbf' size 100m
SQL> alter user ggadmin quota unlimited on ggtbs;
Oracle GoldenGate - ийн Security тохиргоо хийснээрээ өгөгдлийн найдвартай байдлыг хангана.
Oracle GoldenGate Home folder - т байдаг ./keygen script-ийг ашиглаж түлхүүр үүсгэнэ. Бидэнд password encrypt хийх өгөгдөл encrypt хийх 2 түлхүүр хэрэгтэй.
[oracle@source gg]$ ./keygen 128 2
0xFBC63B06E6B8086A25736C104DD33363
0xA4CC0E21DA491202A923F81AB89BC212
Үүссэн түлхүүрээ дараах файлд нэр өгж хадгална. Ингэснээр Oracle GoldenGate энэ файлаас нэрээр нь шууд унших болно.
[oracle@sourcegg]$ vi ENCKEYS
K128_1 0xFBC63B06E6B8086A25736C104DD33363
K128_2 0xA4CC0E21DA491202A923F81AB89BC212
ENCKEYS файлыг target руу хуулна. Учир нь target энэ файлын түлхүүрийг ашиглаж өгөгдлөө decrypt хийнэ.
[oracle@sourcegg]$ scp ENCKEYS oracle@target:/gg

Oracle GoldenGate - ийн ерөнхий ажлах зарчмыг дараах зурган дээр дэлгэрэнгүй харуулсан байна.




Oracle GoldenGate - ийг тохируулахад ерөнхийдөө 2 бүлэг хэсэг үйлдэл хийдэг. Үүнд:
  • Initial load
  • Change synchronization 

Initial load
Source болон Target өгөгдлийн сангийн өгөгдлийн эхний удаад ижил болгох. Энэ үйлдлийг олон янзаар хийх боломжтой бай RMAN, DATA PUMP зэрэг үйлдлээр өгөгдлийг Source - оос нөөцөлж аваад Target - д сэргээх замаар хийж болно. Эсвэл Oracle GoldenGate өөрөөр нь initial load хийлгэж болно. Энэ удаад би та бүхэнд backup хийх замаар initial load хийж үзүүлье.
Эхлээд өгөгдлийн сангийн dbms_flashback дугаарыг тэмдэглэж авна.

[oracle@source /]$ sqlplus / as sysdba
SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
                 2660124

SQL>

Энэ dbms_flashback дугаарын дагуу backup авна.
[oracle@source /]$ exp user/password@schema flashback_SCN=2660124 file='export.dmp' logfile='export.log' statistics=none
Авсан dump файлаа target руу хуулна
[oracle@source /]$ scp export.dmp oracle@target:/gg
Хуулсан dump файлаа target дээрээ сэргээж өгнө. Үүний дараа бид replicat хийхдээ энэ dbms_flashback дугаараас эхлэнэ гэдгийг зааж өгөөд манай initial load маань дуусч байна.
[oracle@target/]$ imp user/password@schema file='export.dmp' logfile='export.log'
Change synchronization
Одоо та бүхэндээ гол хэсэг болох sync хийх тохиргоогоо хүргэе.
Үүсгэсэн түлхүүр ашиглаж ggadmin гэсэн нууц үгийг encrypt хийнэ.
[oracle@source gg]$ ./ggsci
GGSCI (source ) 1> encrypt password ggadmin encryptkey K128_1
Encrypted password:  AACAAAAAAAAAAAHAJGZBPBDDFEADUJZD
Үүний дараа бид GoldenGate-ийн хэрэгтэй folder-уудыг дараах замаар үүсгэнэ.
GGSCI (source ) 2> create subdirs

Creating subdirectories under current directory /home/oracle/gg

Parameter files                /home/oracle/gg/dirprm: created
Report files                   /home/oracle/gg/dirrpt: created
Checkpoint files               /home/oracle/gg/dirchk: created
Process status files           /home/oracle/gg/dirpcs: created
SQL script files               /home/oracle/gg/dirsql: created
Database definitions files     /home/oracle/gg/dirdef: created
Extract data files             /home/oracle/gg/dirdat: created
Temporary files                /home/oracle/gg/dirtmp: created
Veridata files                 /home/oracle/gg/dirver: created
Veridata Lock files            /home/oracle/gg/dirver/lock: created
Veridata Out-Of-Sync files     /home/oracle/gg/dirver/oos: created
Veridata Out-Of-Sync XML files /home/oracle/gg/dirver/oosxml: created
Veridata Parameter files       /home/oracle/gg/dirver/params: created
Veridata Report files          /home/oracle/gg/dirver/report: created
Veridata Status files          /home/oracle/gg/dirver/status: created
Veridata Trace files           /home/oracle/gg/dirver/trace: created
Stdout files                   /home/oracle/gg/dirout: created
Oracle GoldenGate - ийн global parameter-ийг тохируулж өгснө
GGSCI (source ) 3> edit params ./GLOBALS
GGSCHEMA ggadmin
Бидэнд дээр замаар хийх зөндөө өгөгдөл байгаа учир үүнийг хөнгөвчилж бид oby болон prm - файлуудыг үүсгэе
[oracle@source gg]$ vi add_extora_pump_ora.oby
dblogin userid ggadmin@LMISDBPOS, password AACAAAAAAAAAAAHAJGZBPBDDFEADUJZD, encryptkey K128_1
add extract extora, tranlog, THREADS 2, begin now
add exttrail /home/oracle/gg/dirdat/et, extract extora
add extract pumpora, exttrailsource /home/oracle/gg/dirdat/et
add rmttrail /home/oracle/gg/dirdat/rt, extract pumpora
add trandata hr.*;
Manager patameter file
[oracle@source dirprm]$ vi mgr.prm
PORT 9500
SYSLOG NONE
PURGEOLDEXTRACTS, USECHECKPOINTS
AUTOSTART ER *
AUTORESTART extract *, retries 10, waitminutes 5, resetminutes 60
Extora parameter file
[oracle@source dirprm]$ vi extora.prm
extract extora
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
setenv (ORACLE_SID=ORCL)
userid ggadmin, password AACAAAAAAAAAAAHAJGZBPBDDFEADUJZD, encryptkey K128_1

FETCHOPTIONS FETCHPKUPDATECOLS
TRANLOGOPTIONS BUFSIZE 1000000
TRANLOGOPTIONS DBLOGREADER
TRANLOGOPTIONS DBLOGREADERBUFSIZE 1000000

encrypttrail, AES128 KEYNAME K128_2
exttrail /home/oracle/gg/dirdat/et
checkpointsecs 1  
table hr.*;
Pumpora parameter file
[oracle@source dirprm]$ vi pumpora.prm
extract pumpora
passthru
rmthost 172.16.250.252, mgrport 9500
rmttrail /home/oracle/gg/dirdat/rt
checkpointsecs 1  
table hr.*;
Одоо үүссэн файлын дагуу үүсгэе
GGSCI (source ) 1> obey add_extora_pump_ora.oby
GGSCI (source ) 4> info all

Program     Status      Group       Lag           Time Since Chkpt

MANAGER     STOPPED
EXTRACT     STOPPED     EXTORA      00:00:01      00:00:09
EXTRACT     STOPPED     PUMPORA     00:00:00      00:00:08
3 parameter файлын дагуу MANAGER, EXTORA, PUMPORA үүссэн байна.
Дараах замаар эхлүүлнэ.
GGSCI (source ) 5> start mgr

Manager started.


GGSCI (source ) 6> start *

Sending START request to MANAGER ...
EXTRACT EXTORA starting

Sending START request to MANAGER ...
EXTRACT PUMPORA starting


GGSCI (source ) 7> info all

Program     Status      Group       Lag           Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     EXTORA      00:00:01      00:00:35
EXTRACT     RUNNING     PUMPORA     00:00:00      00:00:34
Target дээр ямар тохиргоо хийхийг одоо та бүхэнд хүргэе
Source дээр хийсэн үйлдлүүд мөн энд хийгдэнэ.
[oracle@target gg]$ ./ggsci
GGSCI (target ) 1> create subdirs

Creating subdirectories under current directory /home/oracle/gg

Parameter files                /home/oracle/gg/dirprm: created
Report files                   /home/oracle/gg/dirrpt: created
Checkpoint files               /home/oracle/gg/dirchk: created
Process status files           /home/oracle/gg/dirpcs: created
SQL script files               /home/oracle/gg/dirsql: created
Database definitions files     /home/oracle/gg/dirdef: created
Extract data files             /home/oracle/gg/dirdat: created
Temporary files                /home/oracle/gg/dirtmp: created
Veridata files                 /home/oracle/gg/dirver: created
Veridata Lock files            /home/oracle/gg/dirver/lock: created
Veridata Out-Of-Sync files     /home/oracle/gg/dirver/oos: created
Veridata Out-Of-Sync XML files /home/oracle/gg/dirver/oosxml: created
Veridata Parameter files       /home/oracle/gg/dirver/params: created
Veridata Report files          /home/oracle/gg/dirver/report: created
Veridata Status files          /home/oracle/gg/dirver/status: created
Veridata Trace files           /home/oracle/gg/dirver/trace: created
Stdout files                   /home/oracle/gg/dirout: created
Global parameter-г тохируулж өгнө. Үүнд GoldenGate user-ийн schema-аас гадна checkpoint table-г тохируулж өгнө.
GGSCI (target ) 1> edit params ./GLOBALS
GGSCHEMA ggadmin
CHECKPOINTTABLE ggadmin.ggadmin_checkpoint 
oby болон prm - файлуудыг үүсгэе
[oracle@target gg]$ vi dd_repora.oby
dblogin userid ggadmin@orcl, password AACAAAAAAAAAAAHAJGZBPBDDFEADUJZD, encryptkey K128_1
add checkpointtable ggadmin.ggadmin_checkpoint
add replicat repora, exttrail /home/oracle/gg/dirdat/rt 
Manager parameter file
[oracle@target dirprm]$ vi mgr.prm
port 9500
dynamicportlist 8000-9600
syslog none
AUTOSTART ER *
Repora parameter file
[oracle@target dirprm]$ vi repora.prm
replicat repora
setenv (NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")
setenv (ORACLE_SID=ORCL)
userid ggadmin, password AACAAAAAAAAAAAHAJGZBPBDDFEADUJZD, encryptkey K128_1

assumetargetdefs
ALLOWNOOPUPDATES
HANDLECOLLISIONS
DBOPTIONS SUPPRESSTRIGGERS
  
discardfile /home/oracle/gg/dirrpt/ds, purge
 
SQLEXEC "alter table hr.employees disable constraint EMP_DEPT_FK"
decrypttrail, AES128 KEYNAME K128_2
map hr.*, target hr.*;
SQLEXEC "alter table hr.employees enable constraint EMP_DEPT_FK" ONEXIT
END RUNTIME 
Одоо үүссэн файлын дагуу үүсгэе. Энэ үед нөгөө flashback_SCN дугаараа анхаарна уу.
GGSCI (target) 1> obey add_repora.oby
GGSCI (target) 4> info all

Program     Status      Group       Lag           Time Since Chkpt

MANAGER     STOPPED
REPLICAT    STOPPED     REPORA      00:00:00      00:00:00
GGSCI (app1) 5> start mgr

Manager started.


GGSCI (app1) 6> start repora AFTERCSN 2660124

Sending START request to MANAGER ...
REPLICAT REPORA starting


GGSCI (app1) 7> info all

Program     Status      Group       Lag           Time Since Chkpt

MANAGER     RUNNING
REPLICAT    RUNNING     REPORA      00:00:00      00:00:02
GoldenGate - г систем start хийхэд автоматаар start хийдэг тохиргоо хийж үзүүлье.
Дараах файлуудыг үүсгэж өгнө.
[root@source ~]$ su - oracle
[root@source ~]$ vi .bash_profile
...
GGATE_HOME=/gg; export GGATE_HOME
...
[oracle@source ~]$ vi /gg/start_GoldenGate.ksh
#!/bin/ksh
export GGATE_HOME=/gg
./.bash_profile
./.bashrc
cd #GGATE_HOME
ggcsi<<WEOF
start manager
exit
WEOF
[oracle@source ~]$ vi /gg/stop_GoldenGate.ksh
#!/bin/ksh
export GGATE_HOME=/gg
./.bash_profile
./.bashrc
cd #GGATE_HOME
ggcsi<<WEOF
stop manager
y
exit
WEOF
[oracle@source ~]$ vi /gg/GoldenGate_Boot_StartStop.ksh
#!/bin/ksh
echo "GoldenGate start/stop"
ORA_OWNER=oracle
GG_HOME=/gg
case "$1" in
'start')
echo -n "Start GoldenGate : "
su - ORA_OWNER -c $$GG_HOME/start_GoldenGate.ksh
echo
;;  
'stop')
echo -n "Stop GoldenGate : "
su - ORA_OWNER -c $$GG_HOME/stop_GoldenGate.ksh
echo
;;
'restart')
echo -n "Restart GoldenGate : "
$0 stop
$0 start
echo
;;
*)
exit 1
esac
exit 0
Үүсгэсэн script - дээ эрх тавьж өгнө
[oracle@source ~]$ chmod a+x $GGHOME/start_GoldenGate.ksh
[oracle@source ~]$ chmod a+x $GGHOME/stop_GoldenGate.ksh
[oracle@source ~]$ chmod a+x $GGHOME/GoldenGate_Boot_StartStop.ksh
Root user-ээр дараах тохиргоог хийж өгнө.
[oracle@source ~]$ su - root
[root@source ~]$ cp /gg/GoldenGate_Boot_StartStop.ksh /etc/rc.d/init.d
[root@source ~]$ /sbin/chkconfig -add GoldenGate_Boot_StartStop.ksh
[root@source ~]$ /sbin/chkconfig -list GoldenGate_Boot_StartStop.ksh
[root@source ~]$ /sbin/chkconfig GoldenGate_Boot_StartStop.ksh on

Та бүхэний далай мэд мэдлэгт чинь дусал нэмсэн гэдэгт найдаж байна.

2 comments:

  1. Гоё POST болжээ. нэг асуух юм байна.

    EXTRACT - ийн parameter дээр ASM instance - руу хандуулаагүй ажиллаж байна ?!

    "TRANLOGOPTIONS ASMUSER @, ASMPASSWORD "

    ReplyDelete
    Replies
    1. Bayarlalaa. GG-g hun yamar ch argaar tohiruulj boldog ni ene productiin ontslog shinj.

      Asuultiin hariu :
      ASMUSER is not needed if using the DBLOGREADER option to read the logs

      Delete