Merhaba Arkadaşlar,
Bu yazımda sizelere “WRAP” aracının ne olduğunu? PL/SQL kodlarımızı bu araç ile nasıl gizleyebileceğimizi anlatacağım. Oracle, yazdığı paketlerin (internal packages olarak bilinir) içeriğini wrap ile gizlemektedir. Mesela DBMS ile başlayan DBMS_JOB, DBMS_SCHEDULE, v.s paketlerin body kısmını görmek istediğimizde aşağıdaki gibi gizlenmiş olarak görmekteyiz.
01 | 
 CREATEORREPLACE PACKAGE BODY SYS.dbms_job wrapped | 
 
11 | 
  lo1iuGKabyEptQ7AYEgtdK75BmEwg5Wr3l4FYKAPamS0YVj3PRYchH0hld1fVjvwrMuAW69P | 
 
12 | 
  IRpr66AU9anSde7G/s0SEqGnRq1lMtPIv5oS+LkLjWMsdviZ/8mTU+AsGapF4qqdz3JR4PZt | 
 
13 | 
  fzqcP2JOVo84jcefz+RAsEnvMxsTLRYBAxaBTlykY2wPpW6+XqZvj/lmCFhU18E/3TEWpRQb | 
 
14 | 
  5qZckusO2rpG787GwuV+s2zCeeXxFg4vs4uaQo05AYljfhxjOKSSbLg3TUk/VlckCE6PhXK/ | 
 
 
 
Bizde Oracle kurulumu ile gelen “WRAP” aracını kullanarak yazdığımız procedure, function veya paketleri gizleyebiliriz. Oracle 10g R2 ile birlikte DBMS_DDL paketi yardımı ile de dinamik kod gizleme işlemi yapabiliriz. WRAP komutu işletim sistemi üzerinde çalışan bir araçtır. Kullanım prototipi aşağıdaki gibidir.
1 | 
 wrap iname=input_file  oname=output_file | 
 
 
 
Burada iname, bizim içeriğini gizleyeceğimiz PL/SQL kod bloğudur. Oname ise gizlenmiş kod bloğunun kaydedileceği dosya adıdır. Oname belirtmeyebiliriz. Bu durumda source kodun bulunduğu dosya adı(input_file) “.plb” uzantısıyla kaydedilir. Aşağıdaki gibi bir prosedürümüz olsun. Ve “WRAP” aracını kullanarak içeriğini gizleyelim.
1 | 
 CREATEORREPLACEPROCEDUREtalip_test  AS | 
 
3 | 
   DBMS_OUTPUT.PUT_LINE('Test proseduru'); | 
 
 
 
Yukarıdaki prosedürü talip_test.sql adıyla işletim sistemi üzerine kayıt edelim. “WRAP” ile içeriğini aşağıdaki gibi gizleyelim.
1 | 
 $ wrap iname= talip_test.sql | 
 
2 | 
 PL/SQL Wrapper: Release 11.2.0.1.0- Production  on Thu Mar 10 13:50:13 2011 | 
 
3 | 
 Copyright (c) 1993, 2009, Oracle.   All rights reserved. | 
 
4 | 
 Processing talip_test.sql  to talip_test.plb | 
 
 
 
talip_test.plb isimli gizlenmiş kod bloğumuz oluştu. Bir editör ile baktığımızda içeriği aşağıdaki gibidir.
01 | 
 CREATEORREPLACEPROCEDURE talip_test wrapped | 
 
21 | 
  BnIWMXkTu2kwu8RXi1DM+jgMrZUwg5nnm7+fMr2ywFwWoUf6VuOWoWLRzLh0i8DAMv7Shglp | 
 
22 | 
  uFKbskr+KLK957KzHQYwLK4k6rKBL8jlrFHkBneJJVEJMi720eokH/Y5pqcyH4I= | 
 
 
 
Gizlenmiş yukarıdaki kodu veritabanına direk deploy edebiliriz. Deploy ettikten sonrada problemsiz kodumuzu aşağıdaki gibi çalıştırabiliriz.
Talip Hakan ÖZTÜRK