Would you like to react to this message? Create an account in a few clicks or log in to continue.

wep hack site hack msn hack


2 posters

    Perl ile Veritabanı Programlama....

    KraLBeLa
    KraLBeLa


    Mesaj Sayısı : 26
    Kayıt tarihi : 28/02/10

    Perl ile Veritabanı Programlama.... Empty Perl ile Veritabanı Programlama....

    Mesaj  KraLBeLa Ptsi Mart 01, 2010 7:48 am

    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.


    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


    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 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.







    DBI ve DBD-Oracle
    Bu modülleri








    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::errstr\n";
    if ($dbh) {print "OK\n"};


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


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


    print"\n\n";
    print"USERNAME USERID CREATED\n";
    print"========== ========== ==========\n";
    while (@row = $sth->fetchrow_array()) {
    printf "%-10s %-10s %-10s\n", @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:Oracleracle9',$userpass) seklinde de olabilir.
    3.DBD-Oracle modülünün dökümantasyonunu yine asagidaki linkten bulabilirsiniz:







    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#
    areatürk
    areatürk
    Admin


    Mesaj Sayısı : 16
    Kayıt tarihi : 28/02/10

    Perl ile Veritabanı Programlama.... Empty Geri: Perl ile Veritabanı Programlama....

    Mesaj  areatürk Ptsi Mart 01, 2010 11:30 am

    +++ repini verdim Smile

      Forum Saati Çarş. Mayıs 15, 2024 1:50 am