Pages

9 Ocak 2011 Pazar

RAC mimarisinde Transparent Application Failover (TAF)

Bu yazı "Oracle 10g RAC mimarisinde gelişmiş 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 işleminin ç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.

Oracle 10g RAC mimarisinde gelişmiş yük dengeleme

Oracle 10g RAC mimarisinde yük dengeleme 2 farklı yoldan yapılandırılabilir. Bunlar;

  1. İstemci tarafında bağlantıları dengeleme
  2. Sunucu tarafında bağlantıları dengeleme
Şimdi bu her iki yük dengeleme metodunun farklılıkları ve performans üzerindeki etkilerini örneklerle inceleyelim.

8 Ocak 2011 Cumartesi

Paylaşımlı bellek ve semaforlar – Oracle

Veritabanı bazı durumlarda düzgün bir şekilde kapatılmadığında paylaşımlı bellek serbest bırakılmayabilir. Bu durumda oturum açmak istediğinizde veritabanı açılışında aşağıdaki hatayı alırsınız.

$ sqlplus /nolog
SQL> connect / as sysdba

ERROR:
ORA-03113: end-of-file on communication channel

Bu gibi sorunları çözmek için geçersiz Oracle prosesleri tarafından kilitlenmiş veya bloklanmış paylaşımlı bellek ve semaforları kontrol edebilirsiniz. Ancak bundan önce UNIX mimarisinde paylaşımlı bellek segmentlerinin ve semaforların ne olduğunu kısaca anlamak gerekiyor.

Oracle RAC mimarisinde public ve virtual IP adreslerinin değiştirilmesi


Mevcut konfigürasyon                                         Sonraki konfigürasyon
============================================================
Birinci düğüm:

Public IP:        216.160.37.154                              192.168.10.11
VIP:                216.160.37.153                              192.168.10.111
Subnet   :        216.160.37.159                               192.168.10.0
Netmask:        255.255.255.248                             255.255.255.0
Interface adı:   eth0                                                 eth0
Hostname:       rac1                                                rac1
============================================================
İkinci düğüm:

Public IP:         216.160.37.156                              192.168.10.22
VIP:                216.160.37.157                              192.168.10.222
subnet:             216.160.37.159                              192.168.10.0
Netmask:         255.255.255.248                           255.255.255.0
Interface adı:   eth0                                                 eth0
Hostname:       rac2                                                rac2

=============================================================

7 Ocak 2011 Cuma

SRVCTL komutları ile Oracle RAC yönetimi

Server Control Utility(SRVCTL) komutları ile Oracle 10.1 RAC sürümünden itibaren alttakileri yapabiliriz.

  • ASM instance işlemleri
  • Veritabanını başlatmak ve durdurmak
  • Veritabanının konfigürasyonunu kontrol etmek
  • Veritabanının durumunu kontrol etmek
  • Mevcut veritabanı konfigürasyonunu değiştirmek veya kaldırmak
  • Yeni bir veritabanı konfigürasyonu eklemek
  • Veritabanını etkinleştirmek veya devredışı bırakmak

6 Ocak 2011 Perşembe

Linux’ta “Huge Pages” yapılandırması

“Big/Huge pages” özelliği Oracle SGA gibi paylaşımlı bellekler için ne kadar fiziksel ardışık büyük bellek sayfalarının tahsis edilebileceğini ve RAM ‘e iliştirileceğini tanımlayan bir özelliktir. Örneğin,  her biri 2GB SGA’ya sahip 3 tane Oracle instance için en azından 6GB büyük sayfa(large pages) tahsis edilmelidir. Böylece, 3 SGA da büyük sayfa kullanacak ve ana fiziksel bellek içinde kalacaktır. Bununla beraber aynı sistem içinde eğer ASM kullanılırsa ilave olarak 200MB paylaşımlı belleğe ihtiyaç olacaktır. Tabi bunun yanında başka Oracle prosesleride ilave paylaşımlı belleğe ihtiyaç duyacaktır.

4 Ocak 2011 Salı

Dataguard mimarisinde redo log taşıma hizmetlerinin iyileştirilmesi

Redo taşıması için ne kadar bant genişliği yeterlidir?

Dataguard 3 çeşit redo taşıma metodu sunmaktadır: ARCH, LGWR ASYNC ve LGWR SYNC

