12154 with Perl Oracle DBD and instant client [message #385904] |
Wed, 11 February 2009 17:15 |
kwiqsilver
Messages: 1 Registered: February 2009
|
Junior Member |
|
|
I'm trying to connect to a remote oracle DB with a Perl script using DBI and the Oracle instant client and I get the 12154 error. I do not have a tnsnames or other configuration type file. Here's the relevant code:
$ENV{LD_LIBRARY_PATH} = "$ENV{LD_LIBRARY_PATH}://usr/lib/oracle/11.1/client64/lib/";
$ENV{ORACLE_HOME} = "/usr/lib/oracle/11.1";
my $dbh = DBI->connect("dbi:Oracle:$dbName\@$dbHost:$dbPort", $dbUser, $dbPass) or
die("DB Error '$DBI::errstr");
Output:
DBI connect('dbName@host:1521','user',...) failed: ORA-12154: TNS:could not resolve the connect identifier specified (DBD ERROR: OCIServerAttach) at ./cgi-bin/assigned.pl line 28
DB Error 'ORA-12154: TNS:could not resolve the connect identifier specified (DBD ERROR: OCIServerAttach) at ./cgi-bin/assigned.pl line 28.
A coworker is using the same connection values to connect via Python. I can telnet to the box on port 1521 (I don't know of any oracle commands I can run to verify that it is oracle that is listening on the port).
Client:
OS: RedHat Linux Enterprise 4.3
Oracle: InstantClient 11.1.0.7 basic and devel
Perl: 5.10
DBD::Oracle: 1.22
Server:
Unknown clearquest machine.
|
|
|
Re: 12154 with Perl Oracle DBD and instant client [message #385930 is a reply to message #385904] |
Wed, 11 February 2009 23:24 |
|
Michel Cadot
Messages: 68729 Registered: March 2007 Location: Saint-Maur, France, https...
|
Senior Member Account Moderator |
|
|
ORA-12154: TNS:could not resolve the connect identifier specified
*Cause: A connection to a database or other service was requested using
a connect identifier, and the connect identifier specified could not
be resolved into a connect descriptor using one of the naming methods
configured. For example, if the type of connect identifier used was a
net service name then the net service name could not be found in a
naming method repository, or the repository could not be
located or reached.
*Action:
- If you are using local naming (TNSNAMES.ORA file):
- Make sure that "TNSNAMES" is listed as one of the values of the
NAMES.DIRECTORY_PATH parameter in the Oracle Net profile
(SQLNET.ORA)
- Verify that a TNSNAMES.ORA file exists and is in the proper
directory and is accessible.
- Check that the net service name used as the connect identifier
exists in the TNSNAMES.ORA file.
- Make sure there are no syntax errors anywhere in the TNSNAMES.ORA
file. Look for unmatched parentheses or stray characters. Errors
in a TNSNAMES.ORA file may make it unusable.
- If you are using directory naming:
- Verify that "LDAP" is listed as one of the values of the
NAMES.DIRETORY_PATH parameter in the Oracle Net profile
(SQLNET.ORA).
- Verify that the LDAP directory server is up and that it is
accessible.
- Verify that the net service name or database name used as the
connect identifier is configured in the directory.
- Verify that the default context being used is correct by
specifying a fully qualified net service name or a full LDAP DN
as the connect identifier
- If you are using easy connect naming:
- Verify that "EZCONNECT" is listed as one of the values of the
NAMES.DIRETORY_PATH parameter in the Oracle Net profile
(SQLNET.ORA).
- Make sure the host, port and service name specified
are correct.
- Try enclosing the connect identifier in quote marks.
See the Oracle Net Services Administrators Guide or the Oracle
operating system specific guide for more information on naming.
Regards
Michel
|
|
|