Bu makalemizde Oracle’ın “Fussion Middleware” ürün grubuna dahil ettiği disaster çözümü, kritik sistemlerindeki sürekliliği sağlamak için kullanılan “Oracle GoldenGate” ürününü inceleyceğiz. Kurulum işlemlerimizi “Oracle Enterprise Linux 6.4” İşletim sistemi üzerinde yapacağız.
Oracle GoldenGate Nedir?
Oracle ‘ın Fussion Middleware ürün grubuna dahil ettiği Oracle GoldenGate, veritabanları arasında mevcut datanın DML, DDL, DCL ve TCL replikasyonuna olanak sağlayan bir yazılım çözümüdür. Bu cümleyi kısaca açıklamak gerekirse, Oracle GoldenGate sayesinde kaynak veritabanı üzerinde yapılan işlemlerin kayıtlarını istediğimiz hedef veritabanları üzerine dilersek gerçek zamanlı veya gecikmeli olarak aktarıp, işletebiliriz. Bu aktarım işlemi kaynak veritabanında yapılan bütün işlemleri kapsayabileceği gibi, spesifik olarak sadece bir seqeunce ‘in, tablonun veya şemanın aktarımı olarak da yapılabilir.
Oracle GoldenGate ‘in önemli özelliklerinden biride hibrit yapıya sahip olmasıdır. Kaynak veritabanı Oracle olabileceği gibi hedef veritabanı MS-SQL Server veya tersi olabilir. Oracle GoldenGate hibrit yapısı sayesinde kros platform veya database ‘de replikasyon yapılmasına destek verebilmektedir. Bunlara örnek; Oracle, MS-SQL, Postgre SQL, MySQL ve IBM DB2.
Oracle GoldenGate kaynak ve hedef sunuculara ayrı olarak kurulur ve sunucuların konfigrasyonları birbirinden farklıdır. Kaynak sunucuda Extract ve Pumper ismini verdiğimiz servisler çalışırken, hedef sunucuda Collector ve Replicat ismini verdiğimiz servisler çalışır. Bunların haricinde her iki sunucuda ortak olarak Manager servisleri hizmet verir. Şimdi kısaca bu terimleri açıklayalım.
Manager: İsminden de anlaşılacağı üzere bu servis Oracle GoldenGate ‘in yönetim servisidir. Hem kaynak hemde hedef sunucularda çalışır. GoldenGate ‘in konfigrasyonu bu servis üzerinden yönetilir. Örnek; Extract process ‘i tarafından üretilen trail dosyalarını takip edilmesi ve raporlama işlemleri bu servisin yönetimi altındadır. Extract, pumper ve replicat servislerinin çalışabilmesi için Manager ervisinin çalıştırılması gereklidir. Extract servisi tarafından üretilen trail dosyalarının ne kadar süre saklanacağı vs. bilgileri Manager servisi üzerinden kontrol edilir.
Extract: Kaynak veritabanı üzerinde çalışan bu servis, veritabanında gerçekleştirilen bütün işlemlerin kaydını yakalamakla görevlidir. Bu kayıtları öncelikle Online Redolog (RBA numaralarından çıkartılır) dosyalarından veya archive dosyaları üzerinden toplanır.
Pumper: Bu servisin görevi Extract process ‘i tarafından oluşturulan trail dosyalarını hedef sunucuya Manager servisi üzerinde tanımlı 7809 portu (TCP/IP) üzerinden göndermektir.
Replicat: Replicat servisi adından da anlaşılacağı üzere, kaynak sunucu üzerinde çalışan Pumper process ‘i tarafından gönderilen trail dosyalarının hedef veritabanına işlenmesinden sorumludur. Gelen trail dosyalarını gerçek zamanlı olarak (online) işletebileceğiniz gibi parametreler yardımıyla belirteceğiniz bir süre vasıtasıyla gecikmeli olarakta işletebilirsiniz.
Collector: Collector servisi GoldenGate ‘in bir background servisidir ve sadece hedef sunucu üzerinde çalışır. Bu servis gönderilen trail dosyalarını işleyerek Replicat servisinin kullanabileceği formata getirilmesinden sorumludur.
Oracle GoldenGate Kullanım Amaçları
- İş sürekliliğinin devamı ve high availability ortamlarının hazırlanması
- Veritabanında bulunan datanın taşınması veya upgrade işlemleri
- Veriambarı oluşturmak için (Data Warehousing)
- Data entegrasyonu ve konsolidasyon işlemleri
Oracle GoldenGate için ilk etapta yapacağımız yazılımı kurmak olacaktır,yazılımı kurduktan sonra konfigürasyon yapabiliriz. Biz denemelerimizi “Oracle Enterprise Linux” üzerinde yapacağız. İlk olarak Golden Gate ürününü indirmemiz gerekiyor. “Oracle Software Delivery Cloud” 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
İşletim sistemi kurulumu için “Oracle Enterprise Linux Kurulumu” makalemizi kullanabilirsiniz.
Veritabanı kurulumu için tercihimize göre;
Oracle Grid Infrastructure ile Single Instance (Standalone) Veritabanı Kurulumu
Oracle Enterprise Linux İşletim Sisteminde Standalone (Single Instance) Oracle Veritabanı Kurulumu
Oracle Enterprise Linux İşletim Sisteminde Oracle Real Application Cluster (Rac) Veritabanı Kurulumu
makalelerimizi kullanabilirsiniz.
1. İşletim Sistemi ve Veritabanı kurulum işlemlerimizi tamamladıktan sonra “Oracle GoldenGate” kurulumuna başlayabiliriz. Kuruluma başlayabilmek için öncelikle “Oracle GoldenGate” yazılımının kullanacağı dizinleri her iki sunucumuzda yaratıyoruz.
-- Aşağıdaki işlemleri "oracle" kullanıcısı ile yapıyoruz. $ mkdir /u01/app/goldengate $ mkdir /u01/app/goldengate/discard
2. Kuruluma geçebilmemiz için ftp yada başka bir yöntem ile kurulum dosyalarımızı her iki sunucumuzda oluşturduğumuz “/u01/orainstall/gg” dizini altına atıyoruz. Eğer sunucumuzda ftp server özelliği aktif edilmemişse “Linux İşletim Sistemlerinde FTP Server Yapılandırması” makalemizden faydalanarak gerekli ayarları yapabiliriz.
3. Kurulum için “/u01/app/goldengate” altına koyduğumuz kurulum dosyalarımızı her iki sunucumuzda açıyoruz.
$ cd /u01/app/goldengate $ unzip V34339-01.zip $ tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -- Diskimizde yer kaplamaması için kurulum dosyalarını silebiliriz. $ rm V34339-01.zip $ rm fbo_ggs_Linux_x64_ora11g_64bit.tar
4. Sunucumuzda bulunan “oracle” kullanıcısına ait “.bash_profile” dosyamızı her iki sunucumuzda aşağıdaki gibi düzenliyoruz.
# Oracle bash_profile Environment Settings TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR ORACLE_HOSTNAME=koraykey-db1.localdomain; export ORACLE_HOSTNAME ORACLE_UNQNAME=orcl; export ORACLE_UNQNAME ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE DB_HOME=$ORACLE_BASE/product/11.2.0.3/db; export DB_HOME ORACLE_HOME=$DB_HOME; export ORACLE_HOME ORACLE_SID=orcl; export ORACLE_SID ORACLE_HOME_LISTNER=$ORACLE_HOME export ORACLE_HOME_LISTNER GG_HOME=/u01/app/goldengate export GG_HOME ORACLE_TERM=xterm; export ORACLE_TERM BASE_PATH=/usr/sbin:$PATH; export BASE_PATH PATH=$ORACLE_HOME/bin:$GG_HOME:$ORACLE_HOME/OPatch:$PATH:$BASE_PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/lib:$GG_HOME; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
5. Değişkenlerimizi hemen geçerli olabilmesi için aşağıdaki komutları çalıştırıyoruz.
$ export PATH=$PATH:/u01/app/goldengate $ export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/u01/app/goldengate
6. Oracle GoldenGate kurulum işlemine başlayabiliriz. Aşağıdaki adımları sırasıyla her iki sunucumuzda yapacağız.
$ cd /u01/app/goldengate $ ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (koraykey-db1.localdomain) 1> CREATE SUBDIRS Creating subdirectories under current directory /u01/app/goldengate Parameter files /u01/app/goldengate/dirprm: created Report files /u01/app/goldengate/dirrpt: created Checkpoint files /u01/app/goldengate/dirchk: created Process status files /u01/app/goldengate/dirpcs: created SQL script files /u01/app/goldengate/dirsql: created Database definitions files /u01/app/goldengate/dirdef: created Extract data files /u01/app/goldengate/dirdat: created Temporary files /u01/app/goldengate/dirtmp: created Stdout files /u01/app/goldengate/dirout: created GGSCI (koraykey-db1.localdomain) 2> exit Gacle GoldenGate tarafından kullanılacak "Extract" ve "Replicat" prosesleri için bir veritabanı kullanicısı oluşturup, haklarını vermeliyiz. Öncelikle oluşturacağımız kullanıcımızın kullanması için bir "tablespace" ardınan "user" yaratıyoruz. Sonrasında yaratmış olduğumuz kullancıya gerekli hakları veriyoruz. $ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 02:40:28 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> create tablespace goldengate datafile size 256m autoextend on next 10m maxsize unlimited; Tablespace created. -- Not: Veritabanında OMF (Oracle Managed File) kullandığım için tablespace yolunu vermedim. SQL> create user goldengate identified by goldengate default tablespace goldengate; User created. SQL> grant connect,resource to goldengate; Grant succeeded. SQL> grant select any dictionary, select any table to goldengate; Grant succeeded. SQL> grant create table to goldengate; Grant succeeded. SQL> grant flashback any table to goldengate; Grant succeeded. SQL> grant execute on dbms_flashback to goldengate; Grant succeeded. SQL> grant execute on utl_file to goldengate; Grant succeeded SQL> grant alter any table to goldengate; Grant succeeded
7. Oracle veritabanı tarafında yapmamız gereken işlemlerden biri veritabanlarımızın “Archivelog” modunun açık olduğunu kontrol etmemiz olacaktır. Eğer açık değilse aşağıdaki işlemlerle açabiliriz. “Archivelog” mod her iki sunucumuzda açık olmalıdır.
$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 01:57:21 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> select log_mode from v$database; LOG_MODE ------------ ARCHIVELOG -- Eğer yukarıdaki gibi archive log modumuz açık değilse (NOARCHIVELOG) açmak için aşağıdaki adımları izlemeliyiz. -- Veritabanımızı tutarlı bir şekilde kapatıyoruz. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. -- Veritabanımızı "mount" modda açıyoruz. SQL> startup mount; ORACLE instance started. Total System Global Area 1068937216 bytes Fixed Size 2235208 bytes Variable Size 641729720 bytes Database Buffers 419430400 bytes Redo Buffers 5541888 bytes Database mounted. -- Veritabanımızı "ARCHIVELOG" moda alıyoruz. SQL> alter database archivelog; Database altered. -- Veritabanımızı açıyoruz. SQL> alter database open; Database altered. -- Tekrar sorguladığımızda "ARCHIVELOG" modda olduğunu görüyoruz. SQL> select log_mode from v$database; LOG_MODE ------------ ARCHIVELOG
8. Veritabanında da “Supplemental Logging” özelliğini her iki sunucumuzda aktif ederek veritabanının ek olarak log çıkartmasını sağlayacağız.
$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 02:22:50 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> alter database add supplemental log data (all) columns; Database altered.
9. Veritabanında da “Supplemental Logging” özelliğini her iki sunucumuzda tüm tablolarda aktif ettik eğer sadece belli tablolarda bu işlemi yapacaksak “GoldenGate” komut satırından “ADD TRANDATA” komutu ile tablo ismi belirleyerek ekleyebiliriz.
-- Oracle GoldenGate yöneticisine bağlanırken aşağıdaki gibi bir hata alırsak GGSCI (koraykey-db1.localdomain) 1> DBLOGIN USERID goldengate, PASSWORD goldengate; Cannot load ICU resource bundle 'ggMessage', error code 2 - No such file or directory Aborted (core dumped) gibi bir hata alırsak aşağıdaki adımları izlemeliyiz. -- İşletim Sistemi seviyesinde "ggMessage.dat" dosyasına okuma hakkı veriyoruz. $ cd $GG_HOME $ chmod 644 ggMessage.dat $ ls -l ggMessage.dat -rw-r--r-- 1 oracle oinstall 1280336 Aug 24 2012 ggMessage.dat -- Ardından aşağıdaki gibi oturum açmayı denediğimizde çalıştığını göreceğiz. $ cd $GG_HOME $ ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (koraykey-db1.localdomain) 1> DBLOGIN USERID goldengate, PASSWORD goldengate; Successfully logged into database. GGSCI (koraykey-db1.localdomain) 2> -- Şimdi "ADD TRANDATA" komutu ile "ADD TRANDATA" komutu ile tablo bazında ayarlama yapalım. GGSCI (koraykey-db1.localdomain) 2> ADD TRANDATA KORAYKEY.TEST Logging of supplemental redo data enabled for table KORAYKEY.TEST
10. Veritabanımız Oracle 10g ise Oracle GoldenGate ile DDL (Data Definition Language) işlemleri (create, alter, drop, truncate) yapacaksak her iki sunucumuzda aşağıdaki işlemleri yapmamız gerekiyor. Eğer veritabanımız Oracle 11g ise Çöp Kutusu (recycle bin) açık olabilir.
-- DDL işlemleri için Oracle 10g Veritabanlarında Çöp Kutusu (recycle bin) özelliği kapalı olmalıdır. SQL> ALTER SYSTEM SET recyclebin = OFF SCOPE = SPFILE; System altered. -- Veritabanımızı kapatıyoruz. SQL> shu immediate; Database closed. Database dismounted. ORACLE instance shut down. -- Veritabanımızı yeniden başlatıyoruz. SQL> startup; ORACLE instance started. Total System Global Area 1068937216 bytes Fixed Size 2235208 bytes Variable Size 650118328 bytes Database Buffers 411041792 bytes Redo Buffers 5541888 bytes Database mounted. Database opened. -- Kontrol ettiğimizde "OFF" durumda olduğunu görüyoruz. SQL> show parameter recycle; NAME TYPE VALUE ------------------------------------ ----------- ------ buffer_pool_recycle string db_recycle_cache_size big integer 0 recyclebin string OFF
11. Veritabanımızda Oracle GoldenGate ile DDL (Data Definition Language) işlemleri için gerekli scriptlerimizi her iki sunucumuzda çalıştırıyoruz. Scriptlerimiz çalışırken bizden şema ismimizi soracaktır. Önceki adımlarda yarattığımız şema ismini (goldengate) burada yazıyoruz.
$ cd $GG_HOME $ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 04:17:18 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 -- Birinci scriptimizi çalıştırıyoruz. SQL> @marker_setup.sql; Marker setup script You will be prompted for the name of a schema for the Oracle GoldenGate database objects. NOTE: The schema must be created prior to running this script. NOTE: Stop all DDL replication before starting this installation. Enter Oracle GoldenGate schema name:goldengate Marker setup table script complete, running verification script... Please enter the name of a schema for the GoldenGate database objects: Setting schema name to GOLDENGATE MARKER TABLE ------------------------------- OK MARKER SEQUENCE ------------------------------- OK Script complete. -- İkinci Scriptimizi çalıştırıyoruz. SQL> @ddl_setup.sql; Oracle 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 Oracle 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 Oracle GoldenGate schema name:goldengate Working, please wait ... Spooling to file ddl_setup_spool.txt Checking for sessions that are holding locks on Oracle Golden Gate metadata tables ... Check complete. Using GOLDENGATE as a Oracle GoldenGate schema name. Working, please wait ... DDL replication setup script complete, running verification script... Please enter the name of a schema for the GoldenGate database objects: Setting schema name to GOLDENGATE 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 IGNORE TABLE ----------------------------------- OK DDL IGNORE LOG TABLE ----------------------------------- OK DDLAUX PACKAGE STATUS: Line/pos Error ---------- ------------------------ No errors No errors DDLAUX PACKAGE BODY STATUS: Line/pos Error ---------- ------------------------ No errors No errors SYS.DDLCTXINFO PACKAGE STATUS: Line/pos Error ---------- ------------------------ No errors No errors SYS.DDLCTXINFO 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 ----------------------------------- /u01/app/oracle/diag/rdbms/orcl/orcl/trace/ggs_ddl_trace.log Analyzing installation status... STATUS OF DDL REPLICATION ----------------------------------- SUCCESSFUL installation of DDL Replication software components Script complete. -- Üçüncü Scriptimizi çalıştırıyoruz. 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:goldengate 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. -- Dördüncü Scriptimizi çalıştırıyoruz. SQL> grant GGS_GGSUSER_ROLE to goldengate; Grant succeeded. SQL> @ddl_enable.sql; Trigger altered.
12. Sunucumuzda “Oracle GoldenGate” ile ilgili ayarları tamamladık şimdi basit bir replikasyon testi gerçekleştirerek ayarlarımızı kontrol edelim. Bu işlem için öncelikle kaynak ve hedef veritabanlarımızda farklı isimlerle birer kullanıcı oluşturup gerekli hakları verelim.
-- Kaynak (Veri Gönderen) Veritabanında $ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 04:56:22 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> create user kaynak identified by kyn123 default tablespace users temporary tablespace temp; SQL> grant connect,resource,unlimited tablespace to kaynak; SQL> grant select any dictionary, select any table to kaynak; SQL> grant create table to kaynak; SQL> grant flashback any table to kaynak; -- Hedef (Veri Alan) Veritabanında $ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 04:57:35 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> create user hedef identified by hdf123 default tablespace users temporary tablespace temp; SQL> grant connect,resource,unlimited tablespace to hedef; SQL> grant select any dictionary, select any table to hedef; SQL> grant create table to hedef; SQL> grant flashback any table to hedef;
13. Oracle GoldenGate “Extract” process’ni kullanarak replikasyonumuza başlayalım. Her iki sunucuda bu servisimizi başlatıyoruz.
-- Aşağıdaki işlemleri her iki sunucumuzda yaparak manager servisini başlatıyoruz. $ cd $GG_HOME $ ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (koraykey-db1.localdomain) 1> edit params mgr -- Açılan VI Editör ekranında dosyamızın içeriğine PORT 7809 yazarak kaydedip çıkıyoruz. GGSCI (koraykey-db1.localdomain) 2> start manager Manager started. GGSCI (koraykey-db1.localdomain) 3> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING -- Kaynak sunucumuzdan "extract" işlemine başlıyoruz. Buradaki işlemler sadece kaynak sunucumuzda yapılacaktır. GGSCI (koraykey-db1.localdomain) 4> add extract ext1, tranlog, begin now EXTRACT added. -- Extract işlemi oluştuktan sonra yakalanan işlemleri yerelde bir alana yazması için Trail servisimizi ayarlıyoruz. Burada dizin ismi 2 karekteri geçmemelidir. GGSCI (koraykey-db1.localdomain) 5> ADD EXTTRAIL /u01/app/goldengate/dirdat/ex, EXTRACT EXT1 EXTTRAIL added. GGSCI (koraykey-db1.localdomain) 6> ADD RMTTRAIL /u01/app/goldengate/dirdat/lt, EXTRACT EXT1 RMTTRAIL added. GGSCI (koraykey-db1.localdomain) 7> edit params ext1 -- Parametrelerimizi düzenliyoruz. Burada açılan VI Editör ekranında aşağıdaki değişkenleri giriyoruz. SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0.3/db") SETENV (ORACLE_SID = "orcl") EXTRACT ext1 USERID goldengate, PASSWORD goldengate --EXTTRAIL /u01/app/goldengate/dirdat/ex RMTHOST KORAYKEY-DB2, MGRPORT 7809 ddl include mapped objname kaynak.*; RMTTRAIL /u01/app/goldengate/dirdat/lt TABLE kaynak.*; -- Servislerimizin durumunu kontrol ediyoruz. GGSCI (koraykey-db1.localdomain) 8> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT STOPPED EXT1 00:00:00 00:08:51 -- Kaynak sunucumuzda yapılandırmamız bitti. Şimdi hedef tarafı için tanımlamalarımızı yapalım. -- Aşağıdaki işlemleri sadece hedef sunucumuzda yapıyoruz. -- Hedef taraftaki trail dosyalarını okuyup veritabanına yazacak servisimizi yapılandırıyoruz. $ cd $GG_HOME $ ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. Oracle GoldenGate dizini içerisinde "GLOBAL" dosyamızı açarak içerisine tüm replikasyon bilgilerini tutan "CHECKPOINTTABLE" tablomuzun ismini yazabilir. Bu adım zorunlu değildir. İstenildiği takdirde bir sonraki adımla yapılabilir. GGSCI (koraykey-db2.localdomain) 1> edit params ./GLOBAL -- Açılan VI Editör ekranında aşağıdaki parametreleri giriyoruz. GGSCHEMA goldengate CHECKPOINTTABLE goldengate.checkpoint -- Aynı işlemi komutlarla yapabiliriz. GoldenGate sistemimizde oturum açıyoruz. GGSCI (koraykey-db2.localdomain) 2> dblogin userid goldengate Password: Successfully logged into database. GGSCI (koraykey-db2.localdomain) 3> add checkpointtable goldengate.checkpoint Successfully created checkpoint table goldengate.checkpoint. GGSCI (koraykey-db2.localdomain) 4> add replicat rep1, exttrail /u01/app/goldengate/dirdat/lt,checkpointtable goldengate.checkpoint REPLICAT added (Komut yan yana olmalıdır) -- Oracle GoldenGate "Replicat" servisinin parametre ayalarını yapıyoruz ve discard dizinine 10 mb'lık dosyalar halinde yazacağını belirtiyoruz. GGSCI (koraykey-db2.localdomain) 5> edit params rep1 -- Açılan VI Editör ekranında aşağıdaki parametreleri giriyoruz. SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0.3/db") SETENV (ORACLE_SID = "orcl") REPLICAT rep1 ASSUMETARGETDEFS userid goldengate, password goldengate discardfile /u01/app/goldengate/discard/rep1.txt, append, megabytes 10 DDL map kaynak.*, target hedef.*; -- Kaynak tarafta "extract" servisini başlatıyoruz. GGSCI (koraykey-db1.localdomain) 9> start extract ext1 Sending START request to MANAGER ... EXTRACT EXT1 starting GGSCI (koraykey-db1.localdomain) 10> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXT1 00:00:00 00:00:01 Hedef tarafta "replicat" servisini başlatıyoruz. GGSCI (koraykey-db2.localdomain) 6> start replicat rep1 Sending START request to MANAGER ... REPLICAT REP1 starting GGSCI (koraykey-db2.localdomain) 7> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING REPLICAT RUNNING REP1 00:00:00 00:00:06 Servislerimizin durumu aşağıdaki komut ile kontrol edebiliriz. Kaynak sunucumuzda "extract" servisinin durumunu sorgulamak için aşağıdaki komutu kullanabiliriz. GGSCI (koraykey-db1.localdomain) 11> view report ext1 *********************************************************************** Oracle GoldenGate Capture for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:32:12 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. Starting at 2013-04-16 05:31:48 *********************************************************************** Operating System Version: Linux Version #1 SMP Thu Apr 4 03:49:00 PDT 2013 Node: koraykey-db1.localdomain 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: 28427 . . . -- Hedef sunucumuzda "Replicat" servisinin durumunu sorgulamak için aşağıdaki komutu kullanabiliriz. GGSCI (koraykey-db2.localdomain) 8> view report rep1 *********************************************************************** Oracle GoldenGate Delivery for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:37:31 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. Starting at 2013-04-16 05:32:17 *********************************************************************** Operating System Version: Linux Version #1 SMP Thu Apr 4 03:49:00 PDT 2013, Node: koraykey-db2.localdomain 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: 27717 . . .
14. Oracle GoldenGate yapılandırmamızın doğru çalıştığını kontrol edebilmek için bazı testlerimizi yapalım. Öncelikle kaynak sunucumuzda bir tablo yaratıp içine bir kaç satır bilgi giriyoruz.
$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 16:08:25 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> conn kaynak/kyn123; Connected. SQL> create table gldgate (DURUM varchar2(20)); Table created. SQL> insert into gldgate values('GOLDENGATE-TEST'); 1 row created. SQL> insert into gldgate values('GOLDENGATE-TEST1'); 1 row created. SQL> insert into gldgate values('GOLDENGATE-TEST2'); 1 row created. SQL> commit; Commit complete. SQL> select * from gldgate; DURUM -------------------- GOLDENGATE-TEST GOLDENGATE-TEST1 GOLDENGATE-TEST2
15. Hedef sunucumuzda kaynak sunucu üzerinde yarattığımız tablo ve bilgilerin gelip gelmediğini kontrol ediyoruz.
$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 16 16:17:33 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> conn hedef/hdf123; Connected. SQL> select * from gldgate; DURUM -------------------- GOLDENGATE-TEST GOLDENGATE-TEST1 GOLDENGATE-TEST2 -- Görüldüğü gibi hedef sunucumuzda tablomuz ve bilgilerimiz replikasyon olmuş durumdadır.
16. Oracle GoldenGate servislerimizde bir değişiklik olması durumunda veya “info all” komutu ile sorguladığımızda servis durumunu “ABENDING” görüyorsak aşağıdaki işlemlerle çözebiliriz.
$ cd GG_HOME $ ggsci GGSCI (koraykey-db2.localdomain) 1> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING REPLICAT ABENDING REP1 00:00:00 00:00:05 -- Servisimiz ABENDING durumda GGSCI (koraykey-db2.localdomain) 2> stop replicat rep1 Sending STOP request to REPLICAT REP1 ... Request processed. GGSCI (koraykey-db2.localdomain) 3> alter rep1 begin now REPLICAT altered. GGSCI (koraykey-db2.localdomain) 4> start replicat rep1 Sending START request to MANAGER ... REPLICAT REP1 starting GGSCI (koraykey-db2.localdomain) 5> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING REPLICAT RUNNING REP1 00:00:00 00:00:08 -- Servisimiz çalışır durumda.
17. Oracle GoldenGate istatisliklerini aşağıdaki komut ile sorgulayabiliriz.
$ cd $GG_HOME $ ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (koraykey-db1.localdomain) 1> stats * Sending STATS request to EXTRACT EXT1 ... No active extraction maps 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 . . .
Oracle GoldenGate sunucumuz hazır artık kullanabiliriz. Bu makalemizde “Oracle Enterprise Linux 6.4” İşletim Sistemi üzerinde Oracle GoldenGate Kurulum, Yapılandırma ve Yönetimini inceledik.
Bir sonraki makalemizde görüşmek üzere…