Hi,
I have problems connecting to an Oracle-DB through apache2. A test
script, that works fine when run directly from the shell, fails to
connect to the Orcacle DB, when run through apache. As far as I can see,
the SID is not passed to the DB server.
.....................................
The foolowing message is found in the error log:
[Thu Aug 15 09:25:46 2002] [error] 27824: ModPerl::Registry:
`DBI->connect(sun1) failed: Error while trying to retrieve text for
error ORA-12505 (DBD ERROR: OCIServerAttach) at
/server/apache-dev/perl/test-oracle line 23
'
.......................................
the log file of the Oracle listener on the DB box ahows:
15-AUG-02 09:25:46 *
(CONNECT_DATA=(SID=*)(SERVICE_NAME=sun1.)(CID=(PROGRAM=)(HOST=ollenhauer)(USER=www-adm)))
* (ADDRESS=(PROTOCOL=tcp)(HOST=172.22.250.27)(PORT=53048)) sh * * * 0
......................................
The following versions are used:
apache 2.0.39
mod_perl: 1.99_04
DBI: 1.30
DBD-Oracle: 1.12
.................
#sample script:
#!/usr/local/bin/perl -w
BEGIN {
$ENV{ORACLE_HOME} = '/opt/oracle/app/product/8.1.6';
$ENV{ORACLE_SID} = 'SPD';
}
use CGI;
use DBI;
my $db_name = 'dbi:Oracle:sun1';
my $db_user = 'webuser';
my $db_pass = 'topsecret';
my $q=CGI->new;
my $dbh = DBI->connect($db_name, $db_user, $db_pass,
{LongReadLen => 65534,
RaiseError => 1,
AutoCommit => 0});
my $query = q{
SELECT count (*)
FROM asdb_mgr.stammdaten14
WHERE bis is null };
my $sth = $dbh->prepare($query);
my $rc = $sth->execute();
my $count = $sth->fetchrow_array;
print $q->header;
print "Anzahl der SPD-MdBs: $count\n";
$sth->finish;
$dbh->disconnect;
...............................
httpd.conf:
Alias /perl /server/apache-dev/perl
<IfModule mod_perl.c>
PerlRequire "/server/apache-dev/conf/perl-startup.pl"
<Location /perl>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
</Location>
</IfModule>
......................................
perl-startup.sh:
# file:perl-startup.pl
# ---------------
use Apache2 ();
use Apache::compat ();
use lib qw(/server/apache-dev/perl/);
use ModPerl::Util ();
use Apache::RequestRec ();
use Apache::RequestIO ();
use Apache::RequestUtil ();
use Apache::Server ();
use Apache::ServerUtil ();
use Apache::Connection ();
use Apache::Log ();
use APR::Table ();
use ModPerl::Registry ();
use Apache::Const -compile => ':common';
use APR::Const -compile => ':common';
1;
..........................................
Thanks,
Fredo
--
Dr. Fredo Sartori Tel. 030-227-55061
SPD-Fraktion im Deutschen Bundestag FAX 030-227-56169
Platz der Republik e-mail: [EMAIL PROTECTED]
11011 Berlin