Upload
orhan-eripek
View
1.674
Download
1
Embed Size (px)
Citation preview
Yer:
Azerbaycan Kafkas Üniversitesi
Tarih:
25.05.2013
Oracle ve İş yaşamında Kullanımları
Orhan ERİPEK
Oracle PLSQL Developer & Oracle DBA
• 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
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
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!
‘ASLA PES ETME.mp4’ izleyelim...
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.
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...
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
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
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
• 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
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
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
• Ş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
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,
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.
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...
- 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
‘Vmware-Oracle.avi’ demo video’muzu izleyelim...
İ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,
İ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.),
‘SVN-ClearCase.avi’ demo video’muzu izleyelim...
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.
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;
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'
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
Çok Kullanışlı Karakter fonksiyonları:
Birkaç işe çok yarar kod’u inceleyelim...
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...
‘Bulk Collect insert.avi’ demo video’muzu izleyelim...
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,
‘Partition.avi’ demo video’muzu izleyelim...
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.
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.
• 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...
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;
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.
Ö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
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.
Kamran Agayev ve Ramin Orucov’a desteklerinden dolayı çoook
TEŞEKKÜRLER! Sorularınız?
Orhan ERİPEK