Dataguard yapılandırmalarının amacı redo verisinin uzak siteye veritabanında bir felaket durumunda en kısa zamanda ve en son güncel durumdan eksiksiz geri kurtarma hizmeti vermektir. Eğer gerekli yoğunluğu ele alabilecek yeterli bant genişliği mevcut değilse hiç bir iyileştirme hizmeti sonuç vermez. Ne kadar bant genişliği kullanılacak sorusuna cevap vermek için ise, önce primary veritabanından ne kadar redo yoğunluğu olduğunun incelenmesi gerekmektedir.

3 Ocak 2011 Pazartesi

Önbellekte gereksiz blok işgal eden indeksler

SQL cümlesinde kullanılan indeks tarafından çağrılan bloklar gerçekten SQL performansını iyileştirmektemi? Buna kesin olarak evet demek mümkün değil. Önbellekte blok işgal eden segmentlerin sahiplerini, tiplerini ve isimlerini bilmek SQL iyileştirme çalışmalarında oldukça kullanışlıdır. Bunun yanında hangi objelerin en fazla önbelleği işgal ettiğini yüzdesel olarak bilmekte SQL iyileştirme çalışmalarında nereye öncelikli olarak odaklanmamız gerektiğini bize gösterecektir. Bu sebeple öncelikle önbellekte o an bulunan indeksleri gözlemlemek gerekir. Burdaki soru, bu indeksler ilişkli tablo tarafından gerçekten kullanılmaktamıdır?

Oracle 10g veritabanı için Solaris sistemde TLB/TSB Misses ve Pages Fault oranlarının iyileştirmesi

TLB ve TSB terminolojisi 

Bir proses bellek talep ettiğinde bu talep için sadece sanal bellek ayrılılır. Fiziksel bellek henüz ayrılmamıştır. Bir proses bu ayrılan sanal bellek içindeki sayfaya(page)  erişim talep ettiğinde, sayfa hatası(page fault) oluşur. Sonuçta, bu prosesin sanal sayfasına boş listeden bir fiziksel sayfa ile eşleştirilir.
Bu eşleşme yazılım içindeki sanal bellek sistemi tarafından oluşturulur ve HAT Mapping Entries(HME) formunda HPT(Hash Page Tables) içinde saklanır. Ayrıca bunun bir kopyasıda TLB ve TSB içine Translation Table Entries(TTE) olarak girilir.

2 Ocak 2011 Pazar

Solaris 10 üzerinde host ismi ve ip adresini değiştirme

Oracle 10g RAC(Real Application Clusters) kurulumunda, eğer Solaris 10 yüklü düğümlerin host isimlerini büyük harfle girmişseniz Oracle Clusterware yazılımı yüklemesinde hata mesajı alırsınız. Bu hata mesajından tek kurtuluş düğümün host ismini küçük harfli olarak alttaki gibi değiştirmektir. Bunun yanında, network adresini değiştirmek gerektiğindede bu düğümün ip adresini değiştirmek için alttaki adımları izleyebilirsiniz.

RMAN-03002, RMAN-03015, RMAN-06053,RMAN-06025 hata mesajları

Sorun:
RMAN-03002: failure of Duplicate Db command at 12/25/2010 04:15:24
RMAN-03015: error occurred in stored script Memory Script
RMAN-06053: unable to perform media recovery because of missing log
RMAN-06025: no backup of log thread 1 seq 21 lowscn 674529 found to restore
RMAN-06025: no backup of log thread 1 seq 20 lowscn 674626 found to restore

Sebebi: RMAN arşiv log geri yüklemesini varsayılan istikamete yapamıyor.


Çözümü:
DUPLICATE komutu kullanılırken NOFILENAMECHECK parametresini ekleyin.
DUPLICATE TARGET DATABASE TO "clonedb" NOFILENAMECHECK;

1 Ocak 2011 Cumartesi

Oracle çalışan Linux/UNIX sistemlerde “Out of memory” hatası

Linux veya UNIX sistemlerde çalışan Oracle tabanlı uygulama için işletim sisteminde paylaşımlı belleğin serbest bırakılıp bırakılmadığını kontrol etmek için alttaki programı derleyin ve çalıştırın.