Quantcast
Channel: Oracle –ÇözümPark
Viewing all articles
Browse latest Browse all 68

Oracle 11.2 Veritabanında Maksimum Erişilebilirlik Mimarisinin Yapılandırması

$
0
0

 

Bu yazıda Oracle 11.2 Dataguard ve RAC kombinasyonundamaksimumerişilebilirlikmimarisininnasılyapılandırılacağınıinceleyeceğiz.İlk önce Fast-Start-Failover işlemiileDataguardmimarisindekesintisizveriiletişimininnasılsağlanacağınıaçıklayacağım, ardındanikifarklıserviskullanarak primary RAC kümesineyazma(INSERT/UPDATE/DELETE) işlemiyapacakbirservisin, fiziksel standby RAC kümesineise salt okumaişlemiyapacakolandiğerbirservisinyapılandırmasınıbirörnekleadımadımaçıklayacağım. Son bölümdeise Oracle 11.2 Dataguard RAC kümesineveritransferiyapan middle-tier uygulamasunucularınınkullandığı JDBC bağlantılarındamaksimumerişilebilirliğisağlayacakolanyapılandırmayıadımadımbirörnekleaçıklayacağım.

 

Yazıyabaşkarken Oracle 11.2 mimarisindekullanılan Fast-Start-Failover özelliğinin ne anlamageldiğiniinceleyelim.Fast-Start-Failover özelliği, primary veritabanınabağlantıkaybolduğudurumlardadahaöncedenseçilenfiziksel standby veritabanına Data Guard Broker prosesininotomatikolarakbağlantıkurmasıdır.  Fast-Start Failover özelliğisadece Data Guard Broker yapılandırmasıiçindekullanılır ve DGMRL komutsatırıveya Enterprise Manager konsoluüzerindenetkinleştirilir.

 

Fast-Start-Failover hizmeti hem maksimumerişilebilirlik, hemdemaksimumperformansmodundaçalışabilmektedir.MaksimumerişilebilirlikmoduseçiliolduğundasıfırverikaybıgarantiedilmektedirMaksimumperformansmoduseçiliolduğudurumdaiseFastStartFailoverLagLimitkonfigürasyonparametresiilebelirlenensaniyeiçerisindekiveridendahafazlasınınkaybıönlenmişolmaktadır.

 

Herhangibir failover durumundabroker’ınkesintisizçalışmasınısağlamakiçin, gözlemciyi(observer) primary ve standby veritabanlarıdışındabirmakineyekurmakfaydalıolacaktır. Hem Dataguard Broker, hemde standby veritabanı primary veritabanıilebağlantıyıFastStartFailoverThresholdparametresindebelirlenensüredendahauzunsüredekaybettiğizaman, broker standby veritabanınadoğru fast-start failover işleminitetikler. Buna ilaveten, eğerFastStartFailoverPmyShutdownparametresi TRUE olarakayarlanmışsa, FastStartFailoverThresholdparametresindekisüredendahauzunsürelikesintidurumunda primary veritabanıkapatılır.



Bununsebebi, redo taşımasıile standby ile primary arasındamuhtemeloluşabilecek redo boşluklarınınönünegeçmektir.Çünküoluşabilecekmuhtemel redo boşluklarında fast-start failover işlemi en iyimserdurumdauzayacak, en kötüdurumda işlem başarısızolacak ve standby sunucunubütünlüğünükaybederekyenidenoluşturulmaihtiyacıduyacaktır.FastStartFailoverAutoReinstateparametresi TRUE olarakayarlandığındaise, failover işlemitamamlandığındaeski primary veritabanınabağlantıtekrarsağlandığındaeski primary veritabanı standby veritabanıdurumunagetirilmişolacaktır.

 

 

image001

 

 

Uygunkorumamodununbelirlenmesi

 

