Oracle Wrap Utility, Plsql Code Wrap

PLSQL ile WRAP işlemleri

Plsql kodlarımızı wrap utility ile şifreleyebilir, okunurlugunu engelleyebiliriz. Bunun için oracle’ın wrap adında bir özelliği var.Wrap oracle kurulumla default olarak geliyor. Wrap utility oracle_home altında BIN klasörü içinde bulunuyor.Plsql procedure,fonksiyon,trigger,paketler de dahil olmak  üzere plsql kodları wrap edebiliriz.

-Wrap utility

Genel Kullanımı: (ms dos ya da linux terminal ekranında)

WRAP INAME=NORMAL_CODE.sql ONAME=WRAPPED_CODE.sql

INAME   = Input dosya ismi(Normal kodların yazılı olduğu dosya)
ONAME = Output dosya ismi(Kripto edilmiş kodların yazılı oldugu dosya)

Eğer output dosya belirtmezseniz INAME’le aynı isim ve plb uzantıyla aynı dizine output dosyası oluşturur.

WRAP INAME=NORMAL_CODE.sql

Processing C:/NORMAL_CODE.SQL to C:/NORMAL_CODE.plb
Örnek için basit bir fonksiyonumuz olsun..

SQL>CREATE OR REPLACE FUNCTION is_number( p_str IN VARCHAR2 )
RETURN NUMBER IS
l_num NUMBER;
BEGIN
l_num := to_number( p_str );
RETURN 1;
EXCEPTION
WHEN others THEN
RETURN 0;
END is_number;

Fonksiyonumuzu NORMAL_CODE.sql isimli dosyaya yazıp wrap ile encrypt edelim..

WRAP INAME=NORMAL_CODE.sql ONAME=NORMAL_CODE.plb

Processing C:/NORMAL_CODE.SQL to C:/NORMAL_CODE.plb
Plb dosyamızı bir metin editörüyle açarak direk database’de çalıştırabiliriz..

SQL>CREATE OR REPLACE FUNCTION is_number wrapped
a000000
b1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
8
b6 d2
882D9WqMpClp5XuAO9MWz7/YgLowg+nwLcsVfHSiWE6UeCWyBPQEg3BaFLjFSTdI98gEe4n7
27W3GAmnt+TPI79aflFOX/mNLLvun6rRs4svREpSJpW0o99NjsqOt3xXkP3TQ+Y1sHHi9BE9
ULMIWcTaok+dnU/CJapyo9X8dA2GMGvqDHQsYqFn+vPXPVwmmxzRWXvtzqbqzdHb
 
/

Fonksiyonumuzu edit edip bakarsak wrapped oldugunu görürüz.
Is_Number Fonksiyonumuzu çalıştıralım.Sorunsuz çalışıyor.

SELECT is_number('A') sayimi FROM DUAL;
sayimi
------
0

-dbms_ddl.wrap fonksiyonu ile wrap etmek:

Kodlarımızı wrap etmek için 2. bir yöntemde dbms_ddl paketindeki wrap fonksiyonunu kullanabiliriz.Hatta bu fonksiyonu kullanarak verdiğimiz kodu wrap edip geri döndüren bir fonksiyon yazalım.Dbms_outputla ekrana bastırabiliriz, zaten fonksiyonumuz da kodun wrap edilmiş halini geri döndürecek.

SQL>CREATE OR REPLACE FUNCTION plsql_code_wrap(vNormalCode IN VARCHAR2)
RETURN VARCHAR2 IS
vWrappedCode varchar2(4000);
begin
vWrappedCode := dbms_ddl.wrap(vNormalCode);
dbms_output.put_line('<<--- Normal Code --->>');
dbms_output.put_line(vNormalCode);
dbms_output.put_line('<<--- Wrapped Code --->>');
dbms_output.put_line(vWrappedCode);
RETURN vWrappedCode;
END plsql_code_wrap;

Fonksiyonumuzu test edelim.

SELECT PLSQL_CODE_WRAP('CREATE OR REPLACE FUNCTION is_number(p_str IN VARCHAR2)RETURN NUMBER IS l_num NUMBER;BEGIN l_num:=to_number(p_str);RETURN 1;EXCEPTION WHEN others THEN RETURN 0;END is_number;') FROM DUAL;

Fonksiyonun sonucu bizim wrap edilmiş kodumuz(wrapped is_number fonksiyonu):

CREATE OR REPLACE FUNCTION is_number wrapped
a000000
369
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
8
9d c2
5tPRLv8balhiFN3XHI6Kqo2glGEwg8eZgcfLCNL+XoVWSnLV1y7yYiXn4yjLvQml0l7nx3TA
M7h0ZSV0wLK9sptepZmBMsBElzbVztsdMWm8DbcK2ml/VIWX39skHGZ0f2Drq+WxUIMqFTEq
pn5cUwcKT6yq4wf2aUvm5+OyXAtwzfzB4SEcJ6wqHaYW91ap

Fonksiyondan dönen wrap edilmiş is_number fonksiyonu kodunu doğrudan database’de çalıştırabiliriz..

Tagged: , , , , , , , , , ,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir