joomla templates Data Warehouse Türkiye

Thu09082011

Last update07:32:32 PM GMT

Back Yazarlarımız Dba RAC mimarisinde Transparent Application Failover (TAF)
Salı, 08 Şubat 2011 13:58

RAC mimarisinde Transparent Application Failover (TAF)

Yazan&Gönderen  Ugur Inal
Bu Öğeyi Derecelendir
(2 Oylar)
Bu yazı "Oracle RAC mimarisinde yük dengeleme" adlı yazımın devamıdır. TAF(şeffaf uygulama yük devri), OCI sürücüsünün çalışma süresi özelliğidir. Çalıştırdığınız uygulamanın başlangıç bağlantısı düştüğü zaman otomatik olarak servise yeniden bağlanmasını sağlar. Yeniden bağlanırken, işlemlerin geri alınmasına rağmen, o an işlem gören SELECT cümlesinin çalışmasını opsiyonel olarak kaldığı yerden devam ettirir. TAF iki şekilde yük devreder:

BASIC metodu ile yeniden bağlantı yük devri süresinde saptanır. Servis tüm düğümlerde başladıktan sonra başlangıç bağlantısı sağlanır. Listener bağlantıyı saplar ve herhangi bir sebepten dolayı bağlantı düşene kadar çalışan uygulama Oracle 10g veritabanına erişir. Çalışan uygulama bir sonraki sefer veritabanına erişmeyi deneyene kadar hata alır. Sonra, OCI sürücüsü aynı servise tekrar bağlanmayı dener, uygulama bir sonraki sefer veritabanına erişmeyi denerken şeffaf olarak yeni oluşturulan bağlantıyı kullanır. TAF, çok hızlı şekilde düşme olaylarını tespit ederek yük devrinde FAN olaylarının alımını etkinleştirebilir.
PRECONNECT metodu BASIC metodu ile benzerlik gösterir. Tek farkı; PRECONNECT'in gölge bağlantının aynı zamanda yük devrini önceden kestirmek için oluşturduğu başlangıç bağlantısı esnasında olmasıdır. TAF, otomatik olarak oluşturulan ve sürdürülen gölge servisi kullanarak gölge bağlantının her zaman servisinizin en uygun instancelarında oluşturulmasını garanti altına alır.
FAN olmadan temel TAF yapılandırması
TAF kullanmaya başlamadan önce, bağlantılar esnasında kullanılan bir servis oluşturmanız ve bu servisi başlatmanız tavsiye edilir. Böylece, TAF ve servislerin birbiriyle entagrasyonu kolaylaşır. Eğer bu servis ile beraber BASIC TAF kullanmak isterseniz, servisi oluştururken –P BASIC seçeneğini kullanmalısınız. Servis oluşturulduktan sonra veritabanınzda bu servisi çalıştırın.
FAILOVER_MODE parametresi bağlantı tanımlayıcısının CONNECT_DATA kısmına dahil edilmelidir:
TYPE yük devir tipini belirtir. SESSION değeri, OCI uygulamasındaki açık cursorların yeniden yürütülmesi gerekse bile sadece kullanıcı oturumunun sunucu tarafında yeniden kimliğinin onaylandığını gösterir. SELECT değeri ise sadece kullanıcı oturumunun sunucu tarafında yeniden kimliğinin doğrulanmadığı, aynı zamanda OCI içindeki açık cursorlarında fetching işlemine devam ettiğini belirtir.
METHOD=BASIC olarak ayarlanmışsa, yük devri esnasında yeniden bağlanmada kullanılır.
RETRIES değeri yük devri sonrasında bağlantı denemesi süresinin sayısıdır.
DELAY değeri, bağlantı denemeleri arasındaki toplam bekleme süresidir.
Not: Eğer TAF kullanılıyorsa listener dosyasında GLOBAL_DBNAME parametresini ayarlamayın.
$ srvctl add service -d RACDB -s SERVICE1 -r RAC1,RAC2 -P BASIC
$ srvctl start service -d RACDB -s SERVICE1
SERVICE1 =
(DESCRIPTION =(FAILOVER=ON)(LOAD_BALANCE=ON)
(ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=rac2-vip)(PORT=1521))
(CONNECT_DATA =
(SERVICE_NAME = SERVICE1)
(FAILOVER_MODE =
(TYPE=SESSION)
(METHOD=BASIC)
(RETRIES=180)
(DELAY=5))))
$ srvctl add service -d RACDB -s SERVICE1 -r RAC1,RAC2
$ srvctl start service -d RACDB -s SERVICE1
execute dbms_service.modify_service (
service_name => 'SERVICE1' ,
aq_ha_notifications => true,
failover_method => dbms_service.failover_method_basic ,
failover_type => dbms_service.failover_type_session ,
failover_retries => 180, failover_delay => 5,
clb_goal => dbms_service.clb_goal_long);
SERVICE1 =
(DESCRIPTION =(FAILOVER=ON)(LOAD_BALANCE=ON)
(ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=rac2-vip)(PORT=1521))
(CONNECT_DATA = (SERVICE_NAME = SERVICE1)))
TAF Preconnect Configuration
Oracle Clusterware tarafından gölge servisin oluturulup otomatik yönetilmesi için –P PRECONNECT seçeneği ile servisin belirlenmesi gerekir. Gölge servisi her zaman _PRECONNECT formatı kullanılarak adlandırılır.
Üstteki örnekten ana farklılığı; METHOD değeri PRECONNECT olarak atanır ve BACKUP adı olan ilave bir parametre eklenir. BACKUP parametresi, gölge servisi işaret eden tnsnames.ora dosyasındaki başka bir girişe eklenir.
$ srvctl add service -d RACDB -s SERVICE2 -r RAc1 –a RAC2 -P PRECONNECT
$ srvctl start service -d RACDB -s SERVICE2
SERVICE2 =
(DESCRIPTION =(FAILOVER=ON)(LOAD_BALANCE=ON)
(ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=rac2-vip)(PORT=1521))
(CONNECT_DATA = (SERVICE_NAME = SERVICE2)
(FAILOVER_MODE = (BACKUP=SERVICE2_PRECONNECT)
(TYPE=SESSION)(METHOD=PRECONNECT))))
SERVICE2_PRECONNECT =
(DESCRIPTION =(FAILOVER=ON)(LOAD_BALANCE=ON)
(ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=rac2-vip)(PORT=1521))
(CONNECT_DATA = (SERVICE_NAME = SERVICE2_PRECONNECT)))
Son Düzenleme Pazartesi, 14 Şubat 2011 14:28
Ugur Inal

Ugur Inal

1974 doğumluyum. 10 yıldır Oracle benim için bir tutku... Bu süre zarfında yurtiçi ve yurtdışında pekçok kurumsal firmaya Oracle eğitimleri verdim, bununla beraber pek çok firmaya Oracle danışmanlık hizmetlerinde bulundum. 9 yıldır OCP sertifikasına sahibim. 2 yıldır İsviçre'de Executive MBA eğitimine devam etmekteyim ve işim gereği çok sık seyahat ediyorum. Halen uluslararası bir firmada veritabanı katmanında Sr.Oracle İyileştirme Danışmanı olarak görev yapmaktayım. 2 yıldır şube kurucusuda olduğum Türkiye Bilişim Derneği(TBD) Antalya şubesi yönetim kurulu üyesiyim.

Website: uguroracle.blogspot.com/ E-posta: Bu e-Posta adresi istek dışı postalardan korunmaktadır, görüntülüyebilmek için JavaScript etkinleştirilmelidir
Login to post comments