Oracle ve i̇ş yaşamında kullanımları

38
Yer: Azerbaycan Kafkas Üniversitesi Tarih: 25.05.2013 Oracle ve İş yaşamında Kullanımları Orhan ERİPEK Oracle PLSQL Developer & Oracle DBA

Transcript of Oracle ve i̇ş yaşamında kullanımları

Page 1: Oracle ve i̇ş yaşamında kullanımları

Yer:

Azerbaycan Kafkas Üniversitesi

Tarih:

25.05.2013

Oracle ve İş yaşamında Kullanımları

Orhan ERİPEK

Oracle PLSQL Developer & Oracle DBA

Page 2: Oracle ve i̇ş yaşamında kullanımları

• 1982 doğumlu, Balık burcu, Galatasaraylı, evli, 2 kız babası, İstanbulda yaşıyor, her tür müziği

dinler, gezmeyi, sinema izlemeyi ve bowling’i sever, İngilizce, Rusça ve Kırgızca bilir,

• Oracle 10g Sql And Pl/Sql Fundamentals, Administration Workshop I, Administration Workshop II

(Oracle Turkey 06.03.2006 - 27.03.2006)

• GSM / WCDMA / LTE (Ericsson Turkey 07.02.2012)

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, Aralık 2012 -...

Orhan ERİPEK Oracle Plsql Developer & Oracle DBA

[email protected]

http://www.facebook.com/oeripek

http://ordba.blogspot.com http://www.oraclecommunity.net/profile/OrhanEripek

http://www.linkedin.com/pub/orhan-eripek/4b/171/501 https://twitter.com/OrhanEripek

https://plus.google.com

Page 3: Oracle ve i̇ş yaşamında kullanımları

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

Oracle blog’larını takip edin (kamranagayev.com, tonguc.wordpress.com,

gokhanatil.com, zekeriyabesiroglu.blogspot.com,.....vs.)

Çalıştığınız kurumlarda büyük projelere girin, cesaretli olun, kendinize güvenin, sorumluluk

alın, daha hızlı öğrenin

Oracle sitelerini takip edin (oracle.com, oracle-base.com, tahiti.oracle.com,.....vs.)

Zamanı iyi planlayın, sosyal ağları (facebook, twitter, udemy, youtube,..vs.) Oracle

öğrenmeye yönelik birer araç olarak kullanın,

Bunları yapın...

Oracle Kariyer Adımları

1

2

3

4

5

6

7

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. 8 ✓

9 ✓ Oracle’ı gerçekten öğrenmek istiyormusunuz? Öyleyse ASLA PES ETMEYİN! ve

KAPASİTENİZİN ÜZERİNE ÇIKIN!

Page 4: Oracle ve i̇ş yaşamında kullanımları

‘ASLA PES ETME.mp4’ izleyelim...

Page 5: Oracle ve i̇ş yaşamında kullanımları

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.

Bunları yapmayın!...

Oracle Kariyer Adımları

1

2

3

4

5

6

7

x

x

x

x

x

x

x

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.

Page 6: Oracle ve i̇ş yaşamında kullanımları

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

Örnek olarak dwh_scripts_12_05_2009 bakınız...

Page 7: Oracle ve i̇ş yaşamında kullanımları

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

Page 8: Oracle ve i̇ş yaşamında kullanımları

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

Page 9: Oracle ve i̇ş yaşamında kullanımları

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

Page 10: Oracle ve i̇ş yaşamında kullanımları

• Oracle, Microsoft ve IBM'in ardından dünyanın üçüncü

büyük yazılım firması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 Finansal Raporları için;

http://www.oracle.com/us/corporate/investor-

relations/financials/index.html

Referans: Wikipedia

Page 11: Oracle ve i̇ş yaşamında kullanımları

Oracle Sürümlerinin Tarihçesi

• Oracle v5

• Oracle v6

• Oracle7: 7.0.16–7.3.4

• Oracle8 Database: 8.0.3–8.0.6

• Oracle8i Database Release 1: 8.1.5.0–8.1.5.1

• Oracle8i Database Release 2: 8.1.6.0–8.1.6.3

