Tekil Mesaj gösterimi
Alt 22 Ağustos 2013, 20:15   #1
Çevrimiçi
SeckiN
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Oracle Temel Yapısı - Sistemsel Birimleri




Arkadaşlar bu konumda Oracle ile ilgili yanlış bilinen yahut yanlış yorumlanan bir kaç temel bileşenlerden bahsedeceğim hemen başlayalım.

Oracle Temel Bileşenleri ve mimari yapıları ;


Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


2 – Hafıza Yapısı
SGA (System Global Area – Shared Global Area)

SGA bir Oracle Instance için veri ve kontrol bilgisi tutan paylaşımlı bir RAM alanıdır. Her Instance’ın bir SGA alanı vardır. Oracle, Instance başlatıldığında RAM’den SGA alanını tahsis eder, kapatıldığında serbest bırakır. SGA büyüdükçe disk I/O azalır. Bileşenleri:

Database Buffer Cache

En son ve en sık kullanılan data block’larını tutar. Disk I/O’sunu azaltma amaçlıdır. Standart dışındaki block size’lar için ayrı cache’ler tanımlanabilir.

DB_2K_CACHE_SIZE
DB_4K_CACHE_SIZE
DB_8K_CACHE_SIZE
DB_16K_CACHE_SIZE
DB_32K_CACHE_SIZE


Redo Log Buffer

Veritabanında yapılan değişikliklerin log’unu tutar. Bu bilgiler veritabanının recovery’si gerektiğinde kullanılır.

Belirli aralıklarla LGWR background process’i Redo Log Buffer’da tutulan veriyi, aktif Redo Log File’a yazar.

Shared Pool


library cache (son kullanılan sql komutları, execution planları vs.) ve dictionary cache (veritabanının metadatası, data dictionary view’ların (dba_ user_ all_ ) LRU’ları, o anki veritabanı aktivitesine ilişkin v$ viewları) burada tutulur.


Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


SGA Kapasite Planlanması

SGA komponentlerinin RAM’de tahsis ettikleri büyüklük ölçüsü granule’dür. SGA 1 GB ‘tan küçükse granule büyüklüğü 4 MB, daha büyük SGA için granule büyüklüğü 16 MB’tır. Bazı platformlarda ise istisnalar bulunmaktadır. Örneğin 32-bit Windows makinelerde 1 GB’tan büyük SGA için granule 8 MB’tır.

Manuel ya da otomatik olarak SGA komponentlerinin RAM’deki büyüklükleri belirlenebilir.

Manuel Planlamada kullanılacak Oracle Parametreleri:

SGA_MAX_SIZE
DB_CACHE_SIZE
LOG_BUFFER
SHARED_POOL_SIZE
LARGE_POOL_SIZE
JAVA_POOL_SIZE


Otomatik Planlamada kullanılacak Oracle Parametreleri: ASMM (Automatic Shared Memory Management)

SGA_TARGET:

SGA_TARGET değerindeki RAM miktarı SGA komponentleri arasında dinamik olarak paylaştırılır.
Instance kapatılırken Oracle SGA komponentlerinin büyüklüklerini parametre dosyasında (spfile) tutar. Böylelikle SGA komponentleri bir sonraki açılışta son kapanıştaki değerlere sahip olur.

V$SGAINFO view’ı kullanılarak granule değeri ve SGA komponentlerinin büyüklükleri sorgulanabilir.

V$SGA_DYNAMIC_COMPONENTS view’ı kullanılarak her SGA komponentinin büyüklükleri ve komponentler üzerindeki son resize operasyonunun zamanı ve tipi sorgulanabilir.

PGA

SQL cümlesi çalıştıran her session, PGA’da bir alana sahiptir (Private SQL Area).

Kompleks sorgular (yüksek memory kullanan sort, hash, join operasyonları) için PGA’da alan tahsis edilir. (SQL Work Area)

3 – Process Yapısı

User Process’leri ve Oracle Process’leri olmak üzere ikiye ayrılır. Oracle Process’leri de Server Process’ler ve Background Process’ler olarak ikiye ayrılır.


Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


User Process’ler:
Uygulamadan ya da Oracle yönetim aracından gelen kullanıcı processleridir.

Aşağıdaki sorgu ile user process’ler için Oracle kullanıcısı, OS kullanıcısı, Session ID, Serial Number ve System Process ID değerleri görülebilir.

SQL> select s.username, s.osuser, s.sid, s.serial#, p.spid from v$session s,v$process p where s.paddr = p.addr and s.username is not null;

Gerektiğinde bir user process’i aşağıdaki komut ile Oracle içinden kill edilebilir.

SQL> ALTER SYSTEM KILL SESSION ‘sid,serial#’;

Database bağlantısının mümkün olmadığı durumlarda user process’ler OS üzerinden server processler vasıtasıyla kill edilebilmelidir. Unix sistemlerde user ve server process’ler “ps –ef |grep LOCAL=” komutu ile görülebilir (spid değeri bu komutla görülür) ve gerektiğinde “kill -9 spid” komutu ile kill edilebilirler.

Windows’da oracle.exe isimli tek bir process vardır ve bu process’i öldürmek tüm user, server ve background thread’lerin ölmesine sebep olur ve veritabanı crash olur. Kullanıcı bağlantıları process’ler ile değil thread’ler ile yürütülür. Windows’da user process’leri server process’ler vasıtasıyla öldürmek için orakill isimli özel bir komut kullanılabilir. “orakill ” komutu ile bir user process kill edilebilir. Ancak burada spid isimli thread id’yi bulmak için extra bir program kullanmak gereklidir. (QuickSlice, veya PStat)

Oracle Process’ler

1 – Server Process’ler
Oracle, instance’a bağlanan bir user process’in isteklerine cevap vermek için bir server process yaratır. Eğer client ve veritabanı aynı makine üzerinde ise user ve server process’ler birleştirilerek tek bir process kullanılabilir. Değilse client tarafında user process ve server tarafında server process yaratılır.

2- Background Process’ler
Instance başlatıldığında db server tarafından yaratılan ve çeşitli görevleri bulunan processler’dir.

Database Writer Process (DBWn) : Dirty buffer’lardaki verileri datafile’lara yazmak ile sorumludur. Bu işlem ile buffer cache’i boşaltarak, free buffer bulunmasını sağlar. Free buffer bulunmazsa, server process’ler diskten okudukları veriyi daha sonra kullanılmak üzere buffer’e yazamazlar ve DBWn processini yer açması için uyarırlar. Checkpoint işlemi de DBWn process’ini tetikler. Genelde 1 adet yeterli olsada db_writer_processes parametresi ile sayısı arttırılabilir. Tek işlemcili makinelerde 1’den fazla olması iyi sonuçlar vermeyecektir.

Log Writer Process (LGWR) : Redo log buffer’daki veriyi Redo Log File’lara yazmakla görevlidir. Commit olduğunda, her 3 saniyede, redo log buffer’ın 1/3’ü dolduğunda ve DBWn process’i dirty buffer’ı datafile’lara yazdığında tetiklenir.

Checkpoint Process (CKPT) : Checkpoint olduğunda, tüm datafile’ların header’larını ve control file’ı update eder. Redo log switch olduğunda, LOG_CHECKPOINT_TIMEOUT, LOG_CHECKPOINT_INTERVAL süreleri dolduğunda (default 0) ve manuel (alter system checkpoint) tetiklenir.

System Monitor Process (SMON) : Gerek duyulduğunda instance başlarken recovery’den sorumludur. Ayrıca kullanılmayan temporary segment’leri temizler.

Process Monitor Process (PMON) : Bir user process göçtüğünde recovery’sinden sorumludur. Örneğin göçen process’in ID’sini aktif process’ler listesinden kaldırır, lock’ları kaldırır ve process’in kullandığı kaynakları boşa çıkarır.

Archiver Processes (ARCn) : Archivelog mod’da, Redo Log File’ları log switch operasyonuyla birlikte archive dosyası olarak kopyalar.

4 – Fiziksel Veritabanı Yapısı
Oracle’ın fiziksel veritabanı yapısı içerisinde aşağıdaki dosya tiplerinden bahsedebiliriz.

Datafile
Veritabanında, içinde veri bulunan dosyalardır. Tablo, index view gibi objeler fiziksel olarak datafile’lar içerisinde tutulur. Bir veya daha fazla datafile bir araya gelerek mantıksal tablespace kavramını oluştutur. Datafile’lar belirli bir büyüklükte yaratılırlar, dolan datafile’ların otomatik olarak büyümesi opsiyonel olarak tercih edilebilir. (Auto Extend)

