вторник, 3 февраля 2009 г.

Установка клиента ORACLE

$nano /etc/apt/sources.list

deb http://oss.oracle.com/debian unstable main non-free


$wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -

$ sudo apt-get update
$ sudo apt-get install oracle-xe-client

$sudo nano /etc/profile
добавляем:

export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client
export NLS_LANG=AMERICAN_AMERICA.UTF8
#export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export SQLPATH=$ORACLE_HOME/sqlplus
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib


Внимание!
На самом деле, если у вас Oracle установлен мо умолчанию, то переменную NLS_LANG лучше записать как вывод скрипта nls_lang.sh,
Код:
export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`

но часто NLS_LANG не соответствует стандартным региональным настройкам. Например у меня это AMERICAN_AMERICA.

Далее настраиваем алиасы:
sudo nano /etc/tnsnames.ora

MYSRV =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.7)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = MYSERVICE)
)
)


Ставим редство управления "Tora"
Дело в том, что просто установить тору из репозитария - это мало. По умолчанию она не подключиться к ораклу, так как не будет в своем составе иметь нужного провайдера.
Ее нужно скомпилировать.
Если у вас указаны все необходимые переменные, о которых идет речь выше, то при сборке Make-файла все произойдет автоматом, руками ничего указывать не надо.

$apt-get build-dep tora
$apt-get source tora


PERL

Для написаний скриптов на PERL - необходимо установить соответствующие модули: DBI и DBD.

с DBI проблем не возникнет, он ставиться из репозитария
Код:
sudo apt-get -nstall libdbi-perl


С DBD сложнее:
Под рутом

#perl -MCPAN -e shell

cpan> get DBD::Oracle
cpan> quit


$cd /root/.cpan/build<каталог с исходниками>
$Makefile.PL
$make
$make install


Пример работы

#!/usr/bin/perl

$oracle_server="server";
$oracle_listener="listener";
$oracle_sid="SID";
$oracle_port="PORT";
$oracle_user="user";
$oracle_password="password";
$oracle_testing_table="TABLE";

use DBI;
use DBD::Oracle;
use utf8;
binmode(STDIN, ':utf8');
binmode(STDOUT, ':utf8');


my $dbh = DBI->connect("dbi:Oracle:host=$oracle_server;port=$oracle_port;sid=$oracle_sid",
$oracle_user, $oracle_password)
or die "Impossible de se connecter &覘 la base Oracle : " . DBI->errstr;

my $sth = $dbh->prepare("SELECT * FROM $oracle_testing_table")
or die "Impossible de preparer la requette: " . $dbh->errstr;

$sth->execute()
or die "Impossible d'ex&覡cuter la requette: " . $sth->errstr;

while ( my @data = $sth->fetchrow_array() )
{
my $firstname = $data[1];
my $id = $data[2];
print "\t$id: $firstname $lastname\n";
}

if ($sth->rows == 0)
{
print "Table vide\n";
}

$sth->finish;

$dbh->disconnect;

Комментариев нет:

Отправить комментарий