• Oracle8i Database Release 3: 8.1.7.0–8.1.7.4

• Oracle9i Database Release 1: 9.0.1.0–9.0.1.5 (patchset as of December 2003)

• Oracle9i Database Release 2: 9.2.0.1–9.2.0.8 (patchset as of April 2007)

• Oracle Database 10g Release 1: 10.1.0.2–10.1.0.5 (patchset as of February 2006)

• Oracle Database 10g Release 2: 10.2.0.1–10.2.0.5 (patchset as of April 2010)

• Oracle Database 11g Release 1: 11.1.0.6–11.1.0.7 (patchset as of September 2008)

• Oracle Database 11g Release 2: 11.2.0.1–11.2.0.3 (patchset as of September 2011)

Oracle’ın desteklediği platformlar

• zLinux64

• Microsoft Windows (32-bit)

• Microsoft Windows (x64)

• Linux x86

• Linux x86-64

• Solaris (SPARC) (64-bit)

• Solaris (x86-64)

• HP-UX Itanium

• HP-UX PA-RISC (64-bit)

• AIX (PPC64)

Referans: Wikipedia

Page 12: Oracle ve i̇ş yaşamında kullanımları

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

Page 13: Oracle ve i̇ş yaşamında kullanımları

• Ş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

Page 14: Oracle ve i̇ş yaşamında kullanımları

Developer’a projenin gelişi, test’e ve canlıya verilmesi

• Project Manager (PM), Bussines analistlerle yapılacak iş tanımını belirler, TAD

(Technical Analysis and Design Document) ve FAD (Functional Analysis and Design

Document) dokümanlarını hazırlar ve Developer ekibine iş takip platformları

üzerinden iletilir,

• Projenin atandığı 1 veya 2-3 developer TAD ve FAD dokümanlarından esinlenerek

kendi tarafında yapacağı kod geliştirmelerini belirleyerek LLD (Low Level Design)

dokümanını hazırlar ve belirlenen end date planına kadar geliştirmesini yapar,

• Developer, altyapıyı bilen ekibinden tecrübeli bir developer’a, yaptığı kod

geliştirmelerini gösterir, onayını alır, bu işleme kod review denir,

• Developer clear case’e, güncellediği veya yeni create ettiği objelerin scriptlerini

versiyonlar, burada projesine ait unique bir aktivite id tanımlar,

• Developer çalışmasını tamamladıktan sonra yaptığı tüm işleri detaylı olarak RN

(Release Note) dokümanına yazar, kodlarının test scriptlerini de UT (Unit Test)

dokümanına yazar,

• Developer clear case’de tanımladığı aktivite id üzerinden projesini test ekibine iletir,

• Developer, test ekibinden proje için atanan kişi veya kişilere aktarım yapar,

Page 15: Oracle ve i̇ş yaşamında kullanımları

Developer’a projenin gelişi, test’e ve canlıya verilmesi

• Test ekibinden proje için atanmış ilgili kişi veya kişiler RN ve UT’yi baz alarak, clear

case’e girilen yeni kodları end date sürelerinin bitimine kadar birkaç farklı durumda

test eder,

• Bu aşamada testçi test ederken takıldığı noktaları sormak için ara sıra developer’ı

rahatsız eder bazen testçi developer’ın, bazen de developer testçinin zamanını

çalabiliyor,

• Test’ten geçen proje, SAT ekibince preproduction ortamında test edilir,

• Bundle zamanında tüm geliştirilen projeler aynı anda önceden planlanmış gün ve

saatte canlıya (production sisteme) alınır, o gün ve saatte geliştirmeyi yapan

developer her ihtimale karşı hazırol’da bekler

• Canlıya alım sırasında yaşanabilecek olası aksilikleri de gözönünde bulundurup

developer’ın ‘rollback plan’ ı da önceden hazırlaması gerekiyor.

Page 16: Oracle ve i̇ş yaşamında kullanımları

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,

Oracle XE ile ilgili birkaç ekran görüntüsüne ve Oracle APEX ile ilgili demo

video’muza bakalım...

Page 17: Oracle ve i̇ş yaşamında kullanımları

- 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)

Oracle Linux 6 on Vmware Virtual Machine

