RAC
Transkript
RAC
TROUG [ Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi ] Oracle RAC (Real Application Cluster) Emre BARANSEL TROUG [ Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi ] ORACLE RAC (Real Application Cluster) Giriş Oracle RAC, 9i veritabanı versiyonuyla tanıtılmış ve her versiyonda özellikleri artarak, tutarlılığı iyileşerek, günümüzde oldukça yaygın kullanılan bir Oracle teknolojisi haline gelmiştir. Bu yazıda Oracle RAC teknolojisinin genel bileşenleri, kurulumu, yönetilmesi ve izlenmesi hakkında genel ve kavramsal açıklamalar bulacaksınız. Yazıdaki tanımlamalar ve açıklamalar 11gR2 versiyonu için geçerlidir. Cluster, birbirine bağlı birden fazla bilgisayarın veya sunucunun, son kullanıcı ve uygulamalara tek bir sunucu gibi görünmesini ifade eder. Oracle RAC, Oracle veritabanları için cluster çözümüdür. Birden fazla sunucunun işlem gücü, veritabanı katmanında tek bir sunucuya gore daha yüksek performans ve erişilebilirlik ayrıca ölçeklenebilirlik sağlar. Oracle RAC, birden fazla veritabanı sunucusunun tek bir sunucu gibi çalışmasını sağlamak için altyapı olarak Oracle Clusterware’i kullanır. Oracle Clusterware, birçok platformda, Oracle RAC çalıştırmak için gerekli olan tek clusterware yazılımıdır. Bunun yanında, eğer Oracle RAC ile uyumlu ise, farklı clusterware yazılımlarının da kullanılması mümkündür. Oracle RAC veritabanı, yapısal olarak cluster olmayan veritabanından farklıdır. Oracle RAC ortamında sunucular üzerinde birer instance çalışır ve bu instance’lar tek bir veritabanını yönetirler. Her instance’a özel; - En az bir redo grubu ve Undo tablespace bunlunmalıdır. Oracle RAC tüm uygulama türleri için yüksek erişilebilirlik ve ölçeklenebilirlik sağlar. Uygulamalar kod değişikliğine ihtiyaç duymadan Oracle RAC üzerinde çalışabilirler. Oracle Clusterware Oracle Clusterware, Oracle veritabanı için entegre ve bütün bir cluster yönetim çözümüdür. Bu clusterware, node üyeliği, grup servisleri, global kaynak yönetimi ve yüksek erişilebilirlik gibi cluster yönetimi için gerekli tüm fonksiyonları sağlar. Oracle Clusterware, Oracle RAC için dizayn ve entegre edilmiştir. Herhangi bir yönetim aracını kullanarak yarattığınız veritabanı, otomatik olarak Oracle Clusterware tarafından kayıt altına alınır ve yönetilir. Bunun dışında Virtual Internet Protocol (VIP) adresi, Single Client Access Name (SCAN), SCAN listener, Oracle Notification Service ve Oracle Net listener gibi diğer gerekli komponentler’de Oracle Clusterware tarafından yönetilir. Bu kaynakların 1 TROUG [ Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi ] ORACLE RAC (Real Application Cluster) hepsi sunucu açıldığında Oracle Clusterware tarafından otomatik olarak başlatılır ve herhangi bir hata durumunda da yeniden başlatır. Oracle Clusterware daemon’ları cluster’daki her sunucuda çalışırlar. Oracle Clusterware ‘in yönettiği her servis “CRS resource” olarak adlandırılır. “CRS resource” bir veritabanı, instance, servis, listener, VIP adresi veya bir uygulama işlemi olabilir. “CRS resource”ların konfigürasyon bilgileri Oracle Cluster Registry (OCR) dosyalarında tutulur. SRVCTL komutları kullanılarak, tanımlı CRS resource’lar yönetilebilir. Ayrıca Oracle tarafından öntanımlı olmayan ve cluster’daki sunucularda çalışan herhangi bir işlemi (process) yönetmek için “CRS resource” yaratılabilir. Oracle RAC Mimarisi 2 TROUG [ Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi ] ORACLE RAC (Real Application Cluster) Cluster-uyumlu depolama çözümleri Oracle RAC veritabanı dosyaların paylaşımlı kullanıldığı bir mimaridir. Tüm datafile’lar, control file’lar, spfile ve redolog dosyaları, cluster uyumlu, paylaşımlı disklerde tutulmalıdırlar. Böylelikle tüm cluster veritabanı instance’ları bu dosyalara erişebilir. Oracle RAC için, desteklenen, cluster uyumlu bir depolama çözümü seçmelisiniz. Oracle veritabanı RAC için aşağıdaki depolama seçeneklerini sunar: Oracle Automatic Storage Management (ASM) ASM Oracle’ın RAC için tavsiye ettiği, disklerin Oracle instance’ı tarafından yönetildiği bir depolama seçeneğidir. RAC uyumlu bir “cluster file system” Oracle’ın ürünleri olan Linux için kullanılabilen “OCFS2”, windows için kullanılabilen “OCFS for Windows”, ya da Oracle RAC uyumlu üçüncü parti cluster file system’ler. RAC uyumlu “network file system”ler (NFS) Oracle RAC Ağ (Network) Yapısı Oracle RAC çalıştıracak sunucular üzerinde aşağıdaki IP adreslerinin, kurulumdan önce tanımlanması gerekir. Public IP address (Açık IP adresi) Sunucuya ağ üzerinden işletim sistemi seviyesinde erişim için kullanılır. Sunucuya yönetimsel amaçlı erişim için bu IP adresi kullanılır. Virtual IP address (Sanal IP adresi) Bu IP adresi otomatik yük devretme (failover) amaçlı kullanılır. Eğer sunuculardan biri erişilmez olursa, bu sunucunun VIP adresi başka bir sunucu üzerine taşınır. Bu durumda VIP adresi TCP bağlantıları kabul eder ancak direk Oracle veritabanına bağlantıları kabul etmez. Private IP address (Özel IP adresi) Sadece cluster içindeki sunucuların birbirleri ile iletişimi amacıyla kullanılan ip adresleridir. Bu IP adreslerinin oluşturduğu ağ Interconnect (arabğlantı) Ağı olarak 3 TROUG [ Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi ] ORACLE RAC (Real Application Cluster) bilinir. Interconnect ağı cluster’daki tüm sunucuları birbirine bağlayan özel bir ağdır. Linux ve UNIX sistemlerde Oracle Clusterware, interconnect için UDP (User Datagram Protocol) ya da RDS (Reliable Data Socket) kullanacak sekilde yapılandırılabilir. Windows cluster’lar TCP (Transmission Control Protocol) kullanırlar. Oracle Clusterware interconnect ağında crossover kabloların kullanılması desteklenmez. SCAN - Single Client Access Name (Tek İstemci Erişim İsmi) 11gR2 versiyonu ile birlikte, her cluster icin bir SCAN ismi yaratmanız gerekmektedir. SCAN, DNS (Domain Name Server) ya da GNS (Grid Naming Service) üzerinde tanımlanan ve round robin ile üç ip adresine eşlenen bir ağ ismi olacaktır. Oracle RAC veritabanına tüm erişimlerin SCAN kullanılarak gerçekleştirilmesi tavsiye edilmektedir. Gelen bağlantı istekleri SCAN listener’lar üzerinden karşılanacak ve aktif instance’lara VIP’ler kullanılarak dağıtılacaktır. SCAN kullanıldığında, RAC konfigürasyonunda değişiklikler olsa da (sunucu ekleme, çıkarma gibi) istemciler bağlantı tanımlarını değiştirmek zorunda olmayacaktır. Oracle RAC Hafıza (Memory) Yapısı Oracle RAC veritabanları, kendi memory ve background process(arkaplan işlemleri)‘ne sahip iki ya da daha fazla veritabanı instance’ına sahiptir. RAC veritabanında, cluster olmayan veritabanlarındaki memory ve process yapısının yanında Oracle RAC’a özel bazı ek processler ve memory yapıları bulunmaktadır. Her instance için SGA içerisinde bir tampon önbellek (buffer cache) bulunmaktadır. Oracle RAC, Cache Fusion özelliğini kullanarak bu önbellekleri mantıksal olarak birleştirir ve instance’ların verileri tek bir önbellekteymiş gibi işlemesini sağlar. Oracle RAC memory alanındaki bu birleşmenin tutarlılığını sağlamak için iki process kullanır. Bunlar Global Cache Service (GCS) ve Global Enqueue Service (GES)’dir. GSC ve GES, her datafile’ın ve önbellekte tutulan her bloğun kaydını Global Resource Directory (GRD)’de tutar. GRD içeriği tüm aktif instance’lara dağıtılır. Bir instance veriyi önbelleğe yazdığında, cluster içindeki başka bir instance, önbellekteki bu bilgiye diskten okumaya kıyasla daha hızlı biçimde erişebilir. Cache Fusion, diskten okuma yerine, önbellekteki blokları ilgili instance’lar arasında direk olarak taşır. Oracle RAC, instance’lar arası iletişim ve blok taşıma işlemi için daha once bahsettiğimiz interconnect ağını kullanır. 4 TROUG [ Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi ] ORACLE RAC (Real Application Cluster) Oracle RAC Arkaplan İşlemleri (Background Processes) Bir önceki bölümde bahsettiğimiz GCS and GES process’leri ve GRD, birlikte çalışarak Cache Fusion yapısını oluşturur. Bunlar dışında Oracle RAC’a özel process’ler ve görevleri aşağıdaki gibidir: ACMS: (Atomic Controlfile to Memory Service) Dağıtılmıs SGA memory alanındaki bir update’in başarılı olarak tamamlanarak commit olduğunu ya da hata durumunda iptal edildiği tüm instance’lar arasında koordine ve garanti eden bir process’dir. GTX0-j: (Global Transaction Process) Oracle RAC ortamında “XA global transaction” ların desteğini sağlar. LMON: (Global Enqueue Service Monitor) Global kuyrukları (Global Enqueue) ve kaynakları tüm cluster çapında izler ve global kuyruk kurtarma (recovery) işlemini gerçekleştirir. LMD: (Global Enqueue Service Daemon) Gelen uzak kaynak taleplerini her instance için yönetir. LMS (Global Cache Service Process) Datafile’ların varolan durumlarını ve her önbelleğe alınan bloğu takip ederek Global Resource Directory (GRD) ‘ye bilgileri kaydeder. Ayrıca uzak instance’lara mesaj akışını kontrol eder ve farklı instance’ların tampon önbellekleri (buffer cache) arasında blok imajlarının transferini sağlar. Bu “Cache Fusion” özelliğinin bir parçasıdır. LCK0 (Instance Enqueue Process) Library and row cache talepleri gibi Cache-Fusion dışında kalan kaynak taleplerini yönetir. RMSn (Oracle RAC Management Processes) Yönetilebilirlik görevlerini gerçekleştirir. Görevlerinin arasında cluster’a yeni bir instance eklendiğinde Oracle RAC ile ilgili kaynakların yaratılması vardır. 5 TROUG [ Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi ] ORACLE RAC (Real Application Cluster) RSMN (Remote Slave Monitor) Bağımlı arkaplan işlemlerinin (background slave process) yaratılması ve diğer instance’lar ile iletişimini yönetir. Bu bağımlı arkaplan işlemleri, başka bir instance üzerinde çalışan bir işlem adına, bulunduğu inctance’daki görevleri gerçekleştirir. Automatic Workload Management (Otomatik İş Yükü Yönetimi) “Automatic Workload Management” kullanıcı ve uygulamalara optimum performansın sağlanması için iş yükünün dağıtımını yönetmemizi sağlar. Bu yönetim, veritabanı erişimleri için en yüksek erişilebilirliği sağlamak, hızlı hata kurtarma ve konfigürasyon üzerine iş yükünün en uygun şekilde dağıtılmasını kapsar. Automatic workload management özelliğinden ayrıca, cluster olmayan Oracle veritabanlarında veritabanı servislerini kullanarak faydalanılabilir. Bu en çok Oracle Data Guard, Oracle Streams ortamlarında tercih edilir. Automatic workload management aşağıdaki bileşenlerden oluşur: High Availability Framework (Yüksek Erişilebilirlik Yapısı) Yüksek Erişilebilirlik Yapısı, Oracle Veritabanının tüm bileşenlerini çalışır durumda tutmasını sağlar. Oracle Clusterware önemli bileşenleri izler ve durduklarında yeniden başlatır (aksi bir konfigürasyon tercih edilmezse). Oracle Clusterware ve Oracle RAC ayrıca konfigürasyon değiştiğinde istemcilere uyarı gönderilmesini sağlar. Bu sayede 6 TROUG [ Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi ] ORACLE RAC (Real Application Cluster) istemcilerin hızlı şekilde değişime cevap vermesini, dolayısıyla uygulama geliştiricilerine, kesinti ve konfigürasyon değişikliklerinin son kullanıcılar tarafından farkedilmemesi olanağını sağlar. Yüksek erişilebilirlik yapısı, ayrıca hizmet veremeyen bir instance üzerindeki tüm işlemleri diğer instance’lar üzerine taşır. Single Client Access Name - SCAN (Tek İstemci Erişim İsmi) SCAN, 11g Release 2 ile gelen bir özelliktir. Oracle RAC veritabanına istemcilerin erişmesi için kullanabileceği, DNS ya da GNS’te tanımlanan tek bir ağ ismi ve IP adresidir. SCAN sayesinde, cluster konfigürasyonunda değişiklik yapıldığında, istemci TNS tanımlarında değişiklik yapmaya gerek kalmaz. Ayrıca SCAN, istemcilerin Oracle veritabanına “Easy Connect String”(Kolay Bağlantı Metni) ile bağlanarak yük dağılımı (load balancing) ve yük devretme (failover) özelliklerini de kullanma şansı tanır. SCAN kullanımı 11g Release2 versiyonunda zorunludur. GNS kullanılıyorsa Oracle SCAN ‘i otomatik olarak yaratır. Eğer GNS kullanılmıyorsa, SCAN DNS’te tanımlanmalıdır. Load Balancing Advisory (Yük Dengeleme Öneri Sistemi) Bu özellik, veritabanının uygulamalara, güncel servis seviyeleri ve ilgili instance bilgilerini sağlama yeteneğidir. Uygulamalar bu bilgi sayesinde direk olarak en iyi servis kalitesi sunacak olan instance’a bağlantı kurabilirler. Oracle veritabanı yük dengeleme bilgisi ile çalışabilmek için Java Database Connectivity (JDBC) ve Oracle Data Provider for .NET (ODP.NET) bağlantı türleri ile entegre edilmiştir. Uygulamalar programlama seviyesinde değişikliğe ihtiyaç duymadan bu entegre bağlantı türlerini kullanabilirler. Servisler Servisler, Oracle RAC veritabanlarında tanımlanabilen varlıklardır. Servisler sayesinde veritabanı iş yüklerini gruplayabilir ve yük tanımlanan instance’lara yönlendirilebilir. Ayrıca, servisleri kullanarak, Oracle veritabanının processlere atayacağı ve process iş yükünü gözleyebileceği kaynaklar tanımlayabilirsiniz. Servislere tahsis edeceğiniz uygulamalar, yüksek erişilebilirlik ve yük dengeleme gibi yukarıda tanımladığımız Automatic Workload Management karakteristiklerine sahip olacaktır. Birçok Oracle veritabanı özelliği servisler ile entegre edilmiştir. Örneğin Resource Manager (Kaynak Yöneticisi) ile servislerin bir instance içinde kullanabileceği kaynaklar kısıtlanabilir. Ayrıca Oracle Streams, Advanced Queuing, Oracle Scheduler gibi özellikleri servislerle entegre olarak kullanabilirsiniz. Oracle RAC veritabanlarında, konfigürasyonunu yapacağınız servis performans kuralları, veritabanının o servis için her instance’a ayıracağı iş yükü miktarını belirleyecektir. RAC veritabanını yeni sunucular, uygulamalar, uygulama bileşenleri vs. ekleyerek genişlettiğinizde, ihtiyaç duyacağınız yeni servisleri de ekleyebilirsiniz. 7 TROUG [ Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi ] ORACLE RAC (Real Application Cluster) Server Pools (Sunucu Havuzları) Server Pool ile, cluster yöneticileri, Oracle Clusterware’in kaynakları nasıl kullanacağını tanımlayan kurallar yaratabilirler. Bir sunucu sadece bir server pool içinde yer alabilirken, veritabanı birden fazla server pool üzerinde çalışabilir. Servisler, server pool’daki tüm sunucularda (UNIFORM) ya da sadece bir sunucuda (SINGLETON) çalışacak şekilede yaratılabilir. Connection Load Balancing (Bağlantı Yük Dengeleme) Oracle Net Servisleri veritabanı bağlantıları için yük dengeleme sağlar. Yük dengeleme bağlantı yaratıldığı esnada gerçekleşir. Belirli bir servis için gelen bağlantılar, o servisi sunan tüm instance’lar arasında dağıtılır. Servis tanımında, bağlantıların ne şekilde dağıtılacağı belirlenebilir ancak, bununla birlikte Oracle Net Servisini de konfigüre etmeniz gerekir. Yük Dengeleme Öneri Sistemi aktif olduğunda, listener yük dengeleme için öneri sistemini kullanır. Oracle RAC Kurulumu Oracle Clusterware ve Oracle Veritabanı yazılımı “Oracle Universal Installer” grafik arayüzü ile kurulabilir. RAC veritabanını yaratmak için ise DBCA (Database Configuration Assistant) arayüzü kullanılabilir. Oracle Clusterware kurumu için http://download.oracle.com sayfası üzerinden ilgili işletim sistemi için “Grid Infrastructure“ kurulum paketi indirilebilir. “Grid Infrastructure“ kurulumu içinde Oracle Clusterware, Automated Storage Management (ASM), ve ASM Cluster File System yazılımları bulunur. Oracle Clusterware kurulumunu tamamlayıp çalışırlığını test ettikten sonra, Oracle veritabanı yazılımını kurabilirsiniz. Veritabanı yazılımı kurarken, kurulum bir cluster ortamı üzerinde çalıştığını tespit ettiğinde, otomatik olarak veritabanı RAC opsiyonu yükler. Ayrıca bu kurulum esnasında isterseniz yeni bir veritabanı yaratma seçeneğiniz de bulunmaktadır. Tercihlerinize göre bir RAC veritabanı yaratmanız için kurulum DBCA’yı çalıştıracaktır. Bu kurulumları cluster içindeki herhangi bir sunucu üzerinde yapabilirsiniz. Diğer sunucuların yazılım kurulumları da otomatik gerçekleşecektir. Varsayılan olarak, Oracle RAC kurulumu içinde bir adet servis yaratılır. Bu servis veritabanı içindir. Servisinadı DB_NAME ve DB_DOMAIN parametrelerinin değerlerine göre, db_name.db_ domain şeklinde isimlendirilir. 8 TROUG [ Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi ] ORACLE RAC (Real Application Cluster) Oracle RAC Ortamlarının Yönetilmesi Bir cluster veritabanının tek bir noktadan yönetilebilmesi için Oracle Enterprise Manager, SQL*Plus, ya da SRVCTL gibi Oracle RAC komut satırı arayüzleri kullanılabilir. Oracle Enterprise Manager Oracle Enterprise Manager cluster olmayan RAC ya da RAC veritabanlarını yönetebilir. Database Control arayüzü ile tek bir veritabanı ve Grid Control arayüzü ile birden fazla veritabanı yönetilebilir. Bu grafik arayüz üzerinden birçok yönetim görevini gerçekleştirmek mümkündür. Server Control Utility (SRVCTL) SRVCTL tek bir noktadan Oracle RAC veritabanının yönetilebileceği bir komut satırı arayüzüdür. SRVCTL ile veritabanını ve instance’ları durdurabilir, başlatabilir, instance’lar ya da servisler ekleyebilir ve çıkartabilirsiniz. SRVCTL ile ayrıca Clusterware, ASM ve 11gR2 versiyonuyle gelen “Oracle RAC One Node” da yönetilebilir. SQL*Plus SQL*Plus komutları tek bir instance için çalışır. Bu instance SQL*Plus ‘ı çalıştırdığınız lokal instance ya da Oracle Net servisleri ile bağlandığınız uzak bir instance olabilir. Cluster Verification Utility (CVU) CVU, paylaşımlı depolama birimleri, ağ konfigürasyonları, sistem gereksinimleri, Oracle Clusterware, işletim sistemi grup ve kullanıcıları gibi cluster bileşenlerinin doğrulanması için kullanılan bir komut satırı aracıdır. CVU’yu kurulum öncesi kontrol için çalıştırabildiğiniz gibi kurulum sonrası kontrolleri için de kullanabilirsiniz. Ayrıca cluster’a sunucu ekleme, sunucu çıkarma gibi yönetimsel işlemlerden sonra bu işlemlerin başarılı tamamlandığını kontrol etmek için de kullanmakta fayda vardır. Oracle Universal Installer, Oracle Clusterware ve Oracle Veritabanı kurulumu sonrasında, cluster ortamının konfigürasyonunu kontrol etmek için CVU çalıştırır. DBCA DBCA, Oracle RAC, Oracle RAC One Node ve cluster olmayan Oracle veritabanlarının yaratılması ve ilk konfigürasyonlarının yapılması için önerilen araçtır.. NETCA NETCA, Oracle RAC ortamındaki ağ konfigürasyonu için kullanılır. 9 TROUG [ Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi ] ORACLE RAC (Real Application Cluster) Oracle RAC Ortamlarının İzlenmesi Web tabanlı Oracle Enterprise Manager Database Control and Grid Control ile Oracle RAC veritabanı izlenebilir. Ayrıca global view’lar (gv$ view’ları) RAC veritabanlarında izleme için sıklıkla kullanılır. Neredeyse tüm v$ view’ı için, gv$ view’ı mevcuttur ve v$ bilgilerinin yanında ekstra bir kolonda instance numarası tutulur. catclustdb.sql scripti gv$ view’larını yaratır. Eğer veritabanı DBCA ile oluşturulursa, bu script otomatik olarak çalışır. Ayrıca, Automatic Database Diagnostic Monitor (ADDM) ve Automatic Workload Repository (AWR) raporları, veritabanı performansının gözlemlenmesi için çok faydalı bilgiler sunar. 10
Benzer belgeler
RAC Kurulumu
Graphical Internet
Text-based Internet
Development Libraries
Development Tools
Legacy Software Development
Server Configuration Tools
Administration Tools
Base
Java
Legacy Software Support
System T...
Veri Yapıları - Ders Notu - Süper
for(int i = 1; i < n; i++){
key = arr[i];
j = i - 1;
while(j >= 0 && arr[j] > key)
{ arr[j + 1] = arr[j];
j = j - 1;