Haber - Bilgi Paylasımı

hbrf1

Perl İle Veritabanı Programlama

Unix ve Linux sistemler genelde text tabanli yönetildigi icin (telnet ya da rlogin) komut isteminde (shell) calistirabileceginiz perl tabanli “script” ler kullanmak cok pratiktir. Özellikle de zaten text dosya, log ya da benzer isler icin perl kullaniyorsaniz buna ek olarak veritabanina baglanip belarli sorgulari otomatik olarak calistirmak mümkün. Bir de rutin olarak ya da problemleri analiz etmek amaciyla yaptigimiz veritabani sorgulamalarini da sql arabirimi (sqlplus, dbaccees, mysql vs.) yerine bu sorgulari bir perl programina yaptirip daha güzel formatlamak daha pratik ve düzenlidir.

Neden Perl ile Veritabanina baglanayim?

Unix ve Linux sistemler genelde text tabanli yönetildigi icin (telnet ya da rlogin) komut isteminde (shell)  calistirabileceginiz perl tabanli “script” ler kullanmak cok pratiktir. Özellikle de zaten text dosya, log ya da benzer isler icin perl kullaniyorsaniz buna ek olarak veritabanina baglanip belarli sorgulari otomatik olarak calistirmak mümkün. Bir de rutin olarak ya da problemleri analiz etmek amaciyla yaptigimiz veritabani sorgulamalarini da sql arabirimi (sqlplus, dbaccees, mysql vs.) yerine bu sorgulari bir perl programina yaptirip daha güzel formatlamak daha pratik ve düzenlidir.

Örnek kullanim sekilleri neler?

Veritabaninda;
-kullanicilarin listesi (test.pl)
-tablespace lerin listesi ve bos alan miktari
-extent sayilari
-datafile larin listesi
-temp kullanim orani
-tablolari belarli formatta export etmek

Bütün bunlari tabii ki grafik tabanli “Database management” (Enterprise manager, Toad vs.) sistemleriyle de yapabilirsiniz tabii ki ama yukarida da belirttigim gibi ufak ve rutin olarak yapilan isler cin perl kullanmak bircok avantaj getirecektir.

 

Her bir kriter icin bir parametre tanimlayip tek bir perl programiyla yazilabilir. Temel olarak bütün DML (data manipulation language, select, delete, update vs.) ve DDL (data definition language, create, drop, alter vs.) ler calistirilabilir.

Daha fazla teorik bilgi vermek yerine hemen kuruluma baslamakta yarar görüyorum.

Perl programlama dilini az cok taniyanlar modül kavramina yabanci degillerdir. Bir veritabanina perl ile baglanmak icin en cok kullanilan modül DBI modülüdür ve bircok veritabanina baglanma imkani saglar ve veritabanindan bagimsizdir. Biz bu örnekte bir oracle veritabanina baglanacagiz. Diger veritabanlarina baglanmak da cok farkli degil.

Bu yaziyi 2 bölüm halinde sunmak istiyorum. Bu bölümde daha cok kurulum ve temel ögelerden bahsedecegim. 2. bölümde ise daha cok kullanim alanlarina iliskin örnekler bulabileceksiniz.

  1. Gerekli Sistem, Modül ve Programlar

 

Perl 5.6.1 (tavsiye edilen 5.8.X)
Perl DBI-1.50
Perl DBD-Oracle-1.17
Oracle Database Server (8,9 ya da 10)
Linux

  1. Kurulum

 

Hangi isletim sistemlerinden baglanabilirim?
Perl ve Oracle in destekledigi her türlü isletim sisteminden oracle a perl ile baglanmak mümkündür. Perl ün acik kaynak kodlu olmasindan dolayi en cok Linux sistemlerde kullanildigi bir gercek olmakla beraber cok yaygin olarak UNIX sistemlerde de kullanilmaktadir.

Perl 5.6.1 (tavsiye edilen 5.8.x)
Linux sisteminize „root“ kullanicisi ile giris yapin ve „perl –v“ komutunu calistirin, bu sekilde perl ün yüklü olup olmadigini , yüklüyse hangi versiyonun oldugunu ögrenmis olursunuz

Perl sisteminizde yüklü ise “perl –v“ komutu su sekilde calisacaktir :

lnxsrv:~# perl -v

This is perl, v5.6.1 built for i386-linux

Copyright 1987-2001, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'.  If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.

Eger perl yüklü degilse komut suna benzer sekilde hata verecektir :
lnxsrv:/oracle# perl -v
bash: perl: command not found
lnxsrv:/oracle#

Yüklemek icin Linux dagitiminiza uygun CD ya da paket türünden (rpm, deb, vs.) perl ü kurun (en az 5.6.1). Perl genelde bütün Linux sistemlerde standart kurulumla yüklenen paketlerin arasindadir.
Oracle Client ya da Server in yüklü oldugundan emin olun. Yüklü degilse oracle kullanicisi olusturup kurlumu yapin.

http://www.oracle.com/technology/software/products/oracle9i/htdocs/linuxsoft.html

 

