Merhaba Arkadaşlar,

Özellikle üniversite öğrencisi arkadaşlar için 6 haftalık temel bir Oracle/ Sql Server veritabanı eğitimi açmayı planlıyorum.Yer henüz belli değil ama onuda organize etmeye çalışacağım.Büyük ihtimal İstanbu Beşiktaş çevresi olacak görünüyor.11 Mayıs ideal tarih başlangıç için.

Duruma göre hafta içi ve hafta sonu olmak üzere 3-4 grup planlıyabiliriz.

Bana emrah.uysal@gmail.com adresinden ulaşabilrisiniz.Çevrenizdeki arkadaşlara ulaştırabilirseniz sevinirim.

 

 

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 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.

[root@SERVER1 /]# mkdir /ggs
[root@SERVER1 /]# chown oracle:oinstall /ggs
[root@SERVER1 /]# 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@SERVER1 /]# su - oracle
[oracle@SERVER1 ~]$ cd /ggs
[oracle@SERVER1 ~]$ unzip V26185-01.zip
[oracle@SERVER1 ~]$ 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@SERVER1 ~]$ export PATH=$PATH:/ggs
[oracle@SERVER1 ~]$ export GGATE=/ggs
[oracle@SERVER1 ~]$ 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@SERVER1 ~]$ cd
[oracle@SERVER1 ~]$ vi .bash_profile
# .bash_profile
# Get the aliases and functions
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/admin
# 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@SERVER1 ~]$ cd /ggs
[oracle@SERVER1 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.

Golden Gate’in alt dizinlerini yaratıyoruz.

GGSCI (SERVER1) 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 (SERVER1) 2> exit
[oracle@SERVER1 ~]$ 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.

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@SERVER1 ~]$ sqlplus '/as sysdba'
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 (SERVER1) 2> DBLOGIN USERID ggate, PASSWORD ggate
Successfully logged into database.
GGSCI (SERVER1) 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.

[oracle@SERVER1 ~]$ 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 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
--------------------------------------------------------------------------------
SUCCESSFUL installation of DDL Replication software components
Script complete.
[oracle@SERVER1 ~]$ 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;
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@SERVER1 ~]$ cd $GGATE
[oracle@SERVER1 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 (SERVER1) 1> edit params mgr
PORT 7809
GGSCI (SERVER1) 2> start manager
Manager started.
GGSCI (SERVER1) 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 (SERVER1) 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 (SERVER1) 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 (SERVER1) 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 (SERVER1) 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 (SERVER1) 10> info all
Program     Status      Group       Lag           Time Since Chkpt
MANAGER     RUNNING                                          
EXTRACT     STOPPED     EXT1        00:00:00      00:12:24

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 (SERVER1) 9> edit params rep1
SETENV (ORACLE_HOME = "/oracle/product/10.2.0/db_1")
SETENV (ORACLE_SID = "TEST")
replicat 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 (SERVER1) 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 (SERVER1) 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.
                     Starting at 2011-12-01 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: SERVER1
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
                      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 2010-10-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.

Ş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@SERVER1 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;
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 (SERVER1) 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 ***
       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 2010-10-18 15:21:04.
DDL replication statistics:
*** Total statistics since replicat started     *
        Operations                                   1.00
        Mapped 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 2010-10-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 2010-10-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 2010-10-18 15:00:00 ***
       No database operations have been performed 
*** Latest statistics since 2010-10-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.