Eğermaksimumerişilebilirliközelliğininetkinolmasıisteniyorsabudurumda standby veritabanınınLogXptModeparametresinin SYNC değeriniişaretetmesigerekmektedir.Maksimumperformansmodununetkinolmasıiçinisedurumda standby veritabanınınLogXptModeparametresinin ASYNC değeriniişaretetmesigerekmektedir.

 

DGMGRL> EDIT DATABASE ’orclprm’ SET PROPERTY LogXptMode=SYNC;

DGMGRL> EDIT DATABASE ’orclstd’ SET PROPERTY LogXptMode=SYNC;

DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;

 

Eğer minimal verikaybındanziyadeperformansdüşünmekteyseniz o zamanmaksimumperformansmodunuetkinleştirmekyeterligelecektir.Ancak, bu mod etkinleştirmedenönce ne kadarsüreiçerisindekiverikaybıkabuledilirmiktardır, bunubelirlemenizgerekmektedir. İştebusüreyiFastStartFailoverLagLimitparametresiiledüzenleyebilirsiniz.Buözellik, saniyedeğeriolarak, primary veritabanındanetkieden redo miktarından ne kadargeridegecikmeolacaktır, onubelirtmektedir. Bu parametresadecemaksimumperformansmodunda, yani standby veritabanında ASYNC aktifikenkullanılabilir, varsayılandeğer 30 saniyedir.En fazla 10 saniye’yedüşürülebilir.

 

DGMGRL> EDIT DATABASE ’orclprm’ SET PROPERTY LogXptMode=ASYNC;

DGMGRL> EDIT DATABASE ’orclstd’ SET PROPERTY LogXptMode=ASYNC;

DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxPerformance;

DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverLagLimit=15;

 

Fast-start failover işlemi, hem gözlemci(broker) hemdefiziksel standby sunucu primary sunucuyabağlantısınıyitirdiğindemeydanagelirdemiştik. İşte, ne kadarlıkzamansonra fast-start failover işlemidevreyegirecekonubelirlemekiçinFastStartFailoverThresholdparametresinisaniyedeğeriolarakayarlanmalıdır.Bu parametreninvarsayılandeğeri 30 saniyedir, en fazla 6 saniye’yedüşürülebilir.Eğerbirdenfazladüğümlü Oracle RAC veritabanıkullanıyorsanızbudeğeri 40 saniyeninüstündetutmanıztavsiyeedilir, çünküOracle RAC instancelerındanbirisibiranlıkerişilemezolursa, istemedendeolsa fast-start failover işlemihemendevreyegirecek ve standby RAC veritabanına failover meydanagelecektir.

 

DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold = 45;

 

Fast-start failover işleminietkinleştirmekiçingözlemcimakinedeaşağıdakikomutçalıştırılır.

 

DGMGRL> ENABLE FAST_START FAILOVER;

Enabled.

 

DGMGRL> SHOW FAST_START FAILOVER;

Fast-Start Failover: ENABLED
  Threshold:           30 seconds
  Target:                 orclstd

  Observer:            (none)
  Lag Limit:           30 seconds
  Shutdown Primary:    TRUE
  Auto-reinstate:           TRUE

Configurable Failover Conditions
  Health Conditions:
    Corrupted Controlfile          YES
    Corrupted Dictionary           YES
    Inaccessible Logfile              NO
    Stuck Archiver                      NO
    Datafile Offline                    YES

 

Oracle Error Conditions:

(none)

 

Bununyanındasağlıkşartlarıolarak log dosyalarınınerişilemezolmasıveyaarşivdosyalarının primary sunucudasıkışmasısorunlarındaotomatikolarak fast-start failover meydanagelmez. Eğerbuözelliklerideetkinleştirmek ve fast-start failover işlem alanınadahiletmekiçinENABLE FAST_START FAILOVER CONDITION komutukullanılır.

 

Bozulmuşkontroldosyasıtespitedildiğinde fast-start failover işlemininotomatik  devreyegirmesinietkinleştirmekiçin;

 

DGMGRL> ENABLE FAST_START FAILOVER CONDITION "Corrupted Controlfile";

 