TOAD for Oracle

Windows Client

Linux Database Server

- listener.ora

- tnsnames.ora

(Oracle Net

Manager)

http://ordba.blogspot.com/2013/03/installing-oracle-linux-release-6.html

Page 18: Oracle ve i̇ş yaşamında kullanımları

‘Vmware-Oracle.avi’ demo video’muzu izleyelim...

Page 19: Oracle ve i̇ş yaşamında kullanımları

İ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,

Page 20: Oracle ve i̇ş yaşamında kullanımları

İ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.),

Page 21: Oracle ve i̇ş yaşamında kullanımları

‘SVN-ClearCase.avi’ demo video’muzu izleyelim...

Page 22: Oracle ve i̇ş yaşamında kullanımları

Birkaç işe çok yarar kod’u inceleyelim...

drop some tables :

Tüm constraint yapıları ile birlikte belirtilen user'ın bazı tablolarını drop etmek için aşağıdaki gibi bi plsql

bloğu kullanılabilir.

Page 23: Oracle ve i̇ş yaşamında kullanımları

Birkaç işe çok yarar kod’u inceleyelim...

all_users_tables_scripts.sh ------bazı kullanıcıların tüm tablolarının scriptleri---- #!/usr/bin/ksh . $HOME/.profile sqlplus -s /nolog << EOF > /dev/null connect ORHAN/PASSWORD@ORCL set verify off; set termout off; set feedback off; set pagesize 0; set heading off set long 40000 SPOOL /tmp/orhan/all_users_tables_scripts.txt select dbms_metadata.get_ddl('TABLE',u.table_name,u.owner) from dba_tables u where u.owner in('OERIPEK','ADEMIR','MCAN'); set heading off set recsep off col text format a80 word_wrap spool off;

Page 24: Oracle ve i̇ş yaşamında kullanımları

Birkaç işe çok yarar kod’u inceleyelim...

