Jul122010

Apache ve mod_owa kurarak Oracle'a internetten erişmek

Published by admin at 6:43 AM under

Oracle dünyası bir okyanus gibi, öğren öğren bitmiyor. 
Şimdi Oracle ın mod_plsql yöneti ile oracle içindeki paketlerini birer web sayfası gibi nasıl çağırabileceğinizi anlatacağım. bunun için Oracle App.Server yada web server olarak Apache kurmanız ve içine mod_owa modülünü implemente etmeniz gerekmektedir.
Bunu evdeki bilgisayarında denemek için apache ve oracle express edition kurmanız yeterli olacaktır. İlla ki kocaman bir oracle server ve app. server kurmanız gerekmemektedir. :)

 

Apache serverı bu linkten indirebilirsiniz. http://httpd.apache.org/download.cgi.

Daha sonra Apache PL/SQL Gateway Module yani mod_owa yı burdan indirebilirsiniz. http://oss.oracle.com/projects/mod_owa/dist/documentation/modowa.htm.
“Zip file for Windows” linki tıklayarak windows verisyonunu indirebilirsiniz.


İndirdiğimiz apache detupının adı buna benzer bişeyler olacaktır  apache_2.2.9-win32-x86-no_ssl-r2.msi ve ilk gelen ekranda aşağıdaki gibidir.

 

Next dedikten sonra bizde kullanıcı bilgileri istiyecektir, bunları kendi sisteminize uygun bir şekilde
yazabilirsiniz.

 

 



Burda dikkat edilmesi gereken önemli bir nokta kurulumu 80. porta yapmalısınız. yada daha sonra config dosyasından
manuel olarak değiştirebilirsiniz.
Çünkü oracle XE ile gelen application Express programı 8080 protunu kullanır.


Daha sonra standart kurulumu seçerek devam edebilirsiniz , kurulacak path olarak C:\httpd\gösterebilirisiniz.
Burda gösterdiğiniz yer önemlidir, daha sonra mod_owa modülünüde oraya kuracağız.

Kurulum başarıyla bittikten sonra web browserınızda localhost yapdığınızda bu görüntü geliyorsa eğer
kurulum başarıyla bitmiştir demektir.

 

Şimdi de indirdiğimiz mod_owa dll inini C:\httpd\modules\ 'e kopyalayabiliriz.
daha sonra ayarları yapmak için c:\httpd\conf\httpd.conf dosyasını her hangi bir editör ile
açıp içine gerekli satırları eklemeliyiz.
Burda dikkat etmemiz gereken şey OwaUserId olan kısım database bağlantı bilgilerinizdir.
Location kısmıda kullanıcı browsera nasıl bir adres yazacak onu belirtir.

 

LoadModule owa_module modules/mod_owa.dll

<Location /selim>
AllowOverride None
Options None
SetHandler owa_handler
OwaUserid test/test@xe2
OwaNLS WE8ISO8859P1
OwaDiag COMMAND ARGS CGIENV POOL SQL MEMORY
OwaLog "logss/mod_owa.log"
OwaPool 20
OwaStart "doc_pkg.homepage"
OwaDocProc "doc_pkg.readfile"
OwaDocPath docs
OwaUploadMax 10M
OwaCharset "iso-8859-1"
order deny,allow
allow from all
</Location>


Yukarıdaki bu ayarlar oracle application server içinde Oracle Document Access Descriptor (DAD) kısmında
kısmında yapılmaktadır. Ama biz sadece apache kurduğumuz için burda yapıyoruz.
Apache yi restart ettikten sonra mod_owa modulu sisteme yüklenmiş olur.
Artık Oracleda ihtiyaçımız olan paketi yazabiliriz.

Bunun için basit bir örnek yapacak olursak eğer aşağıdaki SQL sistem hakkında bazı bilgileri bize döndürmektedir

SELECT INITCAP(LOWER(object_type)) type, COUNT(*) count
FROM all_objects
GROUP BY object_type;

Aşağıdaki bilgileri döndürmektedir.



Biz bu bilgileri bir web sayfası şekline oracle dışında bir yerden görmek istersek eğer
basit bir procedure yazmamız gerekmektedir.

Bu procedure'ü database bağlanıp yarattıktan sonra

CREATE OR REPLACE PROCEDURE test_page IS
CURSOR get_data IS
SELECT INITCAP(LOWER(object_type)) type, COUNT(*) count
FROM all_objects
GROUP BY object_type;
BEGIN
htp.p('<table border="1">');
htp.p('<tr><th>Type:</th><th>Count:</th></tr>');
FOR i IN get_data LOOP
htp.p('<tr><td>'||i.type||'</td><td>'||i.count||'</td></tr>');
END LOOP;
htp.p('</table>');
END test_page;

/

Web browserdan http://localhost/selim/test_page dediğimiz zaman bir bir web sayfası dönecektir.
Artık bunun gibi ihtiyacımız olan herşeyi oracle içinde select edip dış dünyaya web sayfası şeklinde gösterebiliriz,
kullanıcıdan bilgiler alıp bu bilgileri işleyebilirsiniz.

 

 

 

 

windows_all.zip (870.88 kb)



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Tags: , ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 0 Responses