ORA-27102  olayımeydanageldiğinde fast-start failover işlemininotomatik  devreyegirmesinietkinleştirmekiçin;

 

DGMGRL> ENABLE FAST_START FAILOVER CONDITION 27102;

 

Eğergözlemcimakinekullanılıyorsaaşağıdakikomutla observer servisibumakinedbaşlatılmalıdır.

 

DGMGRL> START OBSERVER;

 

Primary ve Fiziksel Standby veritabanlarındaservislerilekusursuzerişilebilirliğinsağlanması

 

Oracle 11.2 sürümüilegelenSCAN(Single Class Access Name) hizmeti, kümeiçindeki her birdüğümünistemcilertarafındantekertekerbilinmesinegerekduyulmadan, en optimal yükününotomatikolarakDBA'yeihtiyaçduymadanhesaplanması ve buistemcinin en uygundüğümeyönlendirilmesinisağlayanprosesdir. Bu sayedeistemcitarafındakiyükdengelemesiyönetimi DBA leriçinızdırapolmaktançıkıp, clusterwaretarafındanotomatikolarakyönetilmektedir.Sunucutarafındakiyükdengelemesiise, talepedilenservisiçin en azyüklü instance bulmakamacıyla SCAN tarafındankontroledilir ve budüğümünlokallistenerınabutalepyönlendirilir.

 

Rolbazlıveritabanıservisleri, Oracle Clusterwareveya Oracle Restart içerisindenyapılandırılır. Oracle Dataguard,  OracleClusterwareveya Oracle Restart ileetkileşimegeçerek primary-standby roldeğiştokuşusonundagerekliservislerinaktifolmasınısağlar, böylecesistemibaşlatmaolayıiçinherhangibir trigger yazılmasınadagerekkalmaz.

 

Aşağıdakiörnekte 2 düğümlü RAC adlı primary veritabanında“HR_APP” adlıservis primary roldeaktiftir.2 düğümlü RACSTD adlı standby veritabanında da “HR_REPORT” adlıservisiseraporlamahizmetleriyapmaküzerefiziksel standby rolündeaktiftir.

 

 

[oracle@linux1_rac] $ srvctl add service -d RAC -s HR_APP -l PRIMARY -q TRUE -e SELECT –m BASIC -w 10 -z 150

 

[oracle@linux1_rac] $ srvctl add service -d RAC -s HR_REPORT -l PHYSICAL_STANDBY -q TRUE –e SELECT -m BASIC -w 10 -z 150

 

 

Herhangibir switchover/failover durumunda HR_APP servisinin primary olarakhizmetvermeyedevametmesiiçin RACSTD adlı standby veritabanındadaaşağıdakigibiservislereklenmiştir.

 

[oracle@linux1_racstand] $ srvctl add service -d RACSTD -s HR_APP -l PRIMARY -q TRUE -e SELECT –m BASIC -w 10 -z 150

 

[oracle@linux1_racstand] $ srvctl add service -d RACSTD -s HR_REPORT -l PHYSICAL_STANDBY -q TRUE –e SELECT -m BASIC -w 10 -z 150

 

 

Fiziksel standby sunucuya redo taşımasıyoluylataşındığındaneminolmakiçin“HR_REPORT” adlıservisin primary veritabanında SRVTL START SERVICE ilebaşlatılması ve ardından SRVCTL STOP SERVICE ilededurudurulmasıgerekmektedir.

 

 

[oracle@linux1_rac] $ srvctl start service -d RACSTD -s HR_APP

[oracle@linux1_rac] $ srvctl stop service -d RACSTD -s HR_APP

 

 

HerhangibirDataguard Failover işleminitakiben, Oracle Data Guard Broker hatalı primary veritabanınabağlantılarıtemizlemesiiçinotomatikolarakFAN(Fast Application Failover) olayıyayınlar. Olayınalımınıtakiben FAN alımaboneleriyeni primary veritabanındabaşlayanserviseotomatikolarakyenidenbağlanırlar.

 

