<Insert Picture Here>
Oracle Database ve Teknolojileri
Orhan Eripek, Senior Oracle DBA, Aksigorta
http://orhaneripek.com/
Eğitim
Kırgızistan-Türkiye Manas Üniversitesi, Bilgisayar Mühendisi, 2005 Mezunu
Haliç Üniversitesi, Bilgisayar Mühendisliği Yüksek Lisans 2009 Mezunu
İstanbul Aydın Üniversitesi, Bilgisayar Mühendisliği Doktora öğrencisi...
İş Deneyimleri
Şişli Etfal Eğitim ve Araştırma Hastanesi, Oracle DBA, 3 yıl,
Vodafone, Oracle Datawarehouse Developer, 2 yıl,
Turkcell, Operation Admin, 2 yıl,
Vodafone, Oracle PLSQL Developer, 1 yıl,
Aksigorta, Senior Oracle DBA, Eylül 2013…
3
• Oracle, Microsoft’un ardından dünyanın ikinci büyük yazılım firmasıdır ve kendi adını verdiği
database sistemi ‘Oracle Database’, dünyanın en çok kullanılan ve tercih edilen veritabanıdır.
• Uygulama geliştirme araçları, uygulama sunucusu ve de iş uygulamaları alanlarında yazılım
çözümleri bulunmaktadır.
• Oracle, ilişkisel veritabanı yönetim sistemidir-Relational Database Management Systems'dir
(RDMS)
• Büyük hacimli verilerin ilişkisel olarak bütünlüğünün korunarak saklandığı, aynı anda birden fazla
kullanıcının bu bütünlüğe bozulmadan ulaşabildiği güvenli ve hızlı programlardır.
• Oracle’ın programlama dili PL/SQL’dir.
• Uzun süre kapatılmadan açık kalabilir.
• Oracle Datawarehouse, Oracle RAC, Oracle Datamining, Oracle DataGuard, Oracle Cloud
Computing,....vs. ve daha çok fazla teknoloji çözümleri vardır.
• Tüm bu gelişmiş özellikleri ile Oracle’ın maliyeti (lisans ücreti) de oldukça yüksektir.
Oracle Nedir?
4
Oracle sitelerini takip edin (oracle.com, oracle-base.com, tahiti.oracle.com,.....vs.)
Oracle blog’larını takip edin (kamranagayev.com, tonguc.wordpress.com,
gokhanatil.com, zekeriyabesiroglu.blogspot.com,.....vs.)
PC’nize Oracle’ı ve üzerine kendi db’inizi kurun, merak ettiğiniz tüm Oracle ürünlerini
(Datawarehouse, RAC, DataGuard, Datamining,..vs.) kurarak tecrübe edinin
Çalıştığınız kurumlarda büyük projelere girin, cesaretli olun, kendinize güvenin,
sorumluluk alın, daha hızlı öğrenin
Paylaşımcı olun, paylaşmak öğrenmektir, daha çok şey öğrenmek ve en doğrusunu
öğrenmek için paylaşın, anlatın
Oracle Seminer, Eğitim ve Oracle Day etkinliklerine katılın
Ne kadar çok şey öğrenirseniz öğrenin her zaman çırak, öğrenci olarak kalmaya
devam edin.
Oracle’ı gerçekten öğrenmek istiyormusunuz? Öyleyse ASLA PES ETMEYİN! ve
KAPASİTENİZİN ÜZERİNE ÇIKIN!
Oracle Kariyer Adımları: Bunları yapın...
6
Oracle Kariyer Adımları: Bunları yapmayın...
Google’dan aratıp bulduğunuz her bilgiye körü körüne inanmayın!, çünkü zamanla bilgi kirliliği artışı
sözkonusu, güvenli adreslerdeki bilgileri de inceleyip tutarlılığını karşılaştırın.
‘Benden bi cacık olmaz’ demeyin! Kendinize güvenin, darlandığınızda aksine kendi kendinizi gaza
getirin –sevdiğim sözlerden biri : ‘İnsanoğlunun başaramayacağı şey yoktur!’
Bazen doğru zannettiklerimiz gerçek doğru olmayabilir, ‘her bildiğim %100 doğrudur’ demeyin!,
şüpheye düştüğünüz doğrularınızın doğruluğunu güvenilir üstadlardan teyit ettirin.
‘Ben çok emek, zaman harcadım, çok çalıştım, o da öyle öğrensin’ demeyin! Bilgilerinizi toprağa
gömmeyin, anlatarak hem bilgilerinizi tazeleyin hem sevilen, sayılan biri olun.
‘Üstadım bu soruma güler mi acaba?’ demeyin! soru sorarak öğrenmek en hızlı öğrenme yöntemidir,
üstadlarınıza soru sormaktan asla çekinmeyin, ona sormazsanız sürekli yine kendinize sormak
durumunda kalacaksınız ve bu soru işareti belki uzun süre beyninizi meşgul edecek.
Hiç kimseyi rakip olarak görmeyin! En büyük rakibiniz kendinizdir, başkalarıyla yarışarak ne
hedefinize ulaşabilirsiniz ne de iş yaşamınızda sevilen biri olursunuz.
‘Üstadlarım zaten çok yoğun çalışıyorlar, benimle ilgilenemezler’ demeyin!, bıkmadan takipçileri
olun, elbet uygun zamanlarında size döneceklerdir.
7
Oracle öğrenmeye nasıl başlamalı?
• Oracle hakkında google’dan araştırma yapın, Oracle dokümanlarını okuyun, okuyun sonra
tekrar okuyun
• Oracle 11g r2’yi veya Oracle APEX’i bilgisayarınıza kurun, (benim tavsiyem; Vmware Workstation
sanal machine uygulamasını kurun, üzerine Oracle Linux veya Solaris’i kurun, bu sanal
sisteminize de Oracle database’i kurun)
• Test çalışmalarınızı yapabileceğiniz kendinize ait datanız, database’iniz olsun; table, index,
constraints, procedure, function, package, triger, ..vs. objeleriniz olsun ve bunlar üzerinde
denemeler yapın, pratiğinizi artırın
8
Oracle öğrenmeye nasıl başlamalı?
• İlgi duyduğunuz veritabanı işlemlerini yapın, mesela backup-recovery, import-export,
data moving, data replication, data partitioning, spool-sql*loader, ....vs. çalışmalarınızı
yapın
• En az 1 Oracle üstadı edinin tecrübelerinden faydalanın
9
Oracle öğrenmeye nasıl başlamalı?
• Büyük kurumsal şirketlerin IT departmanlarının Veritabanı birimlerinde Oracle DBA,
Oracle Plsql Developer, Oracle Datawarehouse Developer, Oracle Application
Developer, Oracle BI Developer,...vs. pozisyonlarından birinde kariyerinizi sürdürün
• Oracle Day, konferans, sunum ve eğitimlerine katılın, seminerler verin, blog sitesi tutun,
bildiklerinizi paylaşın, anlatın
10
Oracle öğrenmeye nasıl başlamalı?
• Hayatınızdaki herşeye zaman ayırdığınız gibi belli aralıklarda Oracle öğrenmeye de
sürekli zaman ayırın
• Oracle sertifikalarını (OCA, OCP, OCM) kendinizi hazır hissettiğinizde alın
• İngilizcenizi geliştirin
11
Oracle DBA ve Oracle PLSQL Developer
• DBA, developer’ı genellikle ‘Production db’i düşünmediğinden’, Developer ise DBA’i
genellikle ‘kodunu tam anlamadığını düşündüğünden’ eleştirir
• Birbirinden ayrılmaz 2 parçadır; DBA en az developer kadar SQL ve PLSQL bilmelidir,
Developer ise veritabanı tasarımını ve nasıl çalıştığının farkında olmalıdır
12
• Şirketlerde genellikle bu 2 grup ayrı lokasyonlardadır, halbuki bu 2 grubun aynı yuvarlak
masa etrafında birlikte çalışmaları gerekir
✓x
Oracle DBA Oracle Developer
• DBA, ‘canım sıkıldı, biraz da kod yazayım’ diyerek başka bir şirkette Developer olarak
veya Developer, ‘canım sıkıldı, biraz da veritabanı adminliği yapayım’ diyerek başka bir
şirkette DBA olarak zaman zaman çalışabiliyor
13
İyi PLSQL kodu nasıl yazılır?
• Sql’in sayısal ve karakter fonksiyonları (substr, instr, length, regexp_substr,..vs.) ile
sunduğu çözümlerin farkında olun, böylelikle daha performanslı kodlar üretmeye çalışın,
• Plsql kodunda yapacağımız işin yükünü sql sorgularına yüklemeliyiz, procedure, function
veya package yapılarına çevireceğimiz plsql kodlarını bu şekilde çok fazla yormamış
oluruz, ‘iyi bir sql’den iyi bir plsql kodu çıkar’,
• En basit ve kısa yoldan çözüme gidilmeli, karmaşık kodlamalardan uzak durulmalı, sade ve
anlaşılır olmalı,
• Bugün için kod yazmayın, kodlarımız yıllar sonra da çalışabilecek kadar esnek olmalı,
• Olabilecek hata durumlarına karşı kodumuz hazır olmalı, exception, sqlerrm,
raise_application_error() kullanılmalı,
• Farklı case’leri düşünerek unit test yapılmalı, developer aynı zamanda kendi yazdığı kodun
testçisidir,
14
İyi PLSQL kodu nasıl yazılır?
• Çalıştığınız kurumun kod yazma standartlarına (kod formatlama, comment girme,
procedure, function .. vs. isimlerinin başına veya sonuna standart ifadeler getirme..vs. )
uyun,
• Kodunuz, yarım saatten fazla sizi uğraştırıyor ve çözüme ulaşamıyorsanız mutlaka yardım
alın,
• Db’deki tüm package, procedure, function,..vs. kodlarını zamanla inceleyin, kullanılan
teknikleri görün,
• Kodunuzu tamamladıktan sonra bir bilene kontrol ettirin, onaylatın,
• Kod versiyonlama yapın (SVN, Clear Case..vs.),
15
ENCRYPTION & DESCRYPTION
DES : Data Encryption Standart’ın kısaltılması olan DES algoritması yaklaşık 30 yıldır banka ve
iletişim kurumlarının özellikle finansal işlemlerinde veri güvenliğinde kullanılmaktadır.
3DES : Three-DES veya Triple DES olarak adlandırılır, Brute Force saldırılara karşı koymakta
zorlanan DES algoritmasının üzerine 1978 yılında IBM tarafından geliştirilmiştir.
• Telekomünikasyon (GSM) şirketlerinde de diğer kurumsal şirketlerde olduğu gibi abonelerine ait
bilgilerin güvenliği ve korunması önemlidir, aksi halde BTK (Bilgi Teknolojileri Kurumu)’nın
cezalarına maruz kalınabilir.
• GSM şirketlerinde aboneler isterlerse her ay otomatik olarak fatura ödemelerini kredi kartı
bilgilerini vererek mail-order sistemi ile tahsil edebiliyorlar. Tüm kredi kart bilgileri sisteme şifreli
olarak gelir ve Oracle database’de şifreli olarak tutulur.
• Oracle’ın veriyi kendi bünyesinde şifreleme ve çözmesi için kullandığı paketleri vardır;
• Oracle 8i/9i sürümlerinden itibaren dbms_obfuscation_toolkit (DES ve 3DES)
• GSM şirketlerinden birinde kullanılan 3DES algoritması ile kredi kartı şifreleme (encrypt) ve
çözme (descrypt) yöntemlerini örneklerle görelim...
16
Oracle’ın DES algoritması için kullandığı dbms_obfuscation_toolkit paketinde
kullanılan DESEncrypt ve DESDecrypt örneği;
DECLARE
input_string VARCHAR2(16) :=
'&PASSWD';
raw_input RAW(128) :=
UTL_RAW.CAST_TO_RAW(input_string);
key_string VARCHAR2(16) :=
'gizlinumara';
raw_key RAW(128) :=
UTL_RAW.CAST_TO_RAW(key_string);
encrypted_raw RAW(2048);
encrypted_string VARCHAR2(2048);
decrypted_raw RAW(2048);
decrypted_string VARCHAR2(2048);
error_in_input_buffer_length EXCEPTION;
PRAGMA
EXCEPTION_INIT(error_in_input_buffer_length, -
28232);
INPUT_BUFFER_LENGTH_ERR_MSG VARCHAR2(100) :=
'*** DES INPUT BUFFER NOT A MULTIPLE OF 8
BYTES - IGNORING EXCEPTION ***';
double_encrypt_not_permitted EXCEPTION;
PRAGMA
EXCEPTION_INIT(double_encrypt_not_permitted, -
28233);
DOUBLE_ENCRYPTION_ERR_MSG VARCHAR2(100) :=
'*** CANNOT DOUBLE ENCRYPT DATA - IGNORING
EXCEPTION ***';
BEGIN
dbms_output.put_line('Raw input : ' ||
UTL_RAW.CAST_TO_VARCHAR2(raw_input));
BEGIN
dbms_obfuscation_toolkit.DESEncrypt(input
=> raw_input,
key => raw_key, encrypted_data =>
encrypted_raw );
dbms_output.put_line('encrypted hex value
: ' ||
rawtohex(encrypted_raw));
dbms_obfuscation_toolkit.DESDecrypt(input
=> encrypted_raw,
key => raw_key, decrypted_data =>
decrypted_raw);
dbms_output.put_line('Decrypted raw output
: ' ||
UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw));
if UTL_RAW.CAST_TO_VARCHAR2(raw_input) =
UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw) THEN
dbms_output.put_line('Raw DES Encyption
and Decryption successful');
END if;
EXCEPTION
WHEN error_in_input_buffer_length THEN
dbms_output.put_line(INPUT_BUFFER_LENGTH_ERR_MSG
);
END; END;
17
PLSQL batch’ini çalıştırdığımızda sonuç aşağıdaki gibi olacaktır:
Key olarak ‘gizlinumara’ ifadesini tanımladığımız kodumuzda şifrelenmesini istediğimiz
input değer olarak 8 karakter uzunluğunda örneğin ‘orhanorh’ ifadesini girdim, öncelikle
DESEncrypt fonksiyonu key’imiz ile input değerimizi şifreliyor (Encrypt), ardından
DESDecrypt fonksiyonu ile de şifrelenmiş (encrypted_raw) olan verimizi key’i de
kullanarak aynı DES algoritmasını kullanarak tersi yönde çözümlüyor.
18
• Örnek GSM şirketinde kredi kartı şifreleme işlemi için Utility_Encdec paketinde 3DES algoritması
kullanılmıştır.
• credit_card_black_list tablosuna aboneye ait kredi kartı numarası insert edilirken aşağıda görüldüğü gibi
şifrelenmiş olarak insert edilir;
select * from credit_card_black_list
19
Bu şifrelenmiş olan kredi kartını sorgulayabilmemiz için aşağıdaki gibi utility_encdec paketi altındaki
des3encrypt () fonksiyonunu kullanmalıyız;
select * from ccb_credit_card_black_list where credit_card_number =
utility_encdec.des3encrypt('53232489....')
Aşağıdaki des3encdec_params parametre tablosunda şifreleme için kullanılan key saklı tutulmaktadır,
bu key des3encrypt ve des3decrypt fonksiyonları tarafından kullanılmaktadır.
20
Oracle Application Express (Oracle APEX)
• Ücretsizdir,
• İnternetin olduğu her yerde kendi db’inize erişebilir ve
yönetebilirsiniz, oldukça pratiktir,
• Oracle APEX db’inize olan bağlantınız kolay kolay kesilmez,
• Database uygulamaları geliştirir, raporlayabilirsiniz,
• Oracle db’de yapılabilecek birçok işlemi yapabilirsiniz,
Oracle Database Express Edition (Oracle XE)
• Ücretsizdir,
• Kullanımı kolaydır, pratiktir,
• Bilgisayarınızda çok yer kaplamaz,
• Oracle db’de yapılabilecek birçok işlemi yapabilirsiniz,
21
Oracle Linux 6 on Vmware Virtual Machine
- Create user,
- Create tablespace,
- Create table, index, constaints,
- Insert data, import data,
- Create procedure, function, triger,
package, job, db_link,..vs,
- Grant roles, privileges...
MY DB
SQL> conn sys / as sysdba
SQL> shutdown immediate;
SQL> startup mount;
cmd -> rman target /
RMAN> BACKUP DATABASE PLUS
ARCHIVELOG ALL;
SQL> alter database open;
MY DB (backup)
Linux Database Server
- listener.ora
- tnsnames.ora
(Oracle Net Manager)
Windows Client
22
• Spotlight on Oracle
ile hem single node
db’leri hem de rac
db’leri izleyebiliriz
• Ana ekranındaki
grafikler ile bize
görsel olarak anlık
bilgi verir
• Problemli durum
olduğunda yeşil renk
kırmızıya, yoğunluk
olduğunda truncu
renge dönüşür
• Üst menulerle
session, cpu-ram-I/O,
top sql, logs, vs.
utilization bilgilerin
detaylarını görebiliriz
• Alert anında sistemin
sağ alt köşesinde
açılan pop-up ile de
bilgilendirme yapar
• Oracle Enterprise
Manager yönetim,
monitoring konsolu
gibi kullanabilecek bir
başka alternatif
çözümdür
Oracle DB İzleme Uygulamaları: Spotlight on Oracle
23
Oracle DB İzleme Uygulamaları: Oracle Enterprise Manager
• Oracle Enterprise Manager
konsolu db’i yönetmemize ve
izlememize yardımcı olur
• ‘Home’ tab’ı ile db hakkında özet
bilgileri anlık olarak sunar
• ‘Performance’ tab’ı ile Active
Session, CPU, RAM, I/O utilization
bilgilerini anlık olarak sunar
• Diğer tab’lar ile de
backup/recovery, storage,
scheduler, security, db objects vs.
yönetimleri yapılabilir
• DBA için kullanışlıdır, sürekli db
bilgileri izlenebilir
• Oracle Database 12c ile gelen son
sürümü Oracle Enterprise Manager
12c’dir
25
• Dünyanın en iyi
Uygulama
sunucusudur
• Çok fazla farklı
platformlarda
yazılmış
uygulamaları tek
konsolda
yönetmemizi ve
izlememizi sağlar
• Uygulamaları daha
hızlı açar, daha hızlı
kapatır
• Uygulamaları hızlı
kurar ve hızlı
derleme yapılır
• Warning alan
instance’ların thread
dump’ları alınarak
uygulamada yaşanan
problem incelenebilir
• Oracle Weblogic
Server 12c son
sürümüdür
Oracle Teknolojileri: Oracle Weblogic Server
26
Oracle Teknolojileri: Oracle Datawarehouse (Dwh)
• Oracle Veriambarı farklı production db’lerden beslenir
• Raporlama amaçlı kullanılır, datalar ETL (Extract -> Transform -> Load) ile çeşitli filtrelerden geçerek özet rapor
datası hazırlanır
• Spool ile tablo datası txt veya csv formatında dışarıya çıkılır, Sql*Loader ile txt, csv file’larda tutulan datalar
db’e aktarılır, en çok kullanılan dwh operasyonlarındandır
• Gece saatlerine set edilen çok fazla Scheduler job, sh script saatlerce çalışır, ilgili kaynak db’lerden datalar dwh
db’inde temp tablolarına aktarılır, burada çeşitli datasal işler yapılır ve işlenmiş data olması gereken dwh
tablolarına aktarılır.
• Tüm verileri analiz etmeye gerek olmadan sadece belirli veriler üzerinde analiz, işlem yapmak için
veriambarının alt birimleri olan Data Mart’lar kullanılır.
27
Oracle Teknolojileri: Oracle RAC (Real Application Cluster)
Oracle Real Application Clusters (RAC), birçok büyük kurumsal şirketlerin veritabanı sistemlerinde
kullanılan bir teknolojidir. Kümelenmiş bir dizi sunucu üzerinde tek veritabanının çalıstırılmasına olanak
tanıyan böylece yüksek süreklilik ve ölçeklenebilirlik sağlayan bir çözümdür. Bu teknoloji ile örneğin; iki
işlemcinin iş yükünü tek bir işlemci gibi gösterir ve bir işlemcinin veritabanı işlemleri yarıda kaldıysa diğer
işlemcinin bu işlemi kaldığı yerden devam ettirmesi sağlanır.
28
Oracle Teknolojileri: Oracle Data Guard
• Data kaybının minumum, erişilebilirliğin maximum olmasını sağlayan Oracle’ın en önemli teknoloji
çözümlerinden biridir
• Data Guard (Disaster Recovery ortamı) fiziksel olarak başka bir lokasyonda bulunan ve istenildiği
anda hazır Production database olarak kullanabileceğimiz yedeğimizdir
• Redo log’lardan okunan data anlık olarak standby database’lere yazılır, db’ler eşitlenir
29
Oracle Teknolojileri: Oracle VM VirtualBox
• Oracle VM sanallaştırma uygulaması
ile şirketler sunucu maliyetlerini
önemli ölçüde düşürebilirler
• Single node kurulabildiği gibi network
sistemi de kurulabilir
• Fiziksel sunucunun Disk, Ram,
Network kart kaynaklarını kullanır,
sanal sunucuya verilecek makul
değerlerle optimize edilebilir
• Birçok Development ve Test
ortamları kurulabilir
• Sanal sistemin snapshot’ları alınarak
istenilen eski durumuna gidilebilir, bu
snapshotlar fiziksel image’lardır
• Özellikle Oracle db’ini yeni öğrenmek
isteyen kullanıcılar için oldukça
kullanışlı ve faydalıdır
• Birçok farklı işletim sistemini
desteklediğinden kurulumları
yapılabilir veya Oracle’ın sunduğu
hazır template şablonlar ile direk
kullanım sağlanabilir
30
Oracle Teknolojileri: Oracle Audit Vault ve Oracle Database Vault
Oracle Audit Vault
• Veritabanı denetim ayarlarını
yapabileceğimiz ve kullanıcıların
tüm veritabanı aktivitelerini
raporlayabileceğimiz
uygulamadır
• Kaynak veritaban(lar)ındaki
aktiviteleri izler (monitoring),
loglar (logging), raporlar
(reporting) ve uyarır(alerting)
• Son sürümü Oracle Audit Vault
and Database Firewall 12.1.1’dir
Oracle Database Vault
• DBA veya kullanıcıların şirket
uygulamalarına doğrudan
erişimlerinin OS user ve IP
bazında kısıtlanabileceği, db
seviyesinde bazı yetki kurallarını
tanımlayarak güvenliği
sağlayabileceğimiz uygulamadır.
31
Otomatik Alert Mail
Audit Vault Tablespace Size durumu için Alert Mail:
Audit Vault tablespace doluluk oranı belli bir eşik değeri (örnek olması açısından
aşağıdaki örnekte %60 limiti verildi, biz kullanımda %90 limitini vereceğiz) aştığında
otomatik Alert mailini alabiliriz.
32
Audit Vault Uygulaması için Alert Mail:
Audit Vault uygulamalarının data toplayıcı kollektor’ları (Collectors) herhangi bir sebepten
dolayı duracak olursa otomatik mail ile Alert durumu öğrenebiliriz.