Да, вы можете использовать DBI и DBD :: Oracle .
Однако есть некоторые ошибки с Oracle. Я помню несколько забавных игр и игр с Oracle 8, поэтому они могут больше не применяться, но в некоторых случаях для этого требовалось установить переменные ENV, такие как ORACLE_HOME, ORACLE_BASE & ORACLE_SID.
В DBD :: Oracle doc упоминается еще одна переменная ENV TWO_TASK. Так что заставить его работать, может зависеть от ....
- какая версия Oracle у вас установлена
- есть ли у вас прослушиватель (который, я думаю, вам нужен для доступа к сети, такой как CGI?)
- какую версию SQL * Net вы используете.
Кажется пугающим, но все, что вам, вероятно, понадобится, это добавить эти переменные ENV в веб-сервер (iPlanet был тем, что я использовал в то время). В качестве альтернативы из DBD :: Oracle doc он дает ...
BEGIN {
$ENV{ORACLE_HOME} = '/home/oracle/product/10.x.x';
$ENV{TWO_TASK} = 'DB';
}
$dbh = DBI->connect('dbi:Oracle:','scott', 'tiger');
# - or -
$dbh = DBI->connect('dbi:Oracle:','scott/tiger');
PS. Вышеприведенное предполагает, что вы запускаете скрипт CGI на том же сервере, что и Oracle! Если нет, то эти переменные ENV излишни, и вы можете просто сделать это (извлечено из моего старого скрипта!) ...
my $db = DBI->connect("dbi:Oracle:host=$host;sid=$database", $user, $pass,
{ RaiseError => 0, PrintError => 0 } )
or croak( "Unable to connect to DB - $DBI::errstr" );
Однако я вспоминаю о необходимости настроить что-то вроде TNLISTENER.CONF на сервере Oracle (это было несколько лет назад, так что память немного меня подводит!), И я почти уверен, что вам нужно скачать клиентскую библиотеку Oracle (которую можно получить с их сайта).