Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,285 views

Published on

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

  1. 1. Yer:Azerbaycan Kafkas ÜniversitesiTarih:25.05.2013Oracle ve İş yaşamında KullanımlarıOrhan ERİPEKOracle PLSQL Developer & Oracle DBA
  2. 2. • 1982 doğumlu, Balık burcu, Galatasaraylı, evli, 2 kız babası, İstanbulda yaşıyor, her tür müziğidinler, 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İPEKOracle Plsql Developer & Oracle DBAorhaneripek@hotmail.comhttp://www.facebook.com/oeripekhttp://ordba.blogspot.com http://www.oraclecommunity.net/profile/OrhanEripekhttp://www.linkedin.com/pub/orhan-eripek/4b/171/501 https://twitter.com/OrhanEripekhttps://plus.google.com
  3. 3. 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 edininOracle 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, sorumlulukalın, daha hızlı öğreninOracle 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ı1234567✓✓✓✓✓✓✓Paylaşımcı olun, paylaşmak öğrenmektir, daha çok şey öğrenmek ve en doğrusunuöğrenmek için paylaşın, anlatınOracle Seminer, Eğitim ve Oracle Day etkinliklerine katılınNe kadar çok şey öğrenirseniz öğrenin her zaman çırak, öğrenci olarak kalmaya devamedin.8✓9✓Oracle’ı gerçekten öğrenmek istiyormusunuz? Öyleyse ASLA PES ETMEYİN! veKAPASİTENİZİN ÜZERİNE ÇIKIN!
  4. 4. ‘ASLA PES ETME.mp4’ izleyelim...
  5. 5. Google’dan aratıp bulduğunuz her bilgiye körü körüne inanmayın!, çünkü zamanla bilgikirliliğ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 kendinizigaza 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! Bilgilerinizitoprağ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ı öğrenmeyöntemidir, üstadlarınıza soru sormaktan asla çekinmeyin, ona sormazsanız sürekli yinekendinize sormak durumunda kalacaksınız ve bu soru işareti belki uzun süre beyninizimeşgul edecek.Bunları yapmayın!...Oracle Kariyer Adımları1234567xxxxxxxHiç kimseyi rakip olarak görmeyin! En büyük rakibiniz kendinizdir, başkalarıyla yarışarak nehedefinize ulaşabilirsiniz ne de iş yaşamınızda sevilen biri olursunuz.‘Üstadlarım zaten çok yoğun çalışıyorlar, benimle ilgilenemezler’ demeyin!, bıkmadantakipçileri olun, elbet uygun zamanlarında size döneceklerdir.
  6. 6. Oracle öğrenmeye nasıl başlamalı?• Oracle hakkında google’dan araştırma yapın, Oracle dokümanlarını okuyun, okuyun sonra tekrarokuyun • Oracle 11g r2’yi veya Oracle APEX’i bilgisayarınıza kurun, (benim tavsiyem;Vmware Workstation sanal machine uygulamasını kurun, üzerine Oracle Linuxveya Solaris’i kurun, bu sanal sisteminize de Oracle database’i kurun)• Test çalışmalarınızı yapabileceğiniz kendinize ait datanız, database’inizolsun; 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...
  7. 7. 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
  8. 8. Oracle öğrenmeye nasıl başlamalı?• Büyük kurumsal şirketlerin IT departmanlarının Veritabanı birimlerinde OracleDBA, Oracle Plsql Developer, Oracle Datawarehouse Developer, OracleApplication Developer, Oracle BI Developer,...vs. pozisyonlarından birindekariyerinizi sürdürün• Oracle Day, konferans, sunum ve eğitimlerine katılın, seminerler verin, blogsitesi tutun, bildiklerinizi paylaşın, anlatın
  9. 9. 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
  10. 10. • Oracle, Microsoft ve IBMin 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-RelationalDatabase Management Systemsdir (RDMS)• Büyük hacimli verilerin ilişkisel olarak bütünlüğününkorunarak saklandığı, aynı anda birden fazla kullanıcınınbu 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. vedaha ç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.htmlReferans: Wikipedia
  11. 11. 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
  12. 12. Oracle DBA ve Oracle PLSQL Developer• DBA, developer’ı genellikle ‘Production db’i düşünmediğinden’, Developerise 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 PLSQLbilmelidir, Developer ise veritabanı tasarımını ve nasıl çalıştığının farkındaolmalıdır
  13. 13. • Şirketlerde genellikle bu 2 grup ayrı lokasyonlardadır, halbuki bu 2 grubunaynı yuvarlak masa etrafında birlikte çalışmaları gerekir ✓xOracle DBA Oracle Developer• DBA, ‘canım sıkıldı, biraz da kod yazayım’ diyerek başka bir şirkette Developerolarak 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 
  14. 14. 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 DesignDocument) 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 esinlenerekkendi 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ığı kodgeliş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 scriptleriniversiyonlar, 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,
  15. 15. 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, clearcase’e girilen yeni kodları end date sürelerinin bitimine kadar birkaç farklı durumdatest 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 vesaatte canlıya (production sisteme) alınır, o gün ve saatte geliştirmeyi yapandeveloper her ihtimale karşı hazırol’da bekler • Canlıya alım sırasında yaşanabilecek olası aksilikleri de gözönünde bulundurupdeveloper’ın ‘rollback plan’ ı da önceden hazırlaması gerekiyor.
  16. 16. Oracle Application Express (Oracle APEX)• Ücretsizdir,• İnternetin olduğu her yerde kendi db’inize erişebilir veyönetebilirsiniz, oldukça pratiktir,• Oracle APEX db’inize olan bağlantınız kolay kolaykesilmez,• 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 demovideo’muza bakalım...
  17. 17. - 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 DBSQL> conn sys / as sysdbaSQL> shutdown immediate;SQL> startup mount;cmd -> rman target /RMAN> BACKUP DATABASEPLUS ARCHIVELOG ALL;SQL> alter database open;MY DB (backup)Oracle Linux 6 on Vmware Virtual MachineTOAD for OracleWindows ClientLinux Database Server- listener.ora- tnsnames.ora(Oracle NetManager)http://ordba.blogspot.com/2013/03/installing-oracle-linux-release-6.html
  18. 18. ‘Vmware-Oracle.avi’ demo video’muzu izleyelim...
  19. 19. İ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 çokfazla yormamış oluruz, ‘iyi bir sql’den iyi bir plsql kodu çıkar’,• En basit ve kısa yoldan çözüme gidilmeli, karmaşık kodlamalardan uzakdurulmalı, sade ve anlaşılır olmalı,• Bugün için kod yazmayın, kodlarımız yıllar sonra da çalışabilecek kadar esnekolmalı,• 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 kendiyazdığı kodun testçisidir,
  20. 20. İ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 ifadelergetirme..vs. ) uyun,• Kodunuz, yarım saatten fazla sizi uğraştırıyor ve çözüme ulaşamıyorsanızmutlaka 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.),
  21. 21. ‘SVN-ClearCase.avi’ demo video’muzu izleyelim...
  22. 22. 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 plsqlbloğu kullanılabilir.
  23. 23. 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/.profilesqlplus -s /nolog << EOF > /dev/nullconnect ORHAN/PASSWORD@ORCLset verify off;set termout off;set feedback off;set pagesize 0;set heading offset long 40000SPOOL /tmp/orhan/all_users_tables_scripts.txtselect dbms_metadata.get_ddl(TABLE,u.table_name,u.owner) from dba_tables uwhere u.owner in(OERIPEK,ADEMIR,MCAN);set heading offset recsep offcol text format a80 word_wrapspool off;
  24. 24. 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
  25. 25. 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ırve dbms_output.put_line ile de çıktı sonucu ekrana yazılır.DECLAREvInHandle utl_file.file_type;vNewLine VARCHAR2(250);BEGINvInHandle := utl_file.fopen(ORHAN_DIR, a.xls, R);LOOPBEGINutl_file.get_line(vInHandle, vNewLine);dbms_output.put_line(vNewLine);EXCEPTIONWHEN OTHERS THENEXIT;END;END LOOP;utl_file.fclose(vInHandle);END fopen;/-------------------------------------------directory name : ORHAN_DIRfile name: a.xls
  26. 26. Çok Kullanışlı Karakter fonksiyonları:Birkaç işe çok yarar kod’u inceleyelim...
  27. 27. Bulk Collect:Hayat kurtarır...  çok daha kısa sürede milyonlarca datayı insert edebilirsiniz, zaman veperformans kazandırır...Birkaç işe çok yarar kod’u inceleyelim...
  28. 28. ‘Bulk Collect insert.avi’ demo video’muzu izleyelim...
  29. 29. UYGULAMA:Dinamik Plsql ile Partition/Subpartition ekleme, silmeDemo: Dinamik Plsql içerikli procedure’lerle örnek TABLO1 ve TABLO2tablolarına partition/subpartition ekleme, silme işlemi.• TABLO1 ve TABLO2 tabloları ve indexleri create edilir,• ADD_PART_SUBPART_.prc ve DROP_PART_SUBPART_.prcprocedure’leri create edilir,• RUN_ bach’leri ile istenilen partitionlar eklenir, silinir,
  30. 30. ‘Partition.avi’ demo video’muzu izleyelim...
  31. 31. ENCRYPTION & DESCRYPTIONDES : Data Encryption Standart’ın kısaltılması olan DES algoritması yaklaşık30 yıldır banka ve iletişim kurumlarının özellikle finansal işlemlerinde verigüvenliğinde kullanılmaktadır.3DES : Three-DES veya Triple DES olarak adlandırılır, BruteForce saldırılara karşı koymakta zorlanan DES algoritmasının üzerine 1978yı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 baytiç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ınortadaki 8 baytı ile çözülür. Son olarak anahtarın son 8 baytı ile şifrelenerek8 bayt bir blok elde edilir.
  32. 32. Avantajları:• Çift yönlü çalıştığından şifreli bir şekilde veriler saklanabilir, istenildiği zamangeri çağrılarak şifresi çözülebilir.• Bilgisayarın donanımsal açıklarını kapatır. (örnek: VPN, veri haberleşmeağ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 EncryptionStandard-Gelişmiş Şifreleme Standardı) şifreleme yöntemine göre 6 kat dahayavaş ç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.
  33. 33. • Telekomünikasyon (GSM) şirketlerinde de diğer kurumsal şirketlerde olduğu gibiabonelerine ait bilgilerin güvenliği ve korunması önemlidir, aksi halde BTK (BilgiTeknolojileri Kurumu)’nın cezalarına maruz kalınabilir.• GSM şirketlerinde aboneler isterlerse her ay otomatik olarak fatura ödemelerini kredikartı bilgilerini vererek mail-order sistemi ile tahsil edebiliyorlar. Tüm kredi kartbilgileri sisteme şifreli olarak gelir ve Oracle database’de şifreli olarak tutulur.• Oracle’ın veriyi kendi bünyesinde şifreleme ve çözmesi için kullandığı paketlerivardı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 ve3DES_2KEY) paketleri kullanılmaktadır. Ayrıca Oracle’da kolon, tablo veyatablespace’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...
  34. 34. Oracle’ın DES algoritması için kullandığı dbms_obfuscation_toolkit paketindekullanılan DESEncrypt ve DESDecrypt örneği;DECLAREinput_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;PRAGMAEXCEPTION_INIT(error_in_input_buffer_length, -28232);INPUT_BUFFER_LENGTH_ERR_MSG VARCHAR2(100) :=*** DES INPUT BUFFER NOT A MULTIPLE OF 8BYTES - IGNORING EXCEPTION ***;double_encrypt_not_permitted EXCEPTION;PRAGMAEXCEPTION_INIT(double_encrypt_not_permitted, -28233);DOUBLE_ENCRYPTION_ERR_MSG VARCHAR2(100) :=*** CANNOT DOUBLE ENCRYPT DATA - IGNORINGEXCEPTION ***;BEGINdbms_output.put_line(Raw input : ||UTL_RAW.CAST_TO_VARCHAR2(raw_input));BEGINdbms_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) THENdbms_output.put_line(Raw DES Encyptionand Decryption successful);END if;EXCEPTIONWHEN error_in_input_buffer_length THENdbms_output.put_line(INPUT_BUFFER_LENGTH_ERR_MSG);END;END;
  35. 35. PLSQL batch’ini çalıştırdığımızda sonuç aşağıdaki gibi olacaktır:Key olarak ‘gizlinumara’ ifadesini tanımladığımız kodumuzda şifrelenmesiniistediğimiz input değer olarak 8 karakter uzunluğunda örneğin ‘orhanorh’ifadesini girdim, öncelikle DESEncrypt fonksiyonu key’imiz ile inputdeğerimizi şifreliyor (Encrypt), ardından DESDecrypt fonksiyonu ile deşifrelenmiş (encrypted_raw) olan verimizi key’i de kullanarak aynı DESalgoritmasını kullanarak tersi yönde çözümlüyor.
  36. 36. Örnek GSM şirketinde kredi kartı şifreleme işlemi için Utility_Encdec paketinde3DES algoritması kullanılmıştır.credit_card_black_list tablosuna aboneye ait kredi kartı numarası insertedilirken aşağıda görüldüğü gibi şifrelenmiş olarak insert edilir;select * from credit_card_black_list
  37. 37. Bu şifrelenmiş olan kredi kartını sorgulayabilmemiz için aşağıdaki gibiutility_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ılankey saklı tutulmaktadır, bu key des3encrypt ve des3decrypt fonksiyonlarıtarafından kullanılmaktadır.
  38. 38. Kamran Agayev ve Ramin Orucov’a desteklerinden dolayı çoookTEŞEKKÜRLER!Sorularınız?Orhan ERİPEK

×