Kusursuzuygulama(application) failover işlemi disk arızası, data bozulması, donanımsalarıza, programınaskıdakalmasıgibioldukçasıkmaydanagelebileceklokalarızalardurumundaoldukçaelverişlidir. Kusursuzuygulama failover işleminde 3 anaparçavardır.

 

  • Yeni primary sitede/sunucudaservislerinyenidenbaşlatılması
  • Uygulamalarımevcutbağlantılarınısonlandırmasıiçinbilgilendirme
  • En elverişlişekildeuygulamalarınyenidenbağlantıaçmasınısağlama

 

Kusursuzuygulama failover işlemiiçin cluster ortamında Oracle Clusterware, tekil instance ortamında Oracle Restart olmalı ve her ikidurumdadaDataGuard Broker aktiveli Oracle DataGuardyapılandırmasınaihtiyaçduyulmaktadır.

 

JDBC uygulamalarındakusursuz application failover yapılandırması

 

 

Oracle veritabanınayapılan JDBC bağlantılarındakusursuz application failover işlemiiçinoluşturulacakolanservis hem primary hemdefiziksel standby sitedeoluşturulmalıdırServisleringerek normal çalışmadurumunda primary sitede primary rolde işlem yapması, gerekseherhangibir switchover/failover durumundayeni primary rolünegeçenclusterdada primary roldebaşlamasıiçin primary ve standby cluster içindeilgiliservislerioluşturuyoruz.Burdaönemliolannokta; sadece JDBC bağlantılarındakullanılacakolanservislerioluştururken, TAF ve OCI HA olaylarınıdevredışıbırakmamızgerekmektedir (alttakiörneklerdekikırmızıkısımlar).

 

 

Primary cluster içinde;

 

[oracle@linux1_rac] $ srvctl add service -d RAC -s HR_APP -r linux1_rac, linux2_rac -l PRIMARY -q FALSE -e NONE -m NONE -w 0 -z 0

 

[oracle@linux1_rac] $ srvctl add service -d RAC -s HR_REPORT -r linux1_rac, linux2_rac -l PHYSICAL_STANDBY -q FALSE -e NONE -m NONE -w 0 -z 0

 

 

Standby cluster içinde:

 

[oracle@linux1_racstand] $ srvctl add service -d RAC -s HR_APP -r linux1_racstand, linux2_racstand -l PRIMARY -q FALSE -e NONE -m NONE -w 0 -z 0

 

[oracle@linux1_racstand] $ srvctl add service -d RAC -s HR_REPORT -r linux1_racstand, linux2_racstand -l PHYSICAL_STANDBY -q FALSE -e NONE -m NONE -w 0 -z 0

 

JDBC bağlantısındamaksimumerişilebilirliğisağlamakiçinkullanılacakolanservislerioluşturduktansonra HR_REPORT servisininprimaryden standby siteye redo taşımasınıbaşlatmasıiçin primary sitede SRVCTL START SERVICE ilebaşlatılmalıdır.

 

[oracle@linux1_rac] $ srvctl start service -d RACSTD -s HR_APP

 

 

  • Oracle JDBC sürücüsüyüklenmelidir. Her bir site için SCAN adresiiçerecekadreslistesinitaşıyacakolanbağlantıtanımlayıcısınınkullanılmasıgerekmektedir. Aşağıdakiörnek HR_APP uygulamasıiçindir. Eğerraporlamaiçindejdbcbağlantısıkullanılacaksabudurumda HR_REPORT servisiiçindeaşağıdakigibigirişoluşturulmalı ve yüklenmelidir.

 

 

"jdbc:oracle:thin:@" + "(DESCRIPTION_LIST=" +