----kullanıcının belirtilen tablosunun scripti için----- select dbms_metadata.get_ddl('TABLE','TABLO1') from dual; ----belirtilen kullanıcının belirtilen tablosunun scripti için----- select dbms_metadata.get_ddl('TABLE','TABLO2','MEHMET') from dual; ----kullanıcının tüm tablolarının scripti için---- select dbms_metadata.get_ddl('TABLE',a.table_name) from USER_TABLES a; ----kullanıcının tüm indexlerinin scripti için---- select dbms_metadata.get_ddl('INDEX',a.index_name) from USER_INDEXES a; ----ORHAN ve MEHMET kullanıcılarının tüm tablolarının scriptini çıkaran sql sorgusu için------ select 'select dbms_metadata.get_ddl(''TABLE'','''||a.table_name||''','''||a.owner||''') from dual;' from dba_tables a where owner in('ORHAN','MEHMET'); ---- Kullanıcı profillerinin scriptlerini de çekebiliriz---- select dbms_metadata.get_ddl('PROFILE',profile) from DBA_PROFILES where profile != 'DEFAULT'

Page 25: Oracle ve i̇ş yaşamında kullanımları

Birkaç işe çok yarar kod’u inceleyelim...

sql to output:

aşağıdaki plsql bloğunda; utl_file.fopen ile excel dosyasını açar, utl_file.get_line ile okunan veri alınır ve dbms_output.put_line ile de çıktı sonucu ekrana yazılır. DECLARE vInHandle utl_file.file_type; vNewLine VARCHAR2(250); BEGIN vInHandle := utl_file.fopen('ORHAN_DIR', 'a.xls', 'R'); LOOP BEGIN utl_file.get_line(vInHandle, vNewLine); dbms_output.put_line(vNewLine); EXCEPTION WHEN OTHERS THEN EXIT; END; END LOOP; utl_file.fclose(vInHandle); END fopen; / ------------------------------------------- directory name : ORHAN_DIR file name: a.xls

Page 26: Oracle ve i̇ş yaşamında kullanımları

Çok Kullanışlı Karakter fonksiyonları:

Birkaç işe çok yarar kod’u inceleyelim...

Page 27: Oracle ve i̇ş yaşamında kullanımları

Bulk Collect:

Hayat kurtarır... çok daha kısa sürede milyonlarca datayı insert edebilirsiniz, zaman ve

performans kazandırır...

Birkaç işe çok yarar kod’u inceleyelim...

Page 28: Oracle ve i̇ş yaşamında kullanımları

‘Bulk Collect insert.avi’ demo video’muzu izleyelim...

Page 29: Oracle ve i̇ş yaşamında kullanımları

UYGULAMA:

Dinamik Plsql ile Partition/Subpartition ekleme, silme

Demo: Dinamik Plsql içerikli procedure’lerle örnek TABLO1 ve TABLO2

tablolarına partition/subpartition ekleme, silme işlemi.

• TABLO1 ve TABLO2 tabloları ve indexleri create edilir,

• ADD_PART_SUBPART_.prc ve DROP_PART_SUBPART_.prc

procedure’leri create edilir,

• RUN_ bach’leri ile istenilen partitionlar eklenir, silinir,

Page 30: Oracle ve i̇ş yaşamında kullanımları

‘Partition.avi’ demo video’muzu izleyelim...

Page 31: Oracle ve i̇ş yaşamında kullanımları

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.

Özellikleri:

• Çift yönlü çalışır. Şifrelenmiş veri geri çözülebilir.

• DES şifrelemesinin 3 kere art arda yapılması şeklinde çalışır.

• DES şifreleme yöntemine göre 3 kat daha yavaş çalışır.

• Şifreleme yapmak için uzunluğu 24 bayt olan bir anahtar kullanılır. Her bayt

için 1 eşlik biti vardır. Dolayısıyla anahtarın uzunluğu 168 bittir.

• Veri, 3DES anahtarının ilk 8 baytı ile şifrelenir. Sonra veri anahtarın

ortadaki 8 baytı ile çözülür. Son olarak anahtarın son 8 baytı ile şifrelenerek

8 bayt bir blok elde edilir.

Page 32: Oracle ve i̇ş yaşamında kullanımları

Avantajları:

• Çift yönlü çalıştığından şifreli bir şekilde veriler saklanabilir, istenildiği zaman

geri çağrılarak şifresi çözülebilir.

• Bilgisayarın donanımsal açıklarını kapatır. (örnek: VPN, veri haberleşme

ağları)

Dezavantajları:

• Güvenlik tamamen kullanılan anahtara dayanmaktadır. Anahtarın zayıflığı,

şifrenin çözülmesini kolaylaştırır.

• Daha gelişmiş bir algoritmaya sahip olan AES (Advanced Encryption

Standard-Gelişmiş Şifreleme Standardı) şifreleme yöntemine göre 6 kat daha

yavaş çalışır.

Kullanıldığı Yerler:

• Bankalar, GSM şirketleri

• Güvenlik programları

• Elektronik ödeme sistemi (kredi kartıyla internetten alışveriş yapma)

• 3DES, yavaş yavaş ortadan kalkmaktadır. 3DES’in yerine AES (Gelişmiş

Şifreleme Standardı) almaktadır.

Page 33: Oracle ve i̇ş yaşamında kullanımları

• 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)

Oracle 10g sürümünden itibaren dbms_crypto (DES, 3DES, AES, RC4 ve

3DES_2KEY) paketleri kullanılmaktadır. Ayrıca Oracle’da kolon, tablo veya

tablespace’lerimizi Transparent Data Encrytion (TDE) kullanarak encrypt edebiliriz,

• GSM şirketlerinden birinde kullanılan 3DES algoritması ile kredi kartı şifreleme

(encrypt) ve çözme (descrypt) yöntemlerini örneklerle görelim...

Page 34: Oracle ve i̇ş yaşamında kullanımları

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;

Page 35: Oracle ve i̇ş yaşamında kullanımları

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.

Page 36: Oracle ve i̇ş yaşamında kullanımları

Ö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

Page 37: Oracle ve i̇ş yaşamında kullanımları

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.

Page 38: Oracle ve i̇ş yaşamında kullanımları

Kamran Agayev ve Ramin Orucov’a desteklerinden dolayı çoook

TEŞEKKÜRLER! Sorularınız?

Orhan ERİPEK