I downloaded SQLPLUS from Oracle:
http://www.oracle.com/technetwork/topics/winx64soft-089540.html
Basic Lite and SQL*Plus
I then fired up SQL*Plus:
c:\Program Files\Oracle\instantclient_12_1>sqlplus /nolog
SQL*Plus: Release 12.1.0.2.0 Production on Wed Apr 15 15:25:36 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
and tried to connect to a database:
connect user\password@hostname
and received the error message:
ERROR:
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA
What am I missing?
I ran the queries suggested by Jakub, I got
SQL> select sys_context('USERENV','SERVICE_NAME') from dual;
SYS_CONTEXT('USERENV','SERVICE_NAME')
--------------------------------------------------------------------------------
SYS$USERS
SQL> select sys_context('USERENV','SID') from dual;
SYS_CONTEXT('USERENV','SID')
--------------------------------------------------------------------------------
877
SQL>
By default, the listener. ora file is located in the ORACLE_HOME/network/admin directory.
The SID is a unique identifier that is used to distinguish this instance from other Oracle Database instances that you may create later and run concurrently on your system. The global database name is the full name of the database that uniquely distinguishes it from any other database.
The system identifier (SID) is a unique name for an Oracle database instance on a specific host. On UNIX and Linux, Oracle Database uses the SID and Oracle home values to create a key to shared memory. Application and Networking Architecture.
What is sid in Oracle. Oracle SID is the unique name that uniquely identifies your instance/database, whereas the Service name is the TNS alias that you give when you remotely connect to your database, and this Service name is recorded in tnsnames.
You're missing service name:
SQL> connect username/password@hostname:port/SERVICENAME
EDIT
If you can connect to the database from other computer try running there:
select sys_context('USERENV','SERVICE_NAME') from dual
and
select sys_context('USERENV','SID') from dual
I ran into the exact same problem under identical circumstances. I don't have the tnsnames.ora file, and I wanted to use SQL*Plus with Easy Connection Identifier format in command line. I solved this problem as follows.
The SQL*Plus® User's Guide and Reference gives an example:
sqlplus hr@\"sales-server:1521/sales.us.acme.com\"
Pay attention to two important points:
I found these good questions to detect service name via existing connection: 1, 2. Try this query for example:
SELECT value FROM V$SYSTEM_PARAMETER WHERE UPPER(name) = 'SERVICE_NAMES'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With