1 / 40

Active DataGuard ve Golden Gate ile Yüksek Kullanılabilirlik Çözümleri

Active DataGuard ve Golden Gate ile Yüksek Kullanılabilirlik Çözümleri. Veritabanı Danışmanı. Emrah Uysal. Yüksek Kullanılabilirlik Neden Önemli ?. İşletmeniz 7 x 24 x 365 online olmalı.

kaoru
Download Presentation

Active DataGuard ve Golden Gate ile Yüksek Kullanılabilirlik Çözümleri

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Active DataGuard ve Golden Gate ile • Yüksek Kullanılabilirlik Çözümleri • Veritabanı Danışmanı • Emrah Uysal

  2. Yüksek Kullanılabilirlik Neden Önemli ? • İşletmeniz 7 x 24 x 365 online olmalı. • Kritik uygulamalarınız, sunucularınız ve verileriniz kullanılamaz hale geldiğinde, bütün işiniz tehlikeye girebilir. • Milyonlarca liralık zararlar ve gelir kayıpları.

  3. Sistemleriniz Neden Kesintiye Uğruyor ? • İşletim sisteminin çökmesi • Sistem üzerinde çalışan yazılımın çökmesi • Depolama alanının bozulması • Sunucudaki Fiziksel Problemler • Elektrik Kesintileri • Planlı çalışmalar nedeniyle servis kesintileri (Patch, Upgrade) • Veritabanı performans sorunları • Ve onlarca neden ...

  4. Oracle Yüksek Kullanılabilirlik Teknolojileri

  5. Oracle Active Data Guard

  6. Active Data Guard Nedir ? • Felaket yönetimi için en hızlı ve güvenli çözüm. • Sıfır zaman kayıp ile gerçek zamanlı veri replikasyonu. • Standby Veritabanına hızlı switch opsiyonu. • Bozulan veri bloklarına bütünleşik veri koruma mekanizması. • Standby veritabanına “read-only” erişim imkanı.

  7. Geleneksel Yöntemler • Fiziksel standby veritabanınız sorgulara açık olamaz. • Sadece yedekte bekletebilir ve bir problem olduğunda devreye alabilirsiniz. • Boş bekleyen bir veritabanı için maliyetli bir çözümdür. Idle Failover Server Production Database Physical Standby Database Log Shipping

  8. Active Dataguard ile Yeni Yaklaşım • Standby veritabanınızı “read-only” açarak, raporlama veritabanı olarak kullanabilirsiniz. • Amacınıza göre kopyalama yöntemleri belirleyebilirsiniz: • Fiziksel Standby Veritabanı : Arşiv geridönüş loglarının işlenmesi. • Veri ve zaman kaybı olmadan felaket durumlarında kurtarma imkanı sunar. • Mantıksal Standby Veritabanı: Logların Sql cümleciklerine dönüştürülerek işlenmesi. • Yedekleme işlerini ve raporlama işlerini üstlendikleri için performans artışı sağlar.

  9. Çalışma Prensibi • Eş zamanlı yada gecikmeli replikasyon seçenekleri sunar. • Sunucular aynı İşletim Sistemi platformuna ve aynı Veritabanı versiyonu’na sahip olmalıdır. • Veritabanları kesinlikle enterprise edition olmalıdır. • Active DataGuard, Enterprise edition lisansına ek olarak ayrı lisanslanmaktadır.

  10. Kurulum 1 • SQL> ALTER DATABASE FORCE LOGGING; • SQL>alter database add standby logfile '/u01/app/oracle/oradata/EDUCATE/srl01.log' size 52428800; • SQL> alter system set log_archive_config='dg_config=(educate,educated)'; • alter system set log_archive_dest_2='service=orclsby1 async • valid_for=(online_logfile,primary_role) db_unique_name=orclsby1'; • TNS ve LİSTENER Servisleri yaratılır • $ cp orapwdEDUCATE orapwdeducated • initeducated.ora DB_NAME=educated • Dump Directoryleri yaratılır.

  11. Kurulum 2 • $ export ORACLE_SID=educated • $ sqlplus '/as sysdba' • SQL> startup nomount • $ export ORACLE_SID=EDUCATE • $ rman target / • RMAN> connect auxiliary sys/oracle@educated • RMAN >run { • allocate channel prmy1 type disk; • allocate channel prmy2 type disk; • allocate channel prmy3 type disk; • allocate channel prmy4 type disk; • allocate auxiliary channel stby type disk; • duplicate target database for standby from active database • spfile • parameter_value_convert 'educate','educated' • set db_unique_name='educated'

  12. Kurulum 3 • set db_file_name_convert='/u01/app/oracle/oradata/EDUCATE/','/u01/app11g/oracle/oradata/educated/' • set log_file_name_convert='/u01/app/oracle/oradata/EDUCATE/','/u01/app11g/oracle/oradata/educated/' • set control_files='/u01/app11g/oracle/oradata/educated/educated.ctl' • set log_archive_max_processes='5' • set fal_client='educated' • set fal_server='educate' • set standby_file_management='AUTO' • set log_archive_config='dg_config=(educate,educated)' • set log_archive_dest_1='service=educate ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=educate' • set log_archive_dest_2='service=educated async valid_for=(online_logfile,primary_role) db_unique_name=educated' • ; • } • $ export ORACLE_SID=EDUCATE

  13. Kurulum 4 • SQL> SELECT sequence#, first_time, next_time • FROM v$archived_log • ORDER BY sequence#; • SQL> alter system switch logfile; • $ export ORACLE_SID=educated • $ sqlplus "/as sysdba" • SQL> alter database recover managed standby database • using current logfile disconnect; • SQL>shutdown immediate; • SQL> startup mount; • SQL> alter database open read only; • SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; • SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

  14. Monitoring SQL>select value from v$dataguard_stats where name='apply lag'; VALUE ---------------------------------------------- +00 00:00:01 SQL> select value from v$dataguard_stats where name='transport lag'; VALUE ----------------------------------------------- +00 00:00:00 SQL> select database_role from v$database; SQL> select name from v$database; SQL>select db_unique_name from v$database;

  15. Snapshot Standby • Standby veritabanı bu yeni özellikle, canlı veritabanın birebir kopyası olan bir test ortamına kolayca dönüstürülebilir. • Standby veritabanı ( ‘physical standby database ’ ) geçici bir süreligine okuma-yazmalara açılarak test amaçlı kullanılabilir, bu süre zarfında Canlı veritabanından gönderilen islem log ları (redo log) –uygulanmaksızın- kabul edilir. • Test bitiminde yedek veritabanı eski haline ve fonksiyonuna dönerek kaldıgı yerden Canlı veritabanını takip etmeye devam eder.Bu özellik gerçekten daha önceleri en çok ihtiyaç duruyulan konulardan biri idi.11G ile bu özellik kullanıcılardan gelen talepler doğrultusunda eklenmiştir. • Kullanım için Data Guard Broker(DB Broker)’ı aktif etmemiz gerekmektedir.

  16. DataGuard Broker(DGMGRL) • [oracle@rac1 ~]$ export ORACLE_SID=EDUCATE • [oracle@rac1 ~]$ sqlplus "/as sysdba" • SQL> show parameter dg_broker_start; • NAME TYPE VALUE • ------------------------------------ ----------- -------------------------- • dg_broker_start boolean FALSE • Eğer parametre değeri false ise Primary ve secondary tarafta bu parametre değerlerini enable etmemiz gerekmektedir. • SQL> ALTER SYSTEM SET dg_broker_start = true; • [oracle@rac1 ~]$ export ORACLE_SID=educated • [oracle@rac1 ~]$ sqlplus "/as sysdba" • SQL> show parameter dg_broker_start • NAME TYPE VALUE • ------------------------------------ ----------- -------------------------- • dg_broker_start boolean FALSE • SQL> ALTER SYSTEM SET dg_broker_start = true;

  17. DataGuard Broker(DGMGRL) • [oracle@rac1 admin]$ cat listener.ora • # listener.ora Network Configuration File: /u01/app11g/oracle/product/11.2.0/db_1/network/admin/listener.ora • # Generated by Oracle configuration tools. • SID_LIST_LISTENER = • (SID_LIST = • (SID_DESC = • (SID_NAME = PLSExtProc) • (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) • (PROGRAM = extproc) • ) • (SID_DESC = • (GLOBAL_DBNAME = educated) • (ORACLE_HOME = /u01/app11g/oracle/product/11.2.0/db_1) • (SID_NAME = educated) • ) • (SID_DESC = • (GLOBAL_DBNAME = educated_DGMGRL) • (ORACLE_HOME = /u01/app11g/oracle/product/11.2.0/db_1) • (SID_NAME = educated) • ) • (SID_DESC = • (GLOBAL_DBNAME = EDUCATE_DGMGRL) • (ORACLE_HOME = /u01/app11g/oracle/product/11.2.0/db_1) • (SID_NAME = EDUCATE) • ) • ) • LISTENER = • (DESCRIPTION_LIST = • (DESCRIPTION = • (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) • ) • (DESCRIPTION = • (ADDRESS = (PROTOCOL = TCP)(HOST = rac1.localdomain)(PORT = 1521)) • ) • ) • ADR_BASE_LISTENER = /u01/app11g/oracle

  18. DataGuard Broker(DGMGRL) • [oracle@rac1 admin]$ dgmgrl • DGMGRL> connect sys/oracle • DGMGRL> show configuration • ORA-16532: Data Guard broker configuration does not exist • Configuration details cannot be determined by DGMGRL • DGMGRL> create configuration 'DGConfig1' as • > primary database is 'educate' • > connect identifier is educate; • Configuration "DGConfig1" created with primary database "educate« • DGMGRL> show configuration • Configuration - DGConfig1 • Protection Mode: MaxPerformance • Databases: • educate - Primary database • Fast-Start Failover: DISABLED • Configuration Status: • DISABLED

  19. DataGuard Broker(DGMGRL) • DGMGRL> add database 'educated' as • > connect identifier is educated; • DGMGRL> show configuration • Configuration - DGConfig1 • Protection Mode: MaxPerformance • Databases: • educate - Primary database • educated - Physical standby database • Fast-Start Failover: DISABLED • Configuration Status: • DISABLED • DGMGRL> enable configuration • DGMGRL> show configuration • Configuration - DGConfig1 • Protection Mode: MaxPerformance • Databases: • educate - Primary database • educated - Physical standby database • Fast-Start Failover: DISABLED • Configuration Status: • SUCCESS

  20. SWITCHOVER • DGMGRL> switchover to educated; • Şu anda geçiş işlemi yapılıyor. Lütfen bekleyin... • Yeni birincil veritabanı "orclsby1" açılıyor... • İşlem, "educate" anının "EDUCATE" veritabanında kapatılmasını gerektiriyor. • "educate" anı kapatılıyor... • ORA-01109: veritabanı açık değil • Veritabanı kullanıma kapatıldı. • ORACLE anı kapatıldı. • İşlem, "educate" anının "EDUCATE" veritabanında başlatılmasını gerektiriyor. • "educate" anı başlatılıyor... • ORACLE anı başlatıldı. • Veritabanı kullanıma açıldı. • Veritabanı açıldı. • Geçiş başarılı oldu. Yeni birincil: "educated"

  21. SNAPSHOT STANDBY • [oracle@rac1 ~]$ export ORACLE_SID=EDUCATE • [oracle@rac1 admin]$ dgmgrl • DGMGRL> connect sys/oracle • DGMGRL> convert database orclsby1 to snapshot standby; • [oracle@rac1 ~]$ export ORACLE_SID=educated • [oracle@rac1 ~]$ sqlplus "/as sysdba" • SQL> select status from v$instance; • STATUS • ------------ • OPEN • SQL> select open_mode from v$database; • OPEN_MODE • -------------------- • READ WRITE

  22. SNAPSHOT STANDBY • [oracle@rac1 ~]$ export ORACLE_SID=EDUCATE • [oracle@rac1 admin]$ dgmgrl • DGMGRL> connect sys/oracle • DGMGRL>convert database orclsby1 to physical standby; • [oracle@rac1 ~]$ export ORACLE_SID=educated • [oracle@rac1 ~]$ sqlplus "/as sysdba" • SQL> select status from v$instance; • STATUS • ------------ • MOUNTED • SQL> select open_mode from v$database; • OPEN_MODE • -------------------- • MOUNTED • SQL> alter database open read only;

  23. AUTOMATIC BLOCK RECOVERY SQL> select dbms_rowid.ROWID_BLOCK_NUMBER(rowid) from emp; DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) ------------------------------------ 188 dd if=/dev/null of=/u02/oradata/apex/monitor_data01.dbf bs=8192 conv=notrunc seek=188 << EOF CORRUPT corruptCORRUPTcorruptCORRUPTcorruptCORRUPTcorruptCORRUPTcorrupt EOF [oracle@rac1 ~]$ /u01/oracle/scripts> ./corrupt.sh 0+0 records in 0+0 records out SQL> alter system flush buffer_cache; System altered. SQL> select * from monitor.emp; select * from monitor.emp * ERROR at line 1: ORA-01578: ORACLE data block corrupted (file # 5, block # 188) ORA-01110: data file 5: '/u02/oradata/educate/monitor_data01.dbf'

  24. AUTOMATIC BLOCK RECOVERY Automatic Block Recovery Standby üzerinden Canlı veritabanına doğru yapılır. Corrupt block relative dba: 0x018005da (file 5, block 188) Fractured block found during user buffer read Data in bad block: type: 6 format: 2 rdba: 0x018005da last change scn: 0x0000.001b3ebf seq: 0x2 flg: 0x04 spare1: 0x0 spare2: 0x0 spare3: 0x0 consistency value in tail: 0x00000000 check value in block header: 0x1b14 computed block checksum: 0xb2a8 Reading datafile '/u01/oracle/testdr01.dbf' for corruption at rdba: 0x018005da (file 5, block 188) Reread (file 5, block 188) found same corrupt data Requesting Auto BMR for (file# 5, block# 188) Waiting Auto BMR response for (file# 5, block# 188) Auto BMR successful

  25. DELAY TIME Max Performans için Canlı ve Standby veritabanları arasına delay time koymak mümkündür. SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=standby DELAY=180'; • oracle@rac1 ~]$ export ORACLE_SID=EDUCATE • [oracle@rac1 admin]$ dgmgrl • DGMGRL> EDIT DATABASE educateSET PROPERTY DelayMins='180'; • DGMGRL> EDIT DATABASE educatedSET PROPERTY DelayMins='180';

  26. Oracle Golden Gate

  27. İşlem Bazlı Veri Yönetimi - TDM • Gerçek zamanlı:Saniyeden daha kısa sürede veri replikasyonu. • Heterojen:Farklı veritabanları ve platformlar arasında veri iletimi. • Güvenli:Sistem/network kesintilerine bakmaksızın “commit” verilmiş bütün kayıtların hedef veritabanına işlenmesi. • Yüksek performans: Sadece değişen verilerin sn’den daha kısa sürede replikasyonu ile minimum kaynak tüketimi. • Yüksek süreklilik : Kesintisiz versiyon yükseltme, migrasyon ve gerçek zamanlı raporlama

  28. Nasıl Çalışıyor ? Capture: İşlem loglarına bakarak sadece commit edilmiş kayıtları alır. Trail: Değişmiş verileri platforma bağlı olmadan taşınabilir şekilde sıralar. Pump: Trail dosyalarını hedef sunucuya gönderir. Route: Sıkıştırılmış ve şifrelenmiş veri Delivery: Verileri hedef sistemin sql komutlarını kullanarak iletir.

  29. İşinizi Garantiye Alın • Dilerseniz bütün veritabanınızı, dilerseniz spesifik tablo ve şemalarınızın taşımasını gerçekleştirebilirsiniz. • “Auto-commit” ile sadece değişen kayıtlarınızı yüksek hızda hedef veritabanınıza gönderebilirsiniz. • Gerçek zamanlı güncellenenen hedef veritabanınızı “read-write” modda kullanarak iş yükünüzü dağıtabilirsiniz. • Oracle, MS Sql Server, DB2 ve Mysql desteğiyle dilediğiniz platformlarda veri senkronizasyonu yapabilirsiniz. • Upgrade / Patch işlemlerinizi sıfır kesinti ile gerçekleştirebilirsiniz.

  30. KURULUM 1

  31. KURULUM 2

  32. KURULUM 3

  33. KURULUM 4 • [root@FOBSTST01 /]# mkdir /ggs • [root@FOBSTST01 /]# chown oracle:oinstall /ggs • [root@FOBSTST01 ggs]# ls • V26185-01.zip • [root@FOBSTST01 ggs]# chown oracle:oinstall V26185-01.zip • [root@FOBSTST01 ggs]# su - oracle • [oracle@FOBSTST01 ~]$ cd /ggs • [oracle@FOBSTST01 ggs]$ ls • V26185-01.zip • [oracle@FOBSTST01 ggs]$ unzip V26185-01.zip • t • [oracle@FOBSTST01 ggs]$ tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar • [oracle@FOBSTST01 ggs]$ export PATH=$PATH:/ggs • [oracle@FOBSTST01 ggs]$ export GGATE=/ggs • [oracle@FOBSTST01 ggs]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$GGATE

  34. KURULUM 5 • [oracle@FOBSTST01 ~]$ cd /ggs • [oracle@FOBSTST01 ggs]$ ggsci • GGSCI (FOBSTST01) 1> CREATE SUBDIRS • GGSCI (FOBSTST01) 2> exit [oracle@FOBSTST01 ggs]$ mkdir $GGATE/discard • 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;

  35. KURULUM 6 SQL>@marker_setup.sql; SQL>@ddl_setup.sql; SQL>@role_setup.sql; SQL> grant GGS_GGSUSER_ROLE to ggate; SQL>@ddl_enable.sql;

  36. GOLDEN GATE EXTRACT • [oracle@FOBSTST01 ggs]$ggsci • GGSCI (FOBSTST01) 2> dblogin userid ggate • GGSCI (FOBSTST01) 7> ADD EXTRACT ext1, TRANLOG, BEGIN NOW • GGSCI (FOBSTST01) 8> ADD EXTTRAIL /home/oracle/OGG_Source/dirdat/lt, EXTRACT ext1 • GGSCI (FOBSTST01) 9> ADD EXTRACT dpump, EXTTRAILSOURCE /home/oracle/OGG_Source/dirdat/lt • GGSCI (FOBSTST01) 10> EDIT PARAMS ext1 • EXTRACT ext1 • USERID ggate, PASSWORD ggate • TRANLOGOPTIONS EXCLUDEUSER ggate • EXTTRAIL /home/oracle/OGG_Source/dirdat/lt • TABLE source.*; • GGSCI (FOBSTST01) 11> ADD RMTTRAIL /home/oracle/OGG_Target/dirdat/rt, EXTRACT dpump

  37. GOLDEN GATE EXTRACT • GGSCI (FOBSTST01) 13> EDIT PARAMS dpump • EXTRACT dpump • USERID ggate, PASSWORD ggate • RMTHOST vmora-02.oracle.com, MGRPORT 7901 • RMTTRAIL /home/oracle/OGG_Target/dirdat/rt • PASSTHRU • TABLE source.*; • GGSCI (FOBSTST01) 14> edit params mgr • PORT 7901 • GGSCI (FOBSTST01) 15> start mgr • GGSCI (vmora-02.oracle.com) 13> info all • Program Status Group Lag Time Since Chkpt • MANAGER RUNNING • EXTRACT STOPPED DPUMP 00:00:00 00:19:24 • EXTRACT STOPPED EXT1 00:00:00 00:24:12 • EXTRACT ABENDED EXT_1A 00:00:00 672:08:09 • EXTRACT ABENDED PUMP_1A 00:00:00 672:08:08

  38. GOLDEN GATE REPLICAT • [oracle@fobstst02 ggs]$ ggsci • GGSCI (fobstst02) 0> dblogin userid ggate • GGSCI (fobstst02) 1> add checkpointtable GGATE.CHKPTAB • GGSCI (fobstst02) 2> ADD REPLICAT rep1, EXTTRAIL /home/oracle/OGG_Target/dirdat/rt CHECKPOINTTABLE GGATE.CHKPTAB • GGSCI (fobstst02) 3> EDIT PARAMS rep1 • REPLICAT rep1 • ASSUMETARGETDEFS • USERID ggate, PASSWORD ggate • MAP source.*, TARGET target.*;

  39. PROCESS START • GGSCI (FOBSTST01) 19> START EXTRACT ext1 • GGSCI (FOBSTST01) 20> START EXTRACT dpump • GGSCI (vmora-02.oracle.com) 16> info all • Program Status Group Lag Time Since Chkpt • MANAGER RUNNING • EXTRACT RUNNING DPUMP 00:00:00 00:29:34 • EXTRACT RUNNING EXT1 00:34:14 00:00:08 GGSCI (vmora-02.oracle.com) 7> start mgr GGSCI (fobstst02) 15> START REPLICAT rep1 GGSCI (vmora-02.oracle.com) 11> info all Program Status Group Lag Time Since Chkpt MANAGER RUNNING REPLICAT RUNNING REP1 00:00:00 00:00:06

  40. SAMPLE REPLICATION SOURCE: SQL> delete from source.big_emp where empno=224; SQL> select * from source.big_emp where empno=224; TARGET: SQL> select empno from target.big_emp where empno=224; EMPNO ---------- 224 SOURCE: SQL> select empno from target.big_emp where empno=224;

More Related