DBI ve DBD-Oracle

Bu modülleri

http://search.cpan.org/~timb/DBI-1.50/DBI.pm

http://search.cpan.org/~pythian/DBD-Oracle/Oracle.pm

sayfalarindaki linklerden ücretsiz indirip Linux sisteminizde /tmp ye  kopyalayin. Ilk olarak DBI-1.50.tar.gz dosyasini asagidaki komutlarla acip kurun :

cd /tmp
tar zxvf DBI-1.50.tar.gz
cd DBI-1.50

ÖNEMLI: README yi okumadan gecmeyin (genel kural)  J

perl Makefile.PL
make
make test
make install

(Oracle in /oracle da kurlu oldugunu kabul edersek)
export ORACLE_HOME=/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/bin:$LD_LIBRARY_PATH
export ORACLE_SID=oracle9
export ORACLE_USERID=scott/tiger
export PATH=$ORACLE_HOME/bin:$PATH

“sqlplus $ORACLE_USERID” komutuyla basarili bir sekilde girip sorgu yapabiliyorsaniz bundan sonraki adimlar icin isinizi kolaylastiracaktir.
Daha sonra DBD-Oracle modülünü kurun

cd /tmp
tar zxvf DBD-Oracle-1.17.tar.gz
cd DBD-Oracle-1.17

ÖNEMLI: README yi okumadan gecmeyin (genel kural)  J

perl Makefile.PL
make
make test
make install

 

Bu komutlar sirasinda bazi hatalar almaniz normaldir, önemli olan bütün komutlarin sonuna kadar calisip calismadigidir. “make install” den sonra artik perl Oracle veritabanina baglanmaya hazir demektir. Hemen asagidaki kücük programla herseyin eksiksiz kuruldugundan emin olun (asagidaki kodu son satira kadar bir dosyanin icine kopyalayip kaydedin (test.pl).

#!/usr/local/bin/perl -w

use DBI;
use DBD::Oracle;

$userpass = 'system/manager';

print "n";
print "Connecting to "'dbi:Oracle:',$userpass"........";
$dbh = DBI->connect('dbi:Oracle:',$userpass) ||
die "Error connecting $DBI::errstrn";
if ($dbh) {print "OKn"};

 $sql="select USERNAME, USER_ID ,CREATED from dba_users";

  $sth = $dbh->prepare("$sql");
$sth->execute();

   print"nn";
print"USERNAME   USERID     CREATEDn";
print"========== ========== ==========n";
while (@row = $sth->fetchrow_array()) {
printf "%-10s %-10s %-10sn", @row;
}
$sth->finish;
$dbh->disconnect;

# son satir

1.sisteminize uygun user ve password girin
2.”test.pl” connect string inde ORACLE_SID belirtilmedigi icin $ORACLE_SID gecerli olacaktir ($dbh = DBI->connect('dbi:Oracle:',$userpass), yani connect stringiniz $dbh = DBI->connect('dbi:Oracle:oracle9',$userpass) seklinde de olabilir.
3.DBD-Oracle modülünün dökümantasyonunu yine asagidaki linkten bulabilirsiniz:

http://search.cpan.org/~pythian/DBD-Oracle/Oracle.pm

 

Dosyaya calistirilabilir hakki (chmod +x test.pl) verin. “test.pl” i calistirmadan önce ORACLE_HOME, ORACLE_SID, LD_LIBRARY_PATH ve PATH in (environment variables) dogru olup olmadigini control edin (örn. echo $ORACLE_SID, vs.)

lnxsrv:/oracle# echo $ORACLE_SID
sr4
lnxsrv:/oracle#

“test.pl” programinin ciktisi asagidakine benzer olacaktir :
lnxsrv:/oracle# ./test.pl

Connecting to "'dbi:Oracle:',system/manager"........OK

 

USERNAME   USERID     CREATED
========== ========== ==========
SYS        0          14-OCT-02
SYSTEM     5          14-OCT-02
OUTLN      11         14-OCT-02
DBSNMP     16         14-OCT-02
TRACESVR   19         14-OCT-02
FORSMGR    20         15-OCT-02
ODBC       21         15-OCT-02
ATOSODBC   22         15-OCT-02
lnxsrv:/oracle#

 

Eger asagidakine benzer bir hata aliyorsaniz büyük ihtimalle DBD kurulumunuzda bir hata olusmustur :
lnxsrv2:/tmp# ./test.pl
Can't locate DBD/Oracle.pm in @INC (@INC contains: /usr/local/lib/perl/5.6.1 /usr/local/share/perl/5.6.1 /usr/lib/perl5 /usr/share/p
erl5 /usr/lib/perl/5.6.1 /usr/share/perl/5.6.1 /usr/local/lib/site_perl .) at ./test.pl line 4.
BEGIN failed--compilation aborted at ./test.pl line 4.
lnxsrv2:/tmp#

En kisa zamanda yazinin 2. bölümünde görüsmek üzere…


Kaynak:TeknoHaber

Bugün 10 ziyaretçi (34 klik) kişi burdaydı!

Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol