Veri Tabanı Yönetim Sistemleri 2
Ders 1
Oracle Veritabanı Mimarisi
Yrd. Doç. Dr. Altan MESUT
Trakya Üniversitesi
Bilgisayar Mühendisliği Bölümü
Oracle
• Oracle, büyük miktarda veriyi çok kullanıcılı ortamda, birçok
kullanıcının aynı anda aynı veriye erişmesine izin verecek şekilde
idare edebilen bir ilişkisel veri tabanı yönetim sistemidir (İVTYSRDBMS).
• Yüksek performansı, yetkisiz kullanıcıların girişlerini engellemesi
ve beklenmedik durumlarda oluşabilecek veri kaybını
engelleyecek çözümler sunması en önemli özelliklerinden
bazılarıdır.
• Farklı işletim sistemleri (Unix, Linux, OsX, …) üzerinde
çalışabilmesi sayesinde, bu işletim sistemlerinin yüklü olduğu
büyük sunucu sistemlerinde en çok tercih edilen VYTS'lerden
biridir. MS SQL Server sadece Windows ortamında çalışması
nedeniyle büyük sistemlerde kullanım oranı azdır.
Oracle Veritabanı Mimarisi: Genel Bakış
Instance (RAM'de)
SMON
PMON
SGA
Sunucu
işlemi
Shared pool
Database
buffer
cache
Redo log
buffer
DBWn
CKPT
PGA
Server
process
Others
Library
cache
Data dictionary
cache
LGWR
ARCn
Kullanıcı
işlemi
User
process
Veri
Dosyaları
Kontrol
Dosyaları
Veritabanı (diskte)
Online redo
log
dosyaları
Arşivlenmiş
log dosyaları
Veritabanına Bağlanma
• Bağlantı (Connection): Bir veritabanı anı (instance) ile bir kullanıcı
işlemi arasındaki iletişimdir.
• Oturum (Session): Bir kullanıcının bir instance’a bir kullanıcı işlemi
üzerinden kurduğu özel bir bağlantıdır.
SQL> Select …
KULLANICI
Kullanıcı
işlemi
Bağlantı
Oturum
Veritabanına Bağlanma
• Kullanıcı SQL*Plus gibi bir araç veya veritabanını kullanan bir
uygulama çalıştırdığında, istemci makinede bir user process
başlatılır. Kullanıcı, adını, şifresini ve ulaşmak istediği
veritabanının ismini girerek Oracle Sunucusuna bağlandığı
anda sunucu makinede bir server process yaratılır.
– Eğer Dedicated Server değil de Shared Server yapısı kullanılıyorsa
her user process için ayrı bir server process oluşturulmaz. Her
oturum dispatcher tarafından paylaşımlı server process havuzuna
yönlendirilerek, user process’in faaliyette olan bir server process ile
ilişkilendirilmesi sağlanır.
• User process isteklerini server process’e iletir. Server process
istekleri yerine getirir, ve sonucunu user process’e verir.
Kullanıcı bağlantıyı kestiğinde server ve user process’ler
bitirilir.
Oracle Veritabanı Sunucu Yapıları
Instance
Hafıza Yapıları
User
process
SGA
Database
buffer
cache
Server
process
İşlemler
(Processes)
DBWn
CKPT
Shared pool
Library
cache
Redo log
buffer
LGWR
SMON
Data dict.
cache
PMON
ARCn
Others
Veritabanı
Saklama Yapıları
Veri
Dosyaları
Kontrol
Dosyaları
Online redo
log
Dosyaları
Oracle Hafıza Mimarisi
Server
process 1
Server
process 2
PGA
Background
process
PGA
SGA
Shared
SQL area
Library
cache
Other
Shared pool
Redo log
buffer
Database buffer
cache
Java
pool
Data Dictionary
cache
Streams
pool
I/O Buffer
Free
memory
Response
queue
Request
queue
Large pool
PGA
System Global Area (SGA)
• Instance, SGA adında tüm sunucu ve arkaplan işlemleri tarafından
paylaşılan bir hafıza yapısına sahiptir. SGA’nın içindeki bileşenler:
Database Buffer Cache: Veri dosyalarından elde edilen veri bloklarını saklar.
Değişikliğe uğrayan bloklar belirli zaman aralınlarında veri dosyalarına aktarılır.
Redo Log Buffer: Instance’ın veritabanında yaptığı değişikliklerin kaydedildiği
bölgedir. Gerektiğinde recovery işleminde kullanılmak üzere bu bilgiler belirli
zaman aralıklarında redo log dosyalarına aktarılır.
Shared Pool: En son çalıştırılan sorgu ve veri kütüphanesinden en son kullanılan
veri gibi bilgileri saklar.
Large Pool: Backup/Recovery işlemleri ve I/O sunucu işlemleri gibi bazı büyük
işlemler için büyük miktarda hafıza tahsisi gerektiğinde kullanılan bölgedir.
Java Pool: Java Sanal Makinesi (JVM) tarafından kullanılan tüm oturum-bazlı Java
kodu ve verisini saklar.
Streams Pool: Yakalama (capture) ve uygulama (apply) işlemleri için gerekli olan
bilgileri saklamak için Oracle Stream’leri tarafından kullanılır.
Process Global Area (PGA)
• PGA, bir sunucu işlemi veya bir arkaplan işlemi için veri ve
kontrol bilgilerini içeren hafıza bölgesidir.
• Birçok process tarafından paylaşılabilen SGA'nın tersine, PGA
sadece kendisini başlatan process tarafından kullanılabilir.
• Hafıza yapılarının büyüklüğünü belirlemek için çeşitli
parametreler kullanılabilir. Örneğin MEMORY_TARGET
parametresi ile Oracle'ın sistem üzerinde kullanabileceği
RAM alanı belirlenebilir. Bu sayede belirlenen büyüklüğü
aşmayacak şekilde SGA ve PGA bileşenlerinin boyutları
Oracle veritabanı tarafından otomatik olarak değiştirilir.
İşlem (Process) Mimarisi
• Kullanıcı işlemi
– Bir kullanıcı veya işlem Oracle veritabanına bağlandığı anda
başlatılır
• Veritabanı işlemleri
– Sunucu işlemi: Oracle instance'ına bağlanır ve bir kullanıcı oturum
açtığında başlatılır
– Arkaplan işlemleri: Bir Oracle instance'ı başlatıldığında başlatılırlar
Instance
SGA
Database
buffer
cache
PGA
User
process
Server
process
Kullanıcı
işlemi
Sunucu
işlemi
Shared pool
Library
cache
Redo log
buffer
Data dictionary
cache
Arkaplan İşlemleri
DBWn
CKPT
LGWR
SMON
PMON
ARCn
Others
Veritabanı İşlemleri: Sunucu ve Arkaplan
Server
Server
Server
Server
Server
Sunucu İşlemleri
Server Processes
SGA
Database
buffer
cache
CKPT
RECO
Shared pool
Redo log
buffer
Library
cache
SGA
Data dict.
cache
PMON
SMON
DBWn
LGWR
ARCn
Oracle sunucusunda disk girdi/çıktı işlemleri gibi arkaplan
işlemlerini gerçekleştiren background process’ler
Others
Arkaplan İşlemleri
(Background Processes)
• Arkaplan işlemleri kullanıcı işlemi ile doğrudan ilişkili değildirler.
Belirli zaman aralıklarında veya belirli koşulların sağlanması
durumunda çalışırlar.
Database Writer (DBWn): Database buffer cache’te değişen veri
bloklarını veri dosyalarına yazar.
Log Writer (LGWR): Veritabanında değişikliğe neden olan DML
komutlarını redo log buffer’dan redo log dosyalarına yazar.
System Monitor (SMON): Veritabanı açıldığında recovery gerekip
gerekmediğini araştırır. Veritabanının tutarlılığını kontrol eder.
Process Monitor (PMON): Process’lerden biri sonlanmazsa bu
process’in kullandığı tüm kaynakları temizler.
Checkpoint process (CKPT): Buffer cache’teki değişiklikler veritabanına
kaydedildiğinde, veritabanının durum bilgisini günceller.
Database Writer (DBWn)
Instance
SGA
Shared pool
Database
buffer
cache
DBWn
Veri
Dosyaları
Kontrol
dosyaları
Redo log
dosyaları
Log Writer (LGWR)
Instance
SGA
Shared pool
Redo log
buffer
LGWR
Veri
Dosyaları
Kontrol
dosyaları
Redo log
dosyaları
Bir Sorgunun İşlenmesi
SELECT *
FROM emp
ORDER BY ename;
Statement
Handle
Handle
User
process
Server
process
Results
OK
OK
Parse
Execute
Fetch
Bir DML İfadesinin İşlenmesi
UPDATE emp
SET sal=sal*1.1
WHERE empno=7369
Server
process
3
Instance
SGA
4
5
Shared pool
Library
cache
Database
buffer
cache
Redo log
buffer
Data
dictionary
cache
2
1
Veri
dosyaları
Kontrol
dosyaları
Veritabanı
Redo log
dosyaları
COMMIT İşlemi
1
Instance
SGA
Server
process
4
Database
buffer
cache
Shared pool
Redo log
buffer
LGWR
3
2
User
process
Veri
dosyaları
Kontrol
dosyaları
Veritabanı
Redo log
dosyaları
Veritabanı Saklama Mimarisi
Kontrol dosyaları
Veri dosyaları
Online redo log dosyaları
Parametre dosyası
Yedek dosyaları
Arşivlenmiş redo
log dosyaları
Şifre dosyası
Alert log ve trace
dosyaları
Parametre Dosyası
db_name = VT1
control_files = (c:\data\control01.con, d:\data\control02.con)
db_block_size = 8192
db_block_buffers = 200
# 550 (ORTA), 3200 (BÜYÜK)
db_files = 100
# 400 (ORTA), 1000 (BÜYÜK)
shared_pool_size = 3000000
# 5000000 (ORTA), 9000000 (BÜYÜK)
log_buffer = 8192
# 32768 (ORTA), 163840 (BÜYÜK)
processes = 50
# 100 (ORTA), 200 (BÜYÜK)
db_file_multiblock_read_count = 8
# 16 (ORTA),32 (BÜYÜK)
log_checkpoint_interval = 10000
# 10 saniyede 1 checkpoint
max_dump_file_size = 10240
# en fazla 5MB olabilir
background_dump_dest = (d:\oracle\admin\ORCL\backdump)
user_dump_dest = (d:\oracle\admin\ORCL\userdump)
# audit_trail = true
# timed_statistics = true
...
Trace dosyaları ve Alert log dosyası
• Oracle instance'ı çalışırken bir hata oluşursa, mesajlar ALERT
dosyasına kronolojik olarak yazılır. Veritabanı açılırken, eğer ALERT
dosyası yoksa Oracle bir tane yaratır.
• Eğer hata bir arkaplan işlemi tarafından tespit edildiyse, bilgi bir iz
(trace) dosyasına yazılır.
• İz dosyaları aynı zamanda kullanıcının isteği ile server işlemleri
tarafından da yaratılabilir. Bu dosyalara kullanıcı iz dosyaları (user
trace files) denir. Bu dosyaların konumu parametre dosyasındaki
USER_DUMP_DEST ile, alabileceği en büyük değer ise
MAX_DUMP_FILE_SIZE ile belirlenebilir.
• Aşağıdaki komut belirli bir oturum için bir işaret dosyasının
kullanılmasını sağlar.
– ALTER SESSION SET SQL_TRACE = TRUE;
Mantıksal ve Fiziksel Veritabanı Yapıları
Mantıksal
Fiziksel
Database
Schema
Tablespace
Data file
Segment
Extent
Oracle data
block
OS block
Segment, Extent ve Block
Block: Veri blokları, Oracle veritabanında verinin saklandığı en küçük yapıdır.
Oracle block’ları, işletim sistemi bloklarına eşit veya onların katları olabilir.
DB_BLOCK_SIZE parametresi ile bu büyüklük belirlenebilir.
Extent: Bir extent (uzantı), belirli sayıdaki ardışık veritabanı bloğundan oluşur,
bir seferde alınır ve belirli bir tipteki bilgiyi tutmak için kullanılır. Extent’ler sadece
bir veri dosyasında bulunabilirler.
Segment: Segment (bölüm), belirli bir mantıksal yapı için tahsis edilmiş
extentler kümesidir. Bir segmentin içindeki tüm extentler dolduğunda, Oracle
dinamik olarak yeni yer tahsis eder. Bir segment, aynı tablespace’e ait olan dosyalar
arasında bölüşülebilir. Segment tipleri; Table, Index, Temporary ve Rollback.
Segment
Extents
Data
blocks
Disk
blocks
Tablespace, Şema ve Veri Dosyası
Tablespace: Tablespace yönetimsel işleri kolaylaştırmak için bütün uygulama
nesnelerini birlikte gruplar. Kullanıcılara yer tahsis etmek, verinin ulaşılabilirliğini
kontrol etmek, veri saklanmasını farklı disklere bölerek I/O performansını arttırmak,
kısmi backup ve kısmi recovery işlemlerini gerçekleştirmek gibi kullanım alanları
vardır. Her tablespace sadece bir veritabanına ait olabilir, ve bir yada daha çok veri
dosyasından oluşur. Veritabanı çalışırken tablespace’ler offline konumuna
getirilebilir. “Oracle Storage Manager” ile tablespace yaratılabilir.
Schema (Şema): Bir veritabanı kullanıcısının sahip olduğu veritabanı
nesnelerinin (tablo, görünüm, index, sequence, saklı yordam, …) kümesidir.
Veri Dosyası: Her tablespace bir yada daha çok veri dosyası içerir. Bir veri
dosyası sadece bir tablespace’e ait olabilir. Veritabanı yöneticisi, bir veri dosyasının
büyüklüğünü, o dosyanın yaratılmasından sonra da değiştirebilir, veya tablespace
nesnesinin büyümesiyle orantılı olarak büyümesini sağlayabilir.
USERS tablespace
Data file 1
Data file 2
SYSTEM ve SYSAUX Tablespace'leri
• SYSTEM ve SYSAUX tablespace'leri her veritabanında
bulunmak zorundadır (veritabanı yaratılırken otomatik olarak
yaratılırlar).
• SYSTEM tablespace veri sözlüğü tabloları gibi temel verileri
saklar.
• Yardımcı (auxiliary) bir tablespace olan SYSAUX ise ek
veritabanı bileşenleri (Enterprise Manager Repository gibi)
içerir.
Veritabanının Yaratılması
CREATE DATABASE VT1
MAXLOGFILES 32
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXLOGHISTORY 100
LOGFILE
GROUP 1 ('c:\oradb\log1a.rdo','d:\oradb\log1b.rdo') SIZE 1 M,
GROUP 2 ('c:\oradb\log2a.rdo','d:\oradb\log2b.rdo') SIZE 1 M
DATAFILE
'c:\oradb\system01.dbf' size 32M autoextend on
CHARACTER SET WE8ISO8859P9
NATIONAL CHARACTER SET WE8ISO8859P9;
Database Configuration Assistant
Startup ve Shutdown
OPEN
MOUNT
NOMOUNT
Instance
başladı.
SHUTDOWN
Bu instance için control
dosyası tarafından
tanımlanan tüm
dosyalar açıldı.
Bu instance için
control dosyası
açıldı.
Shutdown Seçenekleri
Shutdown Modu
A
I
T
N
Yeni bağlantılara izin verme
Session’ların bitmesini bekleme
Transaction’ların bitmesini bekleme
Checkpoint ile tüm dosyaları kapama
Shutdown modu:
A
Abort
T
Transactional
I
N
Immediate
Normal
Dinamik Performans Görünümlerine Erişim
OPEN
Veri sözlüğü
(Data dictionary)
MOUNT
NOMOUNT
SHUTDOWN
Veriyi diskten
okuyan dinamik
performans
görünümleri
Hafızadan
okunan dinamik
performans
görünümleri
Dinamik Performans Görünümlerinden Örnekler
SGA
Control file
V$PARAMETER
V$SGA
V$OPTION
V$PROCESS
V$SESSION
V$VERSION
V$INSTANCE
V$THREAD
V$CONTROLFILE
V$DATABASE
V$DATAFILE
V$DATAFILE_HEADER
V$LOGFILE
Veri Sözlüğü
• Veri Sözlüğü, ilgili veritabanı hakkında bilgiler sağlayan tablolar
ve görünümler içerir. Veritabanı kullanıcıları, yöneticileri ve
Oracle sunucusu için bilgi kaynağı merkezidir. Bir DDL komutu
çalıştırıldığında, veri sözlüğü Oracle sunucusu tarafından
güncellenir. Veri sözlüğü SYSTEM tablespace’inde bulunur ve
sahibi SYS kullanıcısıdır.
• Veri sözlüğü aşağıdaki bilgileri içerir:
–
–
–
–
–
–
Temel tablolar ve veri sözlüğü görünümleri
Mantıksal ve fiziksel veritabanı yapısı
İsimler, tanımlar ve şema nesnelerinin alan tahsis etmesi
Bütünlük sınırlamaları
Veritabanı kullanıcıları ve yetkileri
İzleme (Auditing)
PL/SQL
• PL/SQL, Oracle'ın normal SQL'e yaptığı prosedürel
programlama eklentilerinden oluşur. SQL'in kullanım
kolaylığı ve esnekliği ile yapısal programlama dillerinin
prosedürel fonksiyonalitesini birleştirmiştir.
• PL/SQL'in şu avantajları vardır:
– PL/SQL kodu direkt olarak veritabanında saklanabildiği için
performansı çok daha iyidir.
– PL/SQL kodu içinde veri erişimi kontrol edilebilir. Bu sayede PL/SQL
kullanıcıları veriye uygulama geliştiricisinin istediği şekilde ulaşırlar.
– Normal SQL'de olduğunun aksine cümle cümle yollamak yerine
PL/SQL bloklar halinde yollanabilir, bu da kompleks işlemlerde
gereksiz network trafiği yapılmasını engeller.
Oracle Developer Suite
• Oracle’da veritabanının ve onu kullanan çeşitli uygulamaların
geliştirilmesine yardımcı olan araçların bulunduğu üründür.
(Eski isimleri: Oracle Power Objects, Oracle Developer 2000).
• Bu üründe bulunan araçlardan bazıları:
–
–
–
–
–
–
–
Oracle JDeveloper
Oracle Forms
Oracle Reports
Oracle Designer
Oracle Discoverer
Oracle Software Configuration Manager
Oracle Business Intelligence Beans
Automatic Storage Management
• Taşınabilir ve yüksek performanslı dosya sistemi
• Oracle veritabanı dosyalarını idare eder.
• Yükü dengelemek için veriyi
Application
diskler arasında paylaştırır.
• Diskler arasında eşleme
Database
(mirroring) yapan entegre
File
system
bir mekanizmaya sahiptir.
ASM
Volume
• Saklama idaresi ile ilgili birçok
manager
sorunu çözer
Operating system
Download

Ders 1 - Oracle Veritabanı Mimarisi - Altan MESUT