Control File
Veritabanının yapısı hakkında bilgiler içeren dosyadır. Veritabanı ismi, Datafile’ların ve Redo Log dosyalarının yerleri ve isimleri, veritabanı yaratılış zamanı gibi bilgileri tutar. Veritabanı açılırken okunur. Veritabanı açıkken veritabanında yapılan yapısal değişikliklere göre control file güncellenir. Veritabanının restore ve recovery işlemlerinde de ihtiyaç duyulan bir dosyadır. Genellikle birden fazla (default 3) control file tutularak yedeklilik sağlanır.

Redo Log Dosyaları
Veritabanında yapılan tüm değişiklikleri tutar. Redo Log Grup ve Redo Log Member kavramları sayesinde performans ve yedeklilik sağlanır. Redo Log Grup bir ya da daha fazla Redo Log dosyasından (Redo Log Member) oluşur. Grup içerisindeki dosyalar birbirlerinin kopyasıdır. Bir grup içerisinde birden fazla member bulunması ile yedeklilik sağlanır. Redo Log Grup sayısının minimum değeri ise ikidir. Bir Redo Log Gruptaki dosyalar dolduğunda, LGWR process’i Log Buffer’daki verileri bir sonraki gruba yazmaya başlar. Bu işleme log switch denir. Eğer veritabanı archive log mode’da ise dolan Redo Log Group archive dosyası olarak kopyalanır.


Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


Archive Log Dosyaları
Archivelog Mod’da çalışan veritabanları switch olan redo log içeriklerini archive log dosyalarına kopyalar. Archive log dosyaları sayesinde geçmişte alınan bir backup’ı restore edip, o tarihten günümüze kadarki archive dosyalarını kullanarak veritabanının restore/recovery ‘sini yapabiliriz.

Parameter Dosyaları
Veritabanı için konfigürasyon parametrelerini tutan dosyadır. Veritabanı açılırken ilk bakılan dosyadır. Memory değerleri, control file’ların lokasyonları ve diğer konfigürasyon parametreleri, parametre dosyasından alınır. Spfile ve pfile ismi verilen iki tip parametre dosyası vardır. Pfile text formatında bir dosyadır ve dosya içi manuel olarak düzenlenebilir. Spfile ise binary formattadır ve oracle içerisinden modifiye edilebilir. Bu iki dosya türünden biri tercih edilir. Genel olarak spfile kullanımı yaygın ve güvenlidir. İhtiyaç duyulduğunda spfile’dan pfile ve pfile’dan spfile yaratılabilir.

Alert ve Trace Log Dosyaları
Server ve background process’ler hata durumunda ilişkili trace dosyalarına yazabilirler. Alert log ise veritabanındaki mesaj ve hataların kronolojik log’unu tutan bir dosyadır. Alert ve Trace Log dosyaları default olarak aşağıdaki dizin altında bulunurlar:

$ORACLE_BASE/admin/SID

Backup Dosyaları
Oracle veritabanının tamamının ya da bir kısmının yedeklenmesi ile oluşan dosyalardır.

5 – Mantıksal Veritabanı Yapısı
Tablespace

Birbirleriyle ilişkili mantıksal yapıları bir arada tutan bir yapıdır. Her tablespace mantıksal objeleri fiziksel olarak barındıran bir ya da daha fazla datafile’dan oluşur. Tablespace’in toplam boyutu, o tablespace’i oluşturan datafile’ların büyüklükleri toplamıdır.

Her veritabanında system ve sysaux tablespace’leri bulunmaktadır. Bu tablespace’ler oracle veritabanı yaratıldığında default olarak gelirler.

Bir tablespace online ya da offline durumda olabilir. Bir tablespace offline duruma getirilerek buradaki veriye kullanıcı erişimi kısıtlanırken veritabanının kalan bölümündeki verilere ulaşım devam eder. Bu şekilde bazı yönetimsel işlemler gerçekleştirilebilir.

Data Block
Diskteki belirli bayt büyüklükteki alandır. Değeri DB_BLOCK_SIZE parametresi ile belirlenir. Veritabanı içinde farklı data block büyüklükleri de tanımlanabilir. Oracle’da veriler en alt seviyede data block’lar içerisindedir.

Extent
Belirli sayıdaki ardışıl data block’lardan oluşan mantıksal yapıdır.

Segment
Extent’in üzerindeki mantıksal veritabanı depolama seviyesi segment’tir. Eğer bir segment’teki extent’ler tamamen doluysa, Oracle bu segment’e yeni extent tahsis eder. Extent’ler gerektiğinde tahsis edildikleri için disk üzerinde ardışıl durumda olmayabilirler.

Alıntı

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet