Question

I need to connect to an Oracle database from a perl script, it works in my tests and when using sqlplus, but not in production. This is a summary of the situation:

Oracle 11g XE (11.2.0.2.0) : (Test environment)
   sqlplus : OK
   perl    : OK

Oracle 11g    (11.2.0.4.0) : (Production environment)
   sqlplus : OK
   perl    : ERROR

The error reported is: Connect failed because target host or object does not exist

I have triple checked the connection settings and are not mistaken.

Specifics:

  • Test Server: Windows Server 2012
  • Production Server: Windows Server (Unknown version)
  • Client: Ubuntu 18.04 x64
  • Perl: 5.26.1
  • SQL*Plus: 12.2.0.1.0

SQL*Plus command:

sqlplus64 user/password@192.168.0.1/db_sid

Perl script:

#!/usr/bin/perl
use DBI;
$driver = "Oracle";
$sid    = "db_sid";
$host   = "192.168.0.1";
$dsn    = "DBI:$driver:sid=$sid;host=$host";
$dbh    = DBI->connect($dsn, "user", "password");

Note: I won't be able to test or execute anything in the production environment until next month.

What could be the issue?

Was it helpful?

Solution

The connection string format is wrong. Use

$dsn = "DBI:$driver:$host/$sid";
Licensed under: CC-BY-SA with attribution
Not affiliated with dba.stackexchange
scroll top