"(LOAD_BALANCE=off)" + "(FAILOVER=on)" + "(DESCRIPTION=" + "(ADDRESS_LIST=" + "(LOAD_BALANCE=on)" + "(ADDRESS=(PROTOCOL=TCP)(HOST=rac-scan)(PORT=1521)))" + "(CONNECT_DATA=(SERVICE_NAME=hr­_app)))" + "(DESCRIPTION=" + "(ADDRESS_LIST=" + "(LOAD_BALANCE=on)" + "(ADDRESS=(PROTOCOL=TCP)(HOST=racstd-scan)(PORT=1521)))" + "(CONNECT_DATA=(SERVICE_NAME=hr_app))))";

 

 

JDBC URL üzerindenyapılanbağlantısonrasında Oracle NET servisi DNS ileiletişimegeçerek RAC primary sitesinin SCAN adresinitoplam 3 IP adresineçözümler.Rastgelebirtanesiniseçerekbağlantısağlar.Eğer primary üzerinebağlantıbaşarısızolursabudurumda RACSTD  standbysitesindeki SCAN üzerindenrastgelebirtanesiüzerindenbağlantısağlar.

 

 

Eğer TCP_CONNTIMEOUT_STR özelliğiayarlanırsa, JDBC istemcisiçokkolaybirşekildeadreslistesinetaşınır.

 

 

Properties prop = new Properties();

prop.put(oracle.net.ns.SQLnetDef.TCP_CONNTIMEOU T_STR, ""+5000);  // 5000ms

pds.setConnectionProperties(prop);

 

Fast Connection Failover işleminiaşağıdakiadımlardaanlatıldığışekildeaktiveediyoruz.

 

 

  • Bu işlem içinONS(Oracle Notification Services) tümdüğümlerdeaktifolmalıdır. Tümdüğümlere ONSCTL PING komutuyla ping çekiyoruz ve ONS ninaktifolupolmadığınıkontrolediyoruz. ONSCTL PING komutununcevapvermediğidüğümlerdesırasıylakomutlarınıçalıştırırak ONS servisinikuruyoruz.

 

 

 

$  srvctl add ons

$  srvctl enable ons

$  srvctl start ons

 

 

  • Eğer application tier ONS üzerinde çalışıyorsa cluster düğümlerini application ONS ye duyarlı hale getiriyoruz.ORA_CRS_HOME/bin/racgons dizini altından aşağıdaki komutu primary ve standby sitelerde yeni bir terminal penceresinde root hesabı ile oturum açarak çalıştırıyoruz.

 

 

 

# racgons.binadd_config linux1_rac:6200 linux2_rac:6200 linux1_racstand:6200 linux2_racstand:6200

 

 

  • VerikaynağıüzerindesetFastConnectionFailoverEnabled(true)parametresiile Fast Connection Failover işleminiayarlayarakuygulamanın hem primary hemde standby sitedeki ONS bekleticiprogramlarına(daemons) bağlanmaişleminitamamlıyoruz.

 

 

 

ods.setConnectionCachingEnabled(True);

Properties prop = new Properties();

prop.setProperty("MinLimit", "5");

prop.setProperty("MaxLimit", "40");

prop.setProperty("InitialLimit", "10");

ods.setConnectionCacheProperties(prop);

ods.setFastConnectionFailoverEnabled(True);

ods.setConnectionCacheName(MyCache”);

ods.setConnectionCacheProperties(cp);

ods.setONSConfiguration("nodes= linux1_rac:6200,linux2_rac:6200, linux1_racstand:6200,linux2_racstand:6200");

 

 

Umarımfaydalıbirmakaleolmuştur.


Viewing all articles
Browse latest Browse all 68

Trending Articles


Hamile kalmak için


Şekilli süslü hazır floodlar


Havas-ul Kur-an Kenzul Havas PDF


Hamile kalmak için


EL-AZÎM Esması ve Sırları


En etkili korumlardan birisi


Enerji Beden ve İki Uygulama-1


Foxtrot Six Türkçe Dublaj izle (2020)


SCCM 2012 Client Installation issue


Hakan Sabancı 4 ayrı adrese Sevgililer Günü buketi gönderdi!