H.Tonguç Yılmaz - tonguc.yilmaz@gmail.com RAC ortamında yazılım geliştirme TROUG RAC SIG etkinliği Spring Giz Oracle Eğitim Merkezi, Maslak 09/10/2010 H.Tonguç Yılmaz - tonguc.yilmaz@gmail.com http://friendfeed.com/TongucY
http://tonguc.wordpress.com/about/ H.Tonguç Yılmaz: Oracle veritabanı uzmanı - iyi bir Fenerbahçe taraftarı - Metal müzik sever - Bol bol DVD izler vs. Fethiye Lisesi, İTÜ Bilgisayar Müh., Bilgi MBA C Developer, Informix DBA-Hp Unix Admin, Oracle DBA, Oracle ETL Developer, DW Development Team Leader 1996 Tekstilbank, 2000 Turkcell, 2008 Turkcell Teknoloji 10+ sene Oracle veritabanı tecrübesi, Oracle 8i,9i,10g OCP & 2007 Oracle ACE, 2005 Oracle blogger 2002 Turkcell Akademi Oracle veritabanı iç eğitmeni & 2002 TTech Paf koçu 1999 OracleTurk moderatör, 2010 TROUG kurucu üye
Real Application Clusters – Tehlikeli Algılar “RAC uygulamalara saydamdır; single instance bir Oracle veritabanı uygulaması hiç değişiklik yapmasan da RAC ile daha AZ erişebilir veya AZ performanslı çalışmaz.” hmm “CV’de çok karizmatik duruyor bu RAC, neler gördük biz haydi hemen geçelim bundan mı korkacağız.” hmm Bence; özellikle 11g ile RAC olgun ve güçlü bir silah ama yanlış ellerde hala ciddi zarar verebilir Bence; farkındalık & uzmanlık & ilişkiler zarar görmemek için önemli
Real Application Clusters - Tanımlar Cluster birden fazla makinenin tek bir hizmeti istemcilerine saydam olarak sunabilmeleri için bir araya getirilmeleriyle oluşturulan yapıdır. Real Application Clusters Oracle veritabanı servisini birden fazla makinenin oluşturduğu bir cluster üzerinden sunabilmemizi sağlayan teknolojidir. RAC, sunucular arası paylaşımlı bellek mimarisinin en gelişmiş örneklerinden biridir. Tüm sunucuların belleği tek bir bellekmiş gibi davranır. Verinin paylaşımlı bellekte bir anda sadece bir kopyası bulunur; mükerrer kopyalar bulunmaz. Veritabanına ait dosyalar üye sunucuların tamamının I/O yapabildiği ortak bir diskte bulunurlar. Üye sunucuların tamamı private interconnect adı verilen bir ağa dâhildirler. Sunucular veri bloklarını, global kilitleri ve SCN değerlerini birbirlerine gönderirken bu ağı kullanırlar.
RAC Temel Mimari What is RAC? Until now, you have only one instance mounting and operating on a single database. With RAC, multiple instances (theoratically up to 1055) can mount and operate on a single database. What is RAC not? Still, an instance can only mount one database at a time. What it is good for? Availability Workload distribution Scalability
Real Application Clusters – Dikkat 1/2 Yüksek erişilebilirlik: Failover durumunda uygulama ne yapacak Ölçeklenebilirlik: Tek instance performans sorunu ile RAC geçişi tehlikeli, büyüteç etkisi OLTP için FTS tehlikesi Indexing, partitioning ve clustering tasarım kararları Sequence cache miktarları OLTP için hard-parse tehlikesi OLTP için DDL etkisi DBA-Developer etkileşimi ASSM(otomatik freelist yönetimi), PQ ayarları UTL_FILE & External Table kullanımı Uygulama bölümleme için Servis kullanımı(Scheduler,Tracing,Monitoring,Resource Manager kolaylıkları) Most Common RAC Tuning Tips In any database system, RAC or single instance, the most significant performance gains are usually obtained from traditional application-tuning techniques. The benefits of those techniques are even more remarkable in a RAC database. In addition to traditional application tuning, some of the techniques that are particularly important for RAC include the following: Try to avoid long full-table scans to minimize GCS requests. The overhead caused by the global CR requests in this scenario is because when queries result in local cache misses, an attempt is first made to find the data in another cache, based on the assumption that the chance is high that another instance has cached the block. Automatic Segment Space Management can provide instance affinity to table blocks. Increasing sequence caches improves instance affinity to index keys deriving their values from sequences. That technique may result in significant performance gains for multi-instance insert-intensive applications. Range or list partitioning may be very effective in conjunction with data-dependent routing, if the workload can be directed to modify a particular range of values from a particular instance. Hash partitioning may help to reduce buffer busy contention by making buffer access distribution patterns sparser, enabling more buffers to be available for concurrent access.
Real Application Clusters – Dikkat 2/2 DBA-Developer-Quality Assurance etkileşimi OLTP için canlı ortam yükü testleri, 11g ile RAT opsiyonu lisansı RAC‘ın kendi donanım ve yazılım lisans maliyetlerinin hesaplanması Grid Control, AWR, ADDM siz RAC ortamiı (özellikle 11g ile) düşünülemez Değişiklikleri denemek için canlı ortamı temsil edebilecek bir test cluster ortam ihtiyacı Sonuç: RAC farkında developer-tester-dba-unix admin ihtiyacı Most Common RAC Tuning Tips (continued) In RAC, library cache and row cache operations are globally coordinated. So, excessive parsing means additional interconnect traffic. Library cache locks are heavily used, in particular by applications using PL/SQL or Advanced Queuing. Library cache locks are acquired in exclusive mode whenever a package or procedure has to be recompiled. Because transaction locks are globally coordinated, they also deserve special attention in RAC. For example, using tables instead of Oracle sequences to generate unique numbers is not recommended because it may cause severe contention even for a single instance system. Indexes that are not selective do not improve query performance, but can degrade DML performance. In RAC, unselective index blocks may be subject to inter-instance contention, increasing the frequency of cache transfers for indexes belonging to insert-intensive tables. Always verify that you use a private network for your interconnect, and that your private network is configured properly. Ensure that a network link is operating in full duplex mode. Ensure that your network interface and Ethernet switches support MTU size of 9 KB. Note that a single gigabit Ethernet interface can scale up to ten thousand 8-KB blocks per second before saturation.
Real Application Clusters ile Yüksek Erişilebilirlik Temel Topoloji Disk I/O kartı – HBA Ağ kartı – NIC Ağ Switch SAN Switch
Oracle Veritabanı için Yüksek Erişilebilirlik Plansız Kesintilere Çözümler Sunucu çökmelerine karşı; Real Application Clusters (RAC) Disk ve saklama ünitesi çökmelerine karşı; Automatic Storage Management (ASM) İnsani hatalardan kaynaklanan veri kayıplarına karşı; LogMiner Flashback Technologies Streams Disk üzerindeki veri bozulmalarına ve/veya kayıplarına karşı; Recovery Manager (RMAN) Oracle Secure Backup Doğal felaketler sonucu yaşanan makine parkı kayıplarına karşı; Data Guard
Veritabanı bakımı için; Oracle Veritabanı için Yüksek Erişilebilirlik Planlı Kesintilere Çözümler Veritabanı bakımı için; Online Schema and Data Reorganization Partitioning Boyutlandırma değişiklikleri için; Real Application Clusters (RAC) - Online Reconfiguration Yama yüklemeleri için; Real Application Clusters (RAC) – Sıralı Yama Yüklemeleri Sürüm yükseltimleri için; Logical Data Guard (SQL Apply) – Sıralı Sürüm Yükseltimleri
Transparent Application Failover - TAF Real Application Clusters ile Yüksek Erişilebilirlik Bağlantı Kurtarma Yöntemleri Transparent Application Failover - TAF Oracle Client, uygulamanızın bağlı olduğu üye sunucu çöktüğünde, bağlantıyı saydam bir şekilde ayakta kalan üye sunuculardan birine yönlendirir. Uygulamanızın TAF yapılandırmasını desteklemesi için ek kodlama yapmanız gerekir. Fast Application Notification – FAN Oracle Server, uygulamanızın bağlı servislerin sunan sunucuların durumlarında bir değişiklik olduğunda uygulamanıza bir bilgilendirme mesajı gönderir. Uygulamanızı geliştirdiğiniz ortama bağlı olarak ek kodlama yapmanız gerekmeyebilir. TAF is implemented at the Oracle Client. It requires coding in the application. How it works? When Oracle Client detects that the connection handle it is using is no longer a valid one, it automatically tries to re-connect. A user callback can be associated with TAF. On going SELECTs may resume. On going transactions are lost. Some errors may be raised. They should be handled properly by the application. FAN is implemented at the Oracle Server. When Oracle Server detects a DOWN/UP event on any resource (service, ASM instance, database instance, node, etc.) or a load change on the node, it automatically notifies the subscribed applications with Oracle Notification Services (ONS). Applications can subscribe to ONS events and process them as they wish. Fast Connection Failover (FCF) enabled applications may leave the processing to Oracle Client. On going transactions are automatically rollbacked if FCF is enabled.
RAC alternatifleri(mi) Active - Passive cluster Oracle Data Guard Streams/Advanced Replication
Tamamlayıcı Okuma, Kapanış May 18, 2009 “RAC Aware Software Development” Discussion: http://tonguc.wordpress.com/2009/05/18/rac-aware-software-development-discussion/ This is very true but I wish companies first develop RDBMS vendor Aware software before RAC. I have suffered from RAC unaware software but I suffered more Oracle unaware develop once run on all RDBMS type softwares. Comment by coskan — May 18, 2009 Hmmm :)
Oku, dene, sorgula, geliştir, *paylaş* .. Kaynakça – Oracle University - Oracle 11g: RAC and Grid Infrastructure Administration Accelerated Konu 14 RAC Database Monitoring and Tuning Konu 15 Services Ek D: High Availability of Connections Introduction to Oracle Real Application Clusters, Ogün Heper Istanbul, 30.07.2008 http://www.juliandyke.com/Presentations/ Oracle RAC Tuning Tips by Joel Goodman Understanding RAC Internals by Barb Lundhild
Sorularınız ve/veya yorumlarınız Oracle Türkiye ve Yasin Saygılı’ya destekleri için çok teşekkürler ? ? ? ? ? Sorularınız ve/veya yorumlarınız ? ? ? ? ? H.Tonguç Yılmaz - tonguc.yilmaz@gmail.com http://friendfeed.com/TongucY ?
Bir sonraki Özel İlgi Grubu otumu için önerim - Oracle Maximum Availability Architecture Real Application Clusters + Data Guard; Yüksek Erişilebilirlik için veritabanı seviyesinde uçtan uca veri koruması ve erişilebilirlik sağlayan bir çözüm. Data Guard sayesinde tek bir konfigürasyon olarak yönetilir.