Upload
anar-godjaev
View
389
Download
9
Embed Size (px)
Citation preview
Anar Godjaevhttp://anargodjaev.wordpress.com/
Yazarlar:
Emrah Uysal (Senior Technical Sales Consultant at Oracle) Anar Godjaev (Senior Oracle Database Admin at YKB Azerbaijan)
Oracle Golden Gate
1.Oracle Golden GATE Nedir
Oracle GoldenGate disaster çözümü, kritik sistemlerindeki sürekliliği sağlamak için
gerekli olan master ve yedek veritabanı mimarisini oluşturmak için kullanılan bir
teknolojidir. GoldenGate çözümü master veritabanındaki işlemleri yakalayıp, yedek
veritabanına gerçek zamanlı olarak kopyalar ve yükler. Master veritabanında
oluşabilecek herhangi bir donanım ya da yazılım arızası durumunda ise yedek veritabanı
otomatik olarak devreye girer ve kurum içerisindeki işleyişin sekteye uğramadan devam
etmesini sağlar.
Oracle GoldenGate çözümü bir çok farklı veritabanı teknoloji arasında senkronizasyon
sağlayabilir. Bu sayede sadece felaket senaryoları için yedekleme değil bunun dışında
verinizi bir veritabanından başka bir veritabanına taşımanız gibi ihtiyaçlarda da
Anar Godjaevhttp://anargodjaev.wordpress.com/
kullanılabilir. Oracle GoldenGate çözümünün desteklediği veritabanı teknolojilerini
aşağıdaki tablodaki gibidir.
Master veritabanı: Yedek Veritabanı:
- Oracle- IBM DB2- Microsoft SQL Server
- Sysbase ASE
- Teradata
- Enscribe
- SQL/MP
- SQL/MX
- Yandaki veritabanlarının hepsi- Ingres, MySql, HP- Neoview
- ODBC uyumlu herhangi bir veritabanı
Oracle GoldenGate için ilk etapta yapacağımız yazılımı kurmak olacaktır,yazılımı
kurduktan sonra konfigürasyon yapabiliriz.Biz denemelerimiz Redhat Enterprise 64 bit
linux üzerinde yapacağız.İlk olarak Golden Gate ürününü indirmemiz
gerekiyor.http://edelivery.oracle.com/ sayfasından ürünü indirebiliriz.Oracle Media Pack
aramasından Product type olarak Oracle Fusion Middleware ve ilgili işletim sistemini
seçiyoruz.Ürün paketi olarak Oracle GoldenGate on Oracle Media Pack for Linux x86-64
olarak seçiyoruz.Daha sonra gelen listeden işletim sistemimizin tipine ve kullandığımız
veritabanı versiyonuna göre seçim yapabiliriz.Ben seçim olarak Oracle GoldenGate
V10.4.0.x for Oracle 10g 64bit on RedHat 4.0′ı veya 5.0’u seçeceğim
2.Golden Gate Kurulumu
Download edilen V26185-01.zip isimli dosyayı her iki makinayada kopyalayacağız.Daha
sonra kurulum yapacağımız her iki makinada da / dizini altına ggs isimli klasör
yaratacağız ve bu klasöre oracle kullanıcısı ve oinstall grubunu yetkili olarak
vereceğiz.İndirdiğimiz dosyayı /ggs dizini altına kopyalayacağız.Bu işlemleri her iki
makinada da yapmalıyız.
Anar Godjaevhttp://anargodjaev.wordpress.com/
[root@ANAR1 /]# mkdir /ggs [root@ANAR1 /]# chown oracle:oinstall
/ggs
[root@ANAR1 /]# cp /V26185-01.zip /ggs/V26185-01.zip
Kopyalama bittikten sonra zip dosyasını açacağız açılan zip dosyasının içindeki tar
dosyasınıda açacağız.
[root@ANAR1 /]# su - oracle [oracle@ANAR1 ~]$ cd /ggs
[oracle@ANAR1 ~]$ unzip V26185-01.zip
[oracle@ANAR1 ~]$ tar -xvf
ggs_redhatAS40_x64_ora10g_64bit_v10.4.0.19_002.tar
Paketlerimizide açtıktan sonra artık golden gate için konfigürasyon kısmına
geçebiliriz.Yine her iki makinadada aşağıdaki adımları yapacağız.
[oracle@ANAR1 ~]$ export PATH=$PATH:/ggs
[oracle@ANAR1 ~]$ export GGATE=/ggs
[oracle@ANAR1 ~]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
$ORACLE_HOME/lib:$GGATE
Bu export bilgilerinin hepsini oracle kullanıcısının .bash_profile yada .bash_rc hangi profil
dosyası kullanılıyorsa orayada eklenmesi gerekmektedir.Şimdi her iki makinada da bu
işlemi yapalım.Kırmızı ile belirtilen yerler golden gate için her iki makinanın oracle
kullanıcısının profiline eklenmiştir.
[oracle@ANAR1 ~]$ cd
[oracle@ANAR1 ~]$ vi .bash_profile
# .bash_profile
# Get the aliases and functions
Anar Godjaevhttp://anargodjaev.wordpress.com/
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
# User specific environment and startup programs
export ORACLE_HOME=/oracle/product/10.2.0/db_1 export
ORACLE_SID=test export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P9 alias
oh='cd $ORACLE_HOME;pwd' export
ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admi
n # Each RAC node must have a unique ORACLE_SID. (i.e. orcl1,
orcl2,...) export PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:
$ORACLE_HOME/bin export
PATH=${PATH}:/usr/bin:/usr/sbin/:/bin:/usr/X11R6/bin:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin export
ORACLE_TERM=xterm export TNS_ADMIN=$ORACLE_HOME/network/admin export
ORA_NLS10=$ORACLE_HOME/nls/data #export LD_LIBRARY_PATH=$
{LD_LIBRARY_PATH}:/usr/local/lib:/usr/bin/java:/usr/lib64 export
LD_LIBRARY_PATH=/oracle/product/10.2.0/db_1/lib/ #export
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib:/usr
/bin/java:/usr/lib64 #export CLASSPATH=$ORACLE_HOME/jre #export
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib #export CLASSPATH=$
{CLASSPATH}:$ORACLE_HOME/rdbms/jlib #export CLASSPATH=${CLASSPATH}:
$ORACLE_HOME/network/jlib #export THREADS_FLAG=native export
TEMP=/tmp export TMPDIR=/tmp GG_HOME=/ggs; export GG_HOME export
GGATE=/ggs export PATH=$PATH:/ggs export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$GGATE alias
gg='cd /ggs'
Artık Golden Gate tarafına geçebiliriz.Her iki makinada da aşağıdaki işlemleri yapıyoruz.
İlk olarak ggsci ile goldengate arayüzüne giriyoruz.
[oracle@ANAR1 ~]$ cd /ggs
[oracle@ANAR1 ggs]$ ggsci
Oracle GoldenGate Command Interpreter for Oracle Version 10.4.0.19
Build 002 Linux, x64, 64bit (optimized), Oracle 10 on Sep 22 2009
14:18:08 Copyright (C) 1995, 2009, Oracle and/or its affiliates.
All rights reserved.
Anar Godjaevhttp://anargodjaev.wordpress.com/
Golden Gate’in alt dizinlerini yaratıyoruz.
GGSCI (ANAR1) 1> CREATE SUBDIRS Creating subdirectories under
current directory /ggs Parameter files /ggs/dirprm:
created Report files /ggs/dirrpt: created
Checkpoint files /ggs/dirchk: created Process status
files /ggs/dirpcs: created SQL script files
/ggs/dirsql: created Database definitions files /ggs/dirdef:
created Extract data files /ggs/dirdat: created
Temporary files /ggs/dirtmp: created Veridata
files /ggs/dirver: created Veridata Lock
files /ggs/dirver/lock: created Veridata Out-Of-Sync
files /ggs/dirver/oos: created Veridata Out-Of-Sync XML files
/ggs/dirver/oosxml: created Veridata Parameter files
/ggs/dirver/params: created Veridata Report files
/ggs/dirver/report: created Veridata Status files
/ggs/dirver/status: created Veridata Trace files
/ggs/dirver/trace: created Stdout files
/ggs/dirout: created
GGSCI (ANAR1) 2> exit
[oracle@ANAR1 ~]$ mkdir $GGATE/discard
Alt directory ler oluşmuşken aslında bu dizinlerin ne işe yaradığına bir bakabiliriz.
dirchk
dirchk Extract ve Replicat prosesleri tarafından yaratılan checkpoint dosyalarının
tutulduğu default dizindir.Bu dizindeki dosyalar sayesinde verinin tutarlılığı sağlanmış
olur. Dosyalar <group name><sequence number>.<file extension>. Şeklinde saklanır.
dirdat
Bu dizin ise replicat ve extract proseslerinin kullandığı trail dosyalarının tutulacağı
defaul dizini gösterir.Tutulan trail dosyalarının formatı < prefix> <sequence number>
şeklindedir.
Anar Godjaevhttp://anargodjaev.wordpress.com/
Prefix için max um 2 karakterlik bilgi girilebilir.Trail dosyalarının default boyutu 10M
dir.Buna göre bu dizin için ayrılacak alan hesaplanmalıdır.
dirdef
Bu dizin data defination dosyalarının durduğu yerdir.Genellikle Oracle ile farklı
platformlar arasında replikasyon yaparken burada tabloların defination bilgileri tutulur
ve buna göre replikasyon yapılır.
Dirpcs
Bu dizin ise proselerinin durumlarını gösteren dosyaların tutulduğu yerdir.Yalnızca
prossler çalışırken dosyalar oluşur.Dosyaların formatı <group name>.<file extension>.
Şeklindedir.file extension eğer pce ise Extract prosesi olduğunu,Eğer pcr ise Replicat
prosesi olduğunu, yada pcm ise Manager prosesi olduğunu gösterir.
dirprm
Bu dizin Golden Gate parametre dosyalarının bulunduğu yerdir.Edit params .. komutuyla
GGSCI içinden edit edilebilir.Dosyaların formatı <group name/user-defined name>.prm
yada mgr.prm şeklindedir.
dirrpt
Rapor dosyalarının durduğu yerdir.Bir proses abend olduğunda raporunu alırız ,alınan
rapor bu dizine yazmaktadır.Dosyaların formatı <group name><sequence number>.rpt
şeklindedir.
dirsql
Sql dosyalarının saklandığı default dizindir
3.Veritabanı tarafındaki Hazırlıklar
Yukarıda her iki makinada yapılan işlemlerden sonra yine her iki makinanın arşiv
modunun açık olması gerekmektedir.O yüzden her iki makinada da arşiv modunun aktif
olup olmadığını kontrol edelim.
[oracle@ANAR1 ~]$ sqlplus '/as sysdba'
Anar Godjaevhttp://anargodjaev.wordpress.com/
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Nov 30 12:51:11
2011 Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to: Oracle Database 10g Enterprise Edition Release
10.2.0.3.0 - 64bit Production With the Partitioning, OLAP and Data
Mining options
SQL> select log_mode from v$database;
LOG_MODE ------------ ARCHIVELOG
[oracle@SERVER2 ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 10.2.0.4.0 - Production on Thu Oct 14 16:06:15
2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to: Oracle Database 10g Release 10.2.0.4.0 - 64bit
Production
SQL> select log_mode from v$database;
LOG_MODE ------------ ARCHIVELOG
Görüldüğü gibi her iki veritabanıda arşiv modda görünüyor.Her iki veritabanında da
Supplemental logging’i aktif ederek ek olarak veritabanının log çıkmasını
sağlayacağız.Bunuda minimum düzeyde olan komut setimizle yapacağız.Bu işlem yine 2
veritabanında da yapılacaktır.
SQL> alter database add supplemental log data;
Supplemental logging için veritabanının durumunu gözlemleyebiliriz.
SQL> select SUPPLEMENTAL_LOG_DATA_MIN,
SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI from v$database;
SUPPLEME SUP SUP -------- --- --- YES YES YES
Bunun dışında istersek tablo bazında da supplemnetal logging’i golden gate içinden
ADD TRANDATA komutu ile halledebiliriz.Örneğin;
GGSCI (ANAR1) 2> DBLOGIN USERID ggate, PASSWORD ggate
Anar Godjaevhttp://anargodjaev.wordpress.com/
Successfully logged into database.
GGSCI (ANAR1) 3> ADD TRANDATA SENDER.DENEME
Logging of supplemental redo data enabled for table SENDER.DENEME
DDL operasyonlarınıda yapabilmek için aşağıdaki birkaç adımı tamalayacağız. Bu
aşağıdaki işlemleri yine 2 veritabanında da yapacağız.
İlk olarak çöp kutusunun kullanımını kapatıyoruz.Çünkü DDL replikasyonu yapabilmek
için çöp kutusunun kapalı olması gereklidir.
SQL> alter system set recyclebin=off scope=both;
4.DDL KULLANIMININ AKTİF EDİLMESİ
DDL replikasyonunda kullanılacak bir kullanıcı yaratıp gerekli hakları veriyoruz.Bu işlemi
2 makinada da yapmak gerekir.
SQL> create user ggate identified by ggate default tablespace users
temporary tablespace temp;
SQL> grant connect,resource,unlimited tablespace to ggate; SQL>
grant execute on utl_file to ggate;
SQL> grant select any dictionary, select any table to ggate;
SQL> grant create table to ggate;
SQL> grant flashback any table to ggate;
SQL> grant execute on dbms_flashback to ggate;
SQL> grant execute on utl_file to ggate;
Yine DDL replikasyonu için aşağıdaki sql cümlelerinin çalıştırılıyor olması heriki noddada
çalıştırılıyor olması gerekmektedir.
Anar Godjaevhttp://anargodjaev.wordpress.com/
[oracle@ANAR1 ~]$ cd /ggs
SQL> @$GGATE/marker_setup.sql;
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:ggate
Marker setup table script complete, running verification script...
Please enter the name of a schema for the GoldenGate database
objects: Setting schema name to GGATE MARKER TABLE
------------------------------- OK MARKER SEQUENCE
------------------------------- OK Script complete.
[oracle@SERVER2 ~]$ cd /ggs
SQL> create tablespace GGATE datafile
'/oracle/product/oradata/TEST/ggate.dbf' size 1000M;
Tablespace created.
SQL> alter user ggate default tablespace GGATE;
SQL> @$GGATE/ddl_setup.sql;
GoldenGate DDL Replication setup script Verifying that current user
has privileges to install DDL Replication... 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: On
Oracle 10g and up, system recycle bin must be disabled. NOTE: Stop
all DDL replication before starting this installation. Enter
GoldenGate schema name:ggate 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 GGATE as a GoldenGate schema name,
INITIALSETUP as a mode of installation. Working, please wait ...
RECYCLEBIN must be empty. This installation will purge RECYCLEBIN
for all users. To proceed, enter yes. To stop installation, enter
no. Enter yes or no:yes DDL replication setup script complete,
running verification script... Please enter the name of a schema for
the GoldenGate database objects: Setting schema name to GGATE
DDLORA_GETTABLESPACESIZE STATUS: Line/pos Error ----------
----------------------------------------------------------------- No
Anar Godjaevhttp://anargodjaev.wordpress.com/
errors No errors CLEAR_TRACE STATUS: Line/pos Error ----------
----------------------------------------------------------------- No
errors No errors CREATE_TRACE STATUS: Line/pos Error ----------
----------------------------------------------------------------- No
errors No errors TRACE_PUT_LINE STATUS: Line/pos Error ----------
----------------------------------------------------------------- No
errors No errors INITIAL_SETUP STATUS: Line/pos Error ----------
----------------------------------------------------------------- No
errors No errors DDLVERSIONSPECIFIC PACKAGE STATUS: Line/pos
Error ----------
----------------------------------------------------------------- No
errors No errors DDLREPLICATION PACKAGE STATUS: Line/pos Error
----------
----------------------------------------------------------------- No
errors No errors DDLREPLICATION PACKAGE BODY STATUS: Line/pos
Error ----------
----------------------------------------------------------------- No
errors No errors DDL HISTORY TABLE
----------------------------------- OK DDL HISTORY TABLE(1)
----------------------------------- OK DDL DUMP TABLES
----------------------------------- OK DDL DUMP COLUMNS
----------------------------------- OK DDL DUMP LOG GROUPS
----------------------------------- OK DDL DUMP PARTITIONS
----------------------------------- OK DDL DUMP PRIMARY KEYS
----------------------------------- OK DDL SEQUENCE
--------------------------------- OK GGS_TEMP_COLS
----------------------------------- OK GGS_TEMP_UK
----------------------------------- OK DDL TRIGGER CODE STATUS:
Line/pos Error ----------
----------------------------------------------------------------- No
errors No errors DDL TRIGGER INSTALL STATUS
----------------------------------- OK DDL TRIGGER RUNNING STATUS
----------------------------------- ENABLED STAYMETADATA IN TRIGGER
----------------------------------- OFF DDL TRIGGER SQL TRACING
----------------------------------- 0 DDL TRIGGER TRACE LEVEL
-----------------------------------0 LOCATION OF DDL TRACE FILE
--------------------------------------------------------------------
------------
/oracle/product/10.2.0/db_1/admin/test/udump/ggs_ddl_trace.log
Analyzing installation status... STATUS OF DDL REPLICATION
Anar Godjaevhttp://anargodjaev.wordpress.com/
--------------------------------------------------------------------
------------ SUCCESSFUL installation of DDL Replication software
components Script complete.
[oracle@ANAR1 ~]$ cd /ggs SQL> @$GGATE/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:ggate 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 <loggedUser> where <loggedUser> is the
user assigned to the GoldenGate processes.
SQL> grant GGS_GGSUSER_ROLE to ggate; Grant succeeded.
SQL> @$GGATE/ddl_enable.sql;
Trigger altered.
5.Replikasyon Hazırlığı
DDL replikasyonunda kullanılacak ggate isimli kullanıcımızı yaratıp gerekli
çalışmalarımızı yaptıktan sonra source ile target arasında bir replikasyon
yapacağız.Source tarafta sender ve target tarafta receiver isimli kullanıclar yaratıp
gerekli çalışmaları yapacağız,bunları source ve destination veritabanları için ayrı ayrı
yapıyoruz.
Source database:
SQL> create user sender identified by qwerty default tablespace
users temporary tablespace temp;
SQL> grant connect,resource,unlimited tablespace to sender;
Anar Godjaevhttp://anargodjaev.wordpress.com/
SQL> GRANT SELECT any dictionary, SELECT any TABLE TO sender;
SQL> GRANT CREATE TABLE TO sender;
SQL> GRANT flashback any TABLE TO sender;
Destination database:
SQL> create user receiver identified by qwerty default tablespace
users temporary tablespace temp;
SQL> grant connect,resource,unlimited tablespace to receiver;
SQL> GRANT SELECT any dictionary, SELECT any TABLE TO receiver;
SQL> GRANT CREATE TABLE TO receiver;
SQL> GRANT flashback any TABLE TO receiver;
6.BASİT BİR REPLİKASYON
Replikasyon için hazırlıklar başladıktan sonra artık replikasyona başlıyabiliriz.İlk
yapacağımız repliasyonda pump prosesini kullanmayacağız direk olarak extract prosesi
üzerinden remote tarafa verileri yollayacağız.İlk olarak her iki makinada da manager’ın
ayağa kaldırılması gerekmektedir.
[oracle@ANAR1 ~]$ cd $GGATE
[oracle@ANAR1 ggs]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle Version 10.4.0.19
Build 002 Linux, x64, 64bit (optimized), Oracle 10 on Sep 22 2009
14:18:08 Copyright (C) 1995, 2009, Oracle and/or its affiliates.
All rights reserved.
GGSCI (ANAR1) 1> edit params mgr PORT 7809
GGSCI (ANAR1) 2> start manager Manager started.
Anar Godjaevhttp://anargodjaev.wordpress.com/
GGSCI (ANAR1) 3> info all Program Status Group
Lag Time Since Chkpt MANAGER RUNNING
Her iki makinada da manager’ı başlattıktan sonra yalnızca source makinasında extration
için bir extract başlatmamız gerekiyor.Extract source veritabanından destination
veritabanına çıkacak veriler için kullanılmaktadır.add extract begin now dediğimizde
extract hemen başlayacak anlamındadır.
GGSCI (ANAR1) 7> add extract ext1, tranlog, begin now EXTRACT added.
Extract prosesini oluşturduktan sonra capture edilen transactionların localde bir alana
yazılması gerekmektedir.Bunları trail servisiyle yazıyoruz.
GGSCI (ANAR1) 8> ADD EXTTRAIL /ggs/dirdat/ex, EXTRACT EXT1 EXTTRAIL
added.
Daha sonra localdeki trail dosyalarının remote taraftaki trail alanına yazılması
gerekmektedir.Normalde en sağlıklısı bunun pump ile yapılmasıdır ama biz bunu extract
prosesi olan ext1 ile yapıyoruz.
GGSCI (ANAR1) 8> ADD RMTTRAIL /ggs/dirdat/lt, EXTRACT EXT1
Ext1 için gerekli olan parametre ayarlarını yapıyoruz.Kırmızı olan kısımda sender
kullanıcısına ait ddl işlemlerinin karşıya gideceğini söylüyoruz.Mavi ile yazılan yerde ise
* koyduğumuz için sender kullanıcısına ait tüm tabloların replike olacağını belirtiyoruz.
GGSCI (ANAR1) 9> edit params ext1 SETENV
(ORACLE_HOME = "/oracle/product/10.2.0/db_1") SETENV (ORACLE_SID =
"TEST") EXTRACT ext1 USERID ggate, PASSWORD ggate --EXTTRAIL
/ggs/dirdat/ex RMTHOST SERVER2, MGRPORT 7809 ddl include mapped
objname sender.*; RMTTRAIL /ggs/dirdat/lt TABLE sender.*;
GGSCI (ANAR1) 10> info all Program Status Group
Lag Time Since Chkpt MANAGER
RUNNING EXTRACT
STOPPED EXT1 00:00:00 00:12:24
Anar Godjaevhttp://anargodjaev.wordpress.com/
Extract olan source makinasından replike olan destination makinasına bir akış
başlattık.Şimdi ise replike olan destination tarafı için tanımlar yapalım.Target tarafta ki
trail dosyalarını okuyup bunları veritabanına işleyen prosesin yani replicat’ın tanımlarını
destination tarafta yapıyoruz.
[oracle@SERVER2 ~]$ cd /ggs/
[oracle@SERVER2 ggs]$ mkdir discard
[oracle@SERVER2 ggs]$./ggsci
Goldengate’in home dizini içinde istersek ./GLOBALS dosyası kullanılarak verilerin read
write olma zamanı durumu gibi bilgileri saklayan en son ne işlendi ne işlenecek gibi
bilgileri tutan tablo olan checkpoint tablosunu buraya yazabiliriz.Aslında yazmak
zorunda değiliz.ggsci toolu’u içinden de add checkpoint table diyerek de bunu
yapabilirdik.Ama yazılmasının zararı yoktur.
GGSCI (SERVER2) 5> edit params ./GLOBAL GGSCHEMA ggate
CHECKPOINTTABLE ggate.checkpoint
GGSCI (SERVER2) 6> dblogin userid ggate Password: Successfully
logged into database.
GGSCI (SERVER2) 7> add checkpointtable ggate.checkpoint
Successfully created checkpoint table GGATE.CHECKPOINT.
GGSCI (SERVER2) 8> add replicat rep1, exttrail
/ggs/dirdat/lt,checkpointtable ggate.checkpoint REPLICAT added.
Replicat prosesinin parametre ayarlarınıda aşağıdan yapıyourz.Kırmızı ile yazılan yerde
görüleceği gibi bu komutla source tarafın tablo yapısının kaynak tarafla aynı olacağını
söylüyoruz.Mavi olan yerde ise işlenemeyen transactionların discard dosyasına 10’ar mb
lık dosyalar halinde yazılacağını belirtiyoruz.Yeşil yazılan yerde ise DDL operasyonlarının
işleneceğini belirtiyoruz.Son olarak mor olan yerde ise source tarafta sender
kullanıcısından gelen tüm DML,DDL işlemlerinin targetta receiver altında apply
edileceğini belirtiyoruz.
GGSCI (ANAR1) 9> edit params rep1 SETENV (ORACLE_HOME =
"/oracle/product/10.2.0/db_1") SETENV (ORACLE_SID = "TEST") replicat
Anar Godjaevhttp://anargodjaev.wordpress.com/
rep1 ASSUMETARGETDEFS userid ggate, password ggate discardfile
/ggs/discard/rep1_discard.txt, append, megabytes 10 DDL map
sender.*, target receiver.*;
Şimdi source tarafındaki extract prosesini ve destination tarafındaki replicat prosesini
başlatabiliriz.
Source:
GGSCI (db1) 14> start extract ext1 Sending START request to
MANAGER ... EXTRACT EXT1 starting
GGSCI (ANAR1) 84> info all Program Status Group
Lag Time Since Chkpt MANAGER
RUNNING EXTRACT
RUNNING EXT1 00:00:00 01:20:19
Destination: GGSCI (SERVER2) 15> start replicat rep1 Sending START
request to MANAGER ... REPLICAT REP1 starting
GGSCI (SERVER2) 19> info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:02
Servislerden birinin başlamasında bir sıkıntı olursa bunu aşağıdaki komutla detaylı
olarak görebiliriz.
GGSCI (ANAR1) 90> view report ext1
********************************************************************
*** Oracle GoldenGate Capture for Oracle
Version 10.4.0.19 Build 002
Linux, x64, 64bit (optimized), Oracle 10 on Sep 22 2009 14:21:44
Copyright (C) 1995, 2009, Oracle and/or its affiliates. All rights
reserved.
Anar Godjaevhttp://anargodjaev.wordpress.com/
Starting at 2014-02-02 13:33:53
********************************************************************
*** Operating System Version: Linux Version #1 SMP Sun May 2
04:17:42 EDT 2010, Release 2.6.18-194.3.1.el5 Node: ANAR1 Machine:
x86_64 soft limit hard limit Address
Space Size : unlimited unlimited Heap Size :
unlimited unlimited File Size : unlimited
unlimited CPU Time : unlimited unlimited Process
id: 27201 Description:
********************************************************************
*** ** Running with the following
parameters **
********************************************************************
***
SETENV (ORACLE_HOME = "/oracle/product/10.2.0/db_1") SETENV
(ORACLE_SID = "TEST") EXTRACT ext1 USERID ggate, PASSWORD ggate --
EXTTRAIL /ggs/dirdat/ex RMTHOST SERVER2, MGRPORT 7809 ddl include
mapped objname sender.*; RMTTRAIL /ggs/dirdat/lt TABLE sender.*;
CACHEMGR virtual memory values (may have been adjusted)
CACHEBUFFERSIZE: 64K
CACHESIZE: 8G CACHEBUFFERSIZE (soft
max): 4M CACHEPAGEOUTSIZE (normal): 4M
PROCESS VM AVAIL FROM OS (min): 16G CACHESIZEMAX (strict
force to disk): 13.99G Database Version: Oracle Database 10g
Enterprise Edition Release 10.2.0.3.0 - 64bi PL/SQL Release
10.2.0.3.0 - Production CORE 10.2.0.3.0 Production TNS for
Linux: Version 10.2.0.3.0 - Production NLSRTL Version 10.2.0.3.0 -
Production
Database Language and Character Set: NLS_LANG =
"AMERICAN_AMERICA.WE8ISO8859P9" NLS_LANGUAGE = "AMERICAN"
NLS_TERRITORY = "AMERICA" NLS_CHARACTERSET = "WE8ISO8859P9"
GGSCI (SERVER2) 24> view report rep1
********************************************************************
*** Oracle GoldenGate Delivery for Oracle
Anar Godjaevhttp://anargodjaev.wordpress.com/
Version 10.4.0.19 Build 002 Linux, x64, 64bit (optimized), Oracle
10 on Sep 22 2009 14:23:18 Copyright (C) 1995, 2009, Oracle and/or
its affiliates. All rights reserved.
Starting at 2014-02-15 16:48:10
********************************************************************
*** Operating System Version: Linux Version #1 SMP Sun May 2
04:17:42 EDT 2010, Release 2.6.18-194.3.1.el5 Node: SERVER2Machine:
x86_64 soft limit hard limit Address Space Size :
unlimited unlimited Heap Size : unlimited
unlimited File Size : unlimited unlimited CPU
Time : unlimited unlimited Process id: 17369
Description:
********************************************************************
*** ** Running with the following
parameters **
********************************************************************
*** SETENV (ORACLE_HOME = " /oracle/product/10.2.0/db_1") Set
environment variable (ORACLE_HOME=/oracle/product/10.2.0/db_1)
SETENV (ORACLE_SID = "TEST") Set environment variable
(ORACLE_SID=TEST) replicat rep1 ASSUMETARGETDEFS userid ggate,
password ***** discardfile /ggs/discard/rep1_discard.txt, append,
megabytes 10 DDL map sender.*, target receiver.*; CACHEMGR virtual
memory values (may have been adjusted)
CACHEBUFFERSIZE: 64K
CACHESIZE: 512M CACHEBUFFERSIZE (soft
max): 4M CACHEPAGEOUTSIZE (normal): 4M
PROCESS VM AVAIL FROM OS (min): 1G CACHESIZEMAX (strict
force to disk): 881M Database Version: Oracle Database 10g
Release 10.2.0.4.0 - 64bit Production PL/SQL Release 10.2.0.4.0 -
Production CORE 10.2.0.4.0 Production TNS for Linux: Version
10.2.0.4.0 - Production NLSRTL Version 10.2.0.4.0 - Production
Database Language and Character Set:
NLS_LANG environment variable not set, using default value
AMERICAN_AMERICA.US7ASCII. NLS_LANGUAGE = "AMERICAN"
NLS_TERRITORY = "AMERICA" NLS_CHARACTERSET = "WE8ISO8859P9"
Warning: NLS_LANG is not set. Please refer to user manual for more
information.
Anar Godjaevhttp://anargodjaev.wordpress.com/
Şimdi bir test yapalım Source tarafta bir tablo yaratalım ve içine biraz bilgi girelim
bakalım bunu destination tarafında görebilecekmiyiz.
Source:
[oracle@ANAR1 dirdat]$ sqlplus '/as sysdba'
SQL> conn sender/sender
Connected.
SQL> create table deneme (alan1 varchar2(10));
Table created.
SQL> insert into deneme values('DENEME');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from deneme;
ALAN1 ---------- DENEME
Şimdi destination tarafta yapılan bu işlemi görüntülüyelim,
Destination :
[oracle@SERVER2 ~]$ sqlplus '/as sysdba'
SQL> conn receiver/receiver
Connected.
SQL> select * from deneme;
Anar Godjaevhttp://anargodjaev.wordpress.com/
ALAN1 ---------- DENEME
Görüldüğü gibi replikasyon başarı ile tamamlandı.Aslında en temel komutlarla bunu
yaptık ama işimizi gördü.Hem DDL operasyonunun başarı ile bittiğini keza bunu create
table komutunun karşıya gitmesinden anladık hemde,DML yani insert cümleciğinin
karşıya gitmesinden anladık.
Yapılan çalışmalardan sonra replikasyonun durumu ve nelerin replike olduğunu
görebiliriz.Bunun içinde stats * komutunu hem extract hemde replicat tarafında
görebiliriz.
GGSCI (ANAR1) 80> stats *
Sending STATS request to EXTRACT EXT1 ... Start of Statistics at
2011-12-04 12:06:00. DDL replication statistics (for all trails):
*** Total statistics since extract started ***
Operations 1.00 Mapped
operations 1.00 Unmapped
operations 0.00 Other
operations 0.00 Excluded
operations 0.00
Output to /ggs/dirdat/ex: Extracting from GGATE.GGS_MARKER to
GGATE.GGS_MARKER:
*** Total statistics since 2011-12-04 11:26:12 *** No
database operations have been performed.
*** Daily statistics since 2011-12-04 11:26:12 ***
No database operations have been performed.
*** Hourly statistics since 2011-12-04 12:00:00 ***
No database operations have been performed.
*** Latest statistics since 2011-12-04 11:26:12 ***
Anar Godjaevhttp://anargodjaev.wordpress.com/
No database operations have been performed.
Extracting from SENDER.DENEME to RECEIVER.DENEME:
*** Total statistics since 2011-12-04 11:26:12 ***
Total inserts 1.00 Total
updates 0.00 Total
deletes 0.00 Total
discards 0.00 Total
operations 1.00
*** Daily statistics since 2011-12-04 11:26:12 ***
Total inserts 1.00 Total
updates 0.00 Total
deletes 0.00 Total
discards 0.00 Total
operations 1.00
*** Hourly statistics since 2011-12-04 12:00:00 ***
No database operations have been performed.
*** Latest statistics since 2011-12-04 11:26:12 *** Total
inserts 1.00 Total
updates 0.00 Total
deletes 0.00 Total
discards 0.00 Total
operations 1.00
End of Statistics.
GGSCI (SERVER2) 29> stats *
Sending STATS request to REPLICAT REP1 ... Start of Statistics at
2014-02-18 15:21:04. DDL replication statistics: *** Total
statistics since replicat started *
Operations 1.00 Mapped
Anar Godjaevhttp://anargodjaev.wordpress.com/
operations 1.00 Unmapped
operations 0.00 Other
operations 0.00 Excluded
operations 0.00
Errors 0.00 Retried
errors 0.00 Discarded errors
0.00 Ignored errors 0.00
Replicating from SENDER.DENEME to RECEIVER.DENEME: *** Total
statistics since 2014-02-18 14:42:17 *** Total
inserts 1.00 Total
updates 0.00 Total
deletes 0.00 Total
discards 0.00 Total
operations 1.00
*** Daily statistics since 2014-02-18 14:42:17 *** Total
inserts 1.00 Total
updates 0.00 Total
deletes 0.00 Total
discards 0.00 Total
operations 1.00
*** Hourly statistics since 2014-02-18 15:00:00 *** No
database operations have been performed
*** Latest statistics since 2014-02-18 14:42:17 * Total
inserts 1.00 Total
updates 0.0 Total
deletes 0.00 Total
discards 0.00 Total
operations 1.00
End of Statistics.