OracleからSQLPLUSをダウンロードしました。
http://www.Oracle.com/technetwork/topics/winx64soft-089540.html
Basic LiteおよびSQL * Plus
次に、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.
データベースに接続しようとしました:
connect user\password@hostname
エラーメッセージを受け取りました:
ERROR:
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA
私は何が欠けていますか?
Jakubによって提案されたクエリを実行しました。
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>
サービス名がありません:
SQL> connect username/password@hostname:port/SERVICENAME
[〜#〜] edit [〜#〜]
他のコンピューターからデータベースに接続できる場合は、そこで実行してみてください。
select sys_context('USERENV','SERVICE_NAME') from dual
そして
select sys_context('USERENV','SID') from dual
同じ状況でまったく同じ問題に遭遇しました。 tnsnames.oraファイルがないため、コマンドラインでEasy Connection Identifier形式のSQL * Plusを使用したかった。この問題を次のように解決しました。
SQL *Plus®ユーザーズガイドおよびリファレンス に例を示します。
sqlplus hr @\"sales-server:1521/sales.us.acme.com \"
次の2つの重要な点に注意してください。
既存の接続を介してサービス名を検出するためのこれらの良い質問を見つけました: 1 、 2 。たとえば、次のクエリを試してください。
SELECT value FROM V$SYSTEM_PARAMETER WHERE UPPER(name) = 'SERVICE_NAMES'
ちょっとした観察:conn usr\passについて言及し続けていますが、これはタイプミスですよね?それはconn usr/passでなければなりません。それとも、UnixベースのOSでは違いますか?
さらに、念のため:tnsnamesを使用する場合、ログイン文字列は、このトピックを開始したログインメソッドを使用する場合とは異なります。
tnsnames.oraは$ Oracle_HOME $\network\adminにある必要があります。これは、接続しようとしているマシン上のOracleホームであるため、この場合はPCです。複数のOracle_homeがあり、1つのtnsnames.oraのみを使用する場合は、環境変数tns_adminを設定し(たとえば、TNS_ADMIN = c:\ Oracle\tnsを設定)、そのディレクトリにtnsnames.oraを配置できます。
元のログオン方法(usr/[email protected]:port/servicename)は常に機能するはずです。これまでのところ、ポート番号を除くすべての情報を持っていると思います。ポート番号は、DBAが提供できると確信しています。それでもこの方法が機能しない場合は、クライアントからサーバーのIPアドレスが利用できないか、ファイアウォールの問題(特定のポートのブロック)、またはOracleまたはSQL * Plusに(直接)関係のない何かがあります。
えっ!よろしく、Remco