RAC(Real Application Cluster) ARCHITECTURE(MİMARİSİ) uygulama
Oracle'ın Yüksek Kullanılabilirliği(High Availability/HA) Çözüm Yığını
Paylaşılan Depolama Seçenekleri
- NFS Monte Depolama (Netapp)
- SCSI Paylaşılan depolama; OCFS, OFS, Raw Cihazlar ile
- Yapı Mimarisi ile Fiber Kanal depolama
11i ADIM-1
-
Tüm düğümlere RED HAT 2.1 yüklemek
-
11i Apps Tier tek bir düğüm olarak yüklemek
-
Paylaşılan Depolama Eklemek ve HBA için Sürücüler Yüklemek
11i ADIM -2 (OS Yamalar kurulum)
- rpm -Uv tar-1.13.25-9.i386.rpm
- Bu Tar(Technical Assistance Request )'ın güncel versiyonuna ulaşımı sağlar
- OCFS üzerinde çalışan bir veritabanından tar(Technical Assistance Request) dosyalarına bir kullanıcı sağlar
- Örnekler,
- tar --o_direct -cvf /tmp/backup.tar
11i ADIM -2 ( OS Yamalar Kurulum)
- rpm -Uv fileutils-4.1-4.2.i386.rpm
- Bu dd(default date) ve Cp(command with web logic) nin güncelleştirlmiş Sürümünü Sağlar
- OCFS üzerinde çalışan bir veritabanı dosyaları kopyalamak için bir kullanıcı sağlar
- examples :
- cp --o_direct /ocfs/quorum.dbf /tmp/backup/quorum.dbf
- dd o_direct=yes if=/ocfs/quorum.dbf of=/tmp/backup/quorum.dbf
11i ADIM -3 RPM(Remote Preemptive Monitor) nin Oracle Sağlayıcılıarını Yüklemek
- ocfs-support-1.0.9-11.i686.rpm
- ocfs-tools-1.0.9-11.i686.rpm
- j2sdk-1_3_1_09-linux-i586.rpm.bin
- unzip-5.50-30.i386.rpm
- zip-2.3-10.i386.rpm
- wu-ftpd-2.6.1-21.i386.rpm
- hangcheck-timer-2.4.9-e.10-0.4.0-2.i686.rpm
- hangcheck-timer-2.4.9-e.10-enterprise-0.4.0-2.i686.rpm
11i ADIM -4 Bağlantı ( interconnect)
- ifconfig eth0:0 192.168.2.100
- route add -host 192.168.2.100 dev eth0:0
- Do this on each node
- Create watchdog file (oracle installer checks for this to install cluster option) # touch /dev/watchdog
- Setup hangcheck-timer module -# vi /etc/modules.conf -- options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180 --# modprobe hangcheck-timer
11i ADIM -5 OCFS.conf – 5
- # ocfstool ( from x windows)
- # ocfs config
- # Ensure this file exists in /etc
- # node_name = linux3.home.com
node_number =
ip_address = 192.168.1.100
ip_port = 7000
comm_voting = 1
guid = 9D3B77AF2FF26E92E25D00E04CA44B58
11i ADIM -6 OCFS Kurulumu
- mkfs.ocfs -F -b 128 -L /s01 -m /s01 -u 500 -g 500 0755 /dev/sda1
- srvconfig_loc=/s01/oragsd-config ( touch this file)
11i ADIM -7 OCM
- $ ls
- If cmcfg.ora exists:
- $ cp cmcfg.ora cmcfg.ora.original
- If cmcfg.ora does not exist:
- $ cp cmcfg.ora.tmp cmcfg.ora
- $ echo HostName=dc1node3inter >> cmcfg.ora
- $ vi cmcfg.ora
- [comment out WatchdogSafetyMargin and WatchdogTimerMargin]
- PrivateNodeNames=linux22 linux33
- PublicNodeNames=linux2 linux3
- MissCount=210
- KernelModuleName=hangcheck-timer
- CmDiskFile=/u02/oracm-qourum
- $ vi ocmargs.ora
- [comment out first line, which contains the word “watchdogd”]
- $ cd ../bin
- $ cp ocmstart.sh ocmstart.sh.original
- $ vi ocmstart.sh
- [remove words “watchdog and” from line containing “Sample startup script...”]
- [remove every line containing “watchdogd”, uppercase or lowercase. If it’s in a if/then/fi then remove the whole if/then/fi.]
- $ su – root
- export ORACLE_HOME=/d02/oracle/proddb/9.2.0
- /d02/oracle/proddb/9.2.0/oracm/bin/ocmstart.sh
- Configure and Start Cluster Manager
- $ cd $HOME/product/9.2/oracm/admin
11i ADIM -8 ( cp/dd - DB files to shared storage )
- cp --o_direct /d03/oracle/proddata/* /s01/oracle/proddata/
- Kontrol Dosyaları Yenileme
11i ADIM -8 – init.ora / spfile
- Diğer örnekler için UNDO TBS Yaratmak
- Örnek-2 için örnekleme 1 ve yerine versa(Menagement Systems)'den thread aktif ve pasifleştirme
11i ADIM - 9 – Örnek 1
- # RAC-specific Parameters
- #
- #########
- cluster_database = true
- cluster_database_instances=2
- thread = 1
- instance_number = 1
- instance_name = PRODi1
- service_names = PROD
- local_listener = PRODi1
- remote_listener = PRODi2
11i ADIM -10 – Örnek 2
- cluster_database = true
- cluster_database_instances=2
- thread = 2
- instance_number = 2
- instance_name = PRODi2
- service_names = PROD
- local_listener = PRODi2
- remote_listener = PRODi1
11i Apps tier – 806/iAS tnsnames.ora
- PROD = (DESCRIPTION=
- (ADDRESS_LIST =
- (ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521))
- (ADDRESS=(PROTOCOL=tcp)(HOST=linux2)(PORT=1521))
- )
- (CONNECT_DATA=(SERVICE_NAME=PROD)(SERVER=DEDICATED))
- )
- PRODi2 = (DESCRIPTION=
- (ADDRESS=(PROTOCOL=tcp)(HOST=linux2)(PORT=1521))
- (CONNECT_DATA=(INSTANCE_NAME=PRODi2)(SERVICE_NAME=PROD))
- )
- PRODi1 = (DESCRIPTION=
- (ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521))
- (CONNECT_DATA=(INSTANCE_NAME=PRODi1)(SERVICE_NAME=PROD))
- )
Failover için DBC Dosya Düzeltme
- APPS_JDBC_DRIVER_TYPE=THIN
- FND_MAX_JDBC_CONNECTIONS=100
- # Setup at Apps Tier
- APPS_JDBC_URL=jdbc:oracle:thin:@(DESCRIPTION=
- (ADDRESS_LIST=(LOAD_BALANCE=ON)
- (ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521))
- (ADDRESS=(PROTOCOL=TCP)(HOST=linux2)(PORT=1521)))
- (CONNECT_DATA=(SERVICE_NAME=prod)))
Failove ile ne Yapılabilir ve Ne Yapılamaz
- SQL* PLUS TAF kullanarak Bağlanabilir
- JDBC Failover ile Bağlanacak
- Formların Çalışma Zamanı Bağlantılandırması Yapılamaz , Kullanıcılar Bağlantı Koparabilir
Soru ve Görüşleriniz için:
Bu e-Posta adresi istek dışı postalardan korunmaktadır, görüntülüyebilmek için JavaScript etkinleştirilmelidir
Saygılarımla...
Datafile ve Tablespace Kavramları
DATAFILE VE TABLESPACE KAVRAMLARI
Oracle Veritabani üzerinde datalarin yani verilerin saklandigi yer fiziksel olarak DataFile mantiksal olarak ise TableSpace olarak ifade edilmektedir.
Bir veritabaninda verilerin nasil saklandiginin hiyerarsik yapisi asagidaki sekildeki gibidir :
Tablespace
Tablespace ler üzerinde ki islemler Tablespace online iken yapilmaktadir.
System Table space kesinlikle undo yada temp tablespace olarak kullanilmamalidir,
Tablespaceler read only yada normal mod arasinda çevrim yapilabilirler.
Not : Tablespace bir veya fazla datafile içierebilir fakat bir datafile ancak bir tablespace’e tahsis edilir.
DataFile
Bir DataFile yalnizca bir tablespace e verilebilir.
Büyüklügü ve optimizasyonu degistirilebilir
Segment
Bir Datafile bir yada birden fazla segment içerebilir,
Bir segment birden fazla Tablespace e dagilabilir
Extends
Bir Segment bir veya daha fazla extend ten olusur,
Bir segment yaratildiginda tek extend vardir ama daha sonra arttirilabilir,
DataBlocks
Extandler içinde bulunan en küçük birimdir,
Boyutu DB_BLOCK_SIZE ile Database yaratilirken belirlenir ve daha sonra degistirilemez.
Database bloklarinin büyüklügü isletim sistemi ile dogru orantilidir,
Oracle’ da bloklarin baslangiç boyutu DB_BLOCK_SIZE ile belirlenir. Bunun yanisira Oracle, standart olmayan bes farkli blok boyutu tanimlama olanagi sunar. Gereksiz I/O islemlerine engel olmak için veri blok uzunligu max sinirlar içinde isletim sisteminin blok uzunlugunun bir kaç kati olmalidir. Data bloklar, Oracle veritabaninin en küçük depolama birimidir.
Oracle Mantıksal Yapısı
LOGICAL YAPI
Sizlere basit olarak bir oracle veritabanındaki mantıksal yapıyı kısaca özetlemek istedim :
Oracle’ın logical yapısı hiyerarşik olarak Tablespace,bunun altında Segments bunun altında Extents bunun altında Bloklardan oluşur.
Veri blokları, extentler ve segmentlerden oluşan mantıksal saklama yapıları sayesinde Oracle'ın disk alanı üzerinde ayrıntılı bir kontrolü vardır.
Oracle Veri Blokları :
Oracle database üzerinde verinin saklandığı en küçük yapı birimidir. Fiziksel anlamda belirli sayıda byte ile temsil edilir. Standard blok büyüklüğü DB_BLOCK_SIZE başlangıç parametresiyle belirlenir.
Extentler : Mantıksal veritabanında blokların bir üst seviyesidir. Extendler belli sayılardaki ardışık bloklardan oluşur. Tek seferde alınır ve belirli bir tipteki veriyi tutar.
Segmentler : Extend’in bir üst seviyesi segmentlerdir. Bu depolama seviyesi belli bir mantıksal yapı için tahsis edilmiş extend kümesini ifade eder. Eğer bir segment içindeki extendlerin tümü dolarsa, Oracle dinamik olarak yeni yer tahsis eder. Extendler, ihtiyaç halinde tahsis edildiklerinden dolayı ardışık olma gibi bir zorunlulukları yoktur. Segment çeşitleri :
Veri Segmenti : Kümelenmemiş her tablo bir segmente sahiptir. Tablonun bütün verileri veri segmentinin extentlerinde saklanır.
Bölümlenmiş tablolarda, her parça için bir veri segmenti bulunur ve Her küme için bir veri segmenti vardır. Kümedeki her tablonun verisi kümeye ait olan veri segmentinde tutulur.
İndeks Segmenti : Her indeksin kendi verisinin tutulduğu bir indeks segment vardır. Bölümlenmiş bir indeksin her bölümüne ait bir indeks segment vardır.
Temporary segment : Bu alanlar herhangi bir SQL sorgusunun işinin tamamlanması için gerekli olan alan için Oracle tarafından oluşturulur. SQL cümlesinin işi bittiğinde temporary segment tekrar kullanım için sisteme iade edilir.
Rollback Segment : "Automatic Undo Management" modundayken, veritabanı sunucusu tablespaceleri kullanarak undo alanını yönetir. "Manual Undo Management" modundayken, veritabanı yöneticisi tarafından undo bilgisini geçici olarak tutması için rollback segmentler yaratılır. Rollback segmentlerdeki bilgi veritabanının kurtarılması sırasında kullanılır.
Oracle Sga Yapısı
Fiziksel Yapı
Control file,data file ve redologlar database’in fiziksel yapısını oluşturmaktadırlar.
Memory Yapısı
SGA ve PGA dediğimiz yani sistem tarafı ve kullancı tarafını oluşturan memory yapısıdır.
SGA instance başlatıldığında oluşmaktadır.PGA ise Kullancı tarafından gelen User Prosesine karşılık oluşturlan Server Prosesi zamanında oluşma
SGA(System Global Area)
Bir tane Oracle Instance’ın ihtiyacı olan control ve veri bilgilerinin tutulduğu bellek alanıdır.Paylaşıma açıktır. Oracle Instance açıldığında açılır ve Instance kapatıldığında sisteme geri verilir. Her Instance’ın bir SGA sı vardır. Sisteme bağlanan kullanıcılar bu SGA’daki bilgiyi paylaşırlar. Optimum performans için SGA’nın oldukça büyük olması gerekir, tabi ana bellek boyutunu aşmamak kaydıyla. Böylelikle bellekte daha fazla veri tutulur, bud a disk okuma yazmasını azaltır. SGA’da ki bilgiler, veri tiplerine gore categorize edilmiş bir şekilde farklı altbellek yapılarında saklanır.
SGA’nın büyüklüğü SGA_MAX_SIZE ile belirlenebilir.
SQL > SHOW SGA;
Total System Global Area 36437964 bytes
Fixed Size 6543794 bytes
Variable Size 19521536 bytes
Database Buffers 16777216 bytes
Redo Buffers 73728 bytes
SGA’nın yapısını ise DB_CACHE_SIZE,LOG_BUFFER,SHARED_POOL_SIZE ve LARGE_POOL_SIZE oluşturmaktadır.
SHARED POOL
Shared Pool, Oracle’da SQL sorgularının ve PLSQL lerin çalıştırılmak için kullandığı bilgileri içermenin yanısıra sorguların ayrıştırılması ve sorgunun çalışması için ihtiyacı olan çalışma planının hazırlandığı yerdir. İşletilen sorgular bu alanda saklanır. Ayni sorgu tekrardan çalıştırılmak istendiğinde bu çalistirma plani dogrudan uygulanabilir. Büyüklüğü SHARED_POOL_SIZE parametresi ile belirlenir.Varsayılan olarak 32 bit sistemler için 8MB, 64 bit sistemler için 64MB’dır.
Paylasilmis SQL Alani, SGA içindeki Paylasilmis Havuz ‘un bir parçasidir.
Paylasilmis Havuz;
SQL ve PL/SQL deyimlerini
SQL ve PL/SQL deyimlerinin ayristirilmis hallerini
SQL ve PL/SQL deyimleri için çalistirma planlarini
veri sözlügü (data dictionary) önbellegini (cache) içerir.
SQL > ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
Burada dikkat edilmesi gerek ayarlanan bu büyüklük SGA nın büyüklüğünü etkileyeceği için asla toplam SGA değeri SGA_MAX_SIZE’ı aşmamalıdır.
LİBRARY CACHE
Library Cache Shared Pool’un bir parçasıdır.Sık kullanılan SQL ve PL/SQL cümlelerinin durduğu yerdir.
Yönetimi LRU(Last Recently Used) algoritmasına göre olmaktadır.
Shared SQL ve PL / SQL ifadelerini saklamaktadır.
DATA DİCTİONARY CACHE
“Data Dictionary” bilgileri Oracle tarafından çok sık kullanıldığından hafızada tutulması mantıklıdır.İşte bu bilgilerin hafıza da tutulduğu yere “dictionary cache” denir.Bu bilgiler bir de “library cache”’te de tutulmaktadır.Her iki alana tüm kullanıcı işlemleri ulaşmaktadır.
Hem Library Cache hemde Dictionary Cache’in büyüklüğünü değiştirmek için SHARED_POOL_SIZE ile oynanmalıdır.
DATABASE BUFFER CACHE
Burada Datafile’dan okunan veriler tutulur. Kendi içerisinde mantıksal olarak ayrılmıştır. Database’ e bağlanıp işlem yapan kullanıcılar bu alanı kullanırlar. Burada gerçekleşen işlemlerin belirli bir sistematikte olması gerekmektedir. Buffer Cache’ te bunu sağlamak için Write List ve Last Recently Used(LRU) listeleri bulunur.
Write List : Üzerinde değişilik yapılmış fakat henüz Datafile’a yazılmamış tampon alanlar(dirty buffers)ın tutulduğu listedir.
LRU List : Free Buffers(Boş tampon alanları) ve henüz write list’ e gönderilmemiş dirty buffer bilgilerini tutar. Ayrıca o an işlem gören ‘pinned buffer’ alanlarını tutar.
“Write List” , “dirty buffer” olarak adlandırılan üzerinde değişiklik yapılmış ama diske(datafile’a) henüz yazılmamış tampon alanları tutar.LRU listesi ise boş tampon alanları (free buffers) ,henüz “write list”’e gönderilmemiş “dirty buffer” alan bilgilerini ve “pinned buffer” denilen o an işlem gören alanları tutar.
Herhangi bir database kullanıcısının, veriyi okuma isteği olduğunda cache’e bakılır. Eğer veri buradaysa hafızadan direk okunur(cache hit). Eğer yoksa, veri ilgili data bloktan okunur(cache miss). Fakat bunun için evvela hafızada boş alan bulunması lazımdır. Bunun kontrolü için LRU list e bakılır.Arama yapılırken listedeki dirty buffer alanları write list’e alınır. Boş alan bulunduğu taktirde bu alan LRU list’in sonuna atılarak veri bu alanda okunur. Arama işlemi boş alanan bulunana kadar veya tanımlanan bir eşik değere ulaşıncaya kadar surer. Eşik değere ulaşıldığında eğer hala boş alan bulunamamışsa arama sonlandırılır ve DBW0, dirty buffer alanlarının diske yazılması için arka plan prosesine (background prosess) sinyal gönderir.
DB_BLOCK_SIZE parametresi ile blokların büyüklüğü hakkında bilgi edinebiliriz.
Bu parametre sonradan değişmemekte database oluşturulurken ayarlanmaktadır.
Bunun dışında,
DB_CACHE_SIZE = Default olarak cache’in buffer size’ını vermektedir.Sıfır verilmemelidir.
DB_KEEP_CACHE_SIZE = blokların default olarak ne kadar tutulacağını verir.
DB_RECYCLE_CACHE_SIZE = Kullanılamayn blokların boyutunu tutmaktadır.
parametreleri mevcuttur.
SQL > ALTER SYSTEM SET DB_CACHE_SIZE = 96M; ile büyüklük değiştirilebilmektedir.
REDOLOG BUFFER CACHE
Dml ve ddl sorgularından sonra oluşan değişikliklerin hafızada saklandığı alandır. İstenildiğinde bu değişikliklerin geri alınması ve ihtiyaç duyuldugu takdirde recovery işlemleri için kullanılır. Sıralı ve doldugunda başa dönecek şekilde bir yapısı vardir.
Bu alanda tutulan bilgiler “Log Writer Process(LGWR)” ile redo log dosyalarına yazılır.LOG_BUFFER parametresi redo log alanının büyüklüğünü belirler.Büyük değer alması I/O mailiyeti düşürür.
LARGE POOL
Veri yedekleme ve kurtarma, sunucu okuma yazma işlemleri, oturum belleği ve birden fazla veritabanı üzerinde çalışan hareketler(Oracle XA) gibi işlerde kullanmak üzere tahsis edilen opsiyonel bir alandır.
Fakat en önemli görevi database üzerinde yedekleme ve kurtarma operasyonlarına zemin oluşturmasıdır. Boyutu LARGE_POOL_SIZE parametresi ile belirlenir.
SQL > ALTER SYSTEM SET LARGE_POOL_SIZE = 64M;
Oracle üzerinde backup ve recovery operasyonlarında aktif olarak yer alan RMAN(Recovery Manager) Large Pool parametresi ile beraber BACKUP_DISK_IO= n ve BACKUP_TAPE_IO_SLAVE = TRUE parametreleri set edilebilir.
JAVA POOL
Java kodlarının veritabanı içerisinde anlamlandırılması için kullanılmaktadır.PL/SQL kodlarına benzer biçimde database içinde saklanmaktadır.Boyutu JAVA_POOL_SIZE ile belirlenmektedir.
Oracle Pga Yapısı
PGA(Program Global Area)
PGA, sunucu işlemleri için gereken veri ve kontrol bilgilerini tutmak için tahsis edilen tampon bellektir. Oracle tarafından bir sunucu işlemi başladığında otomatik olarak tahsis edilir. İçinde tutulacak bilgi Oracle konfigürasyonuna bağlıdır.
Prosesler, PGA tarafında istekte bulunan user proses, buna karşın Server tarafındaki server proses ve Instance başladığı zamanki background proses olmak üzere birbirine paraleldir.
USER PROSESS
User Proses Oracle Server ile iletişim kuran bir program,Oracle Client yada SQL PLUS command’ı olabilir.
****
User Prosess’i Server Prosess’i ile iletişim kurduğunda bir session açılır ve işlemler bunun üzerinden yürür.
SERVER PROSESS
User Proses’ine karşılık gelen prosestir.Gelen istekle beraber Oracle Server tarafı ile bağlantı kurar.
İleride göreceğimiz gibi Dedicated yada Shared olabilmektedir.

BACKGROUND PROSESS
Bu prosesler fiziksel yapı ve memorysel yapı arasında çalışırlar ve çeşitli işler yaparlar.Bunların bikaç tanesine bakacak olursak.
DBWR(Database Writer)
Bu prosessin görevi kullanıcı işlemleri için boş bellek alanı ihtiyacını karşılamak üzere Database Buffer Cache’i yönetmektir. Değişikliğe uğramış tüm verileri veri bloklarına yazar. Yakın zamanda kullanılmış olan veri bloklarının bellekte tutulması için LRU algoritmasını kullanır. I/O işlemlerini iyileştirme amaçlı bazı yazma işlemlerini erteleyebilir.

Normal 0 false false false