[oracle] sqlplusでつなごうと思ったらORA-12162: TNS:net service name is incorrectly specifiedというエラーが出た。

Oracleデータベース(バージョンは11gR2)にsqlplusから接続しようとしたら、接続ができなかった時の原因と解決策の話です。

症状

Oracle11gR2をインストールした後で、sqlplusからいざつなごうと思ったら、以下のようにエラーになった。
エラーの内容は「ORA-12162: TNS:net service name is incorrectly specified」とのこと。

$ sqlplus /NOLOG

SQL*Plus: Release 11.2.0.1.0 Production on Fri Jan 10 2014

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> CONNECT AS SYSDBA
Enter user-name: oracle
Enter password: 
ERROR:
ORA-12162: TNS:net service name is incorrectly specified

「ORA-12162」を検索すると「このエラーがでる場合は接続文字列(ネットサービス名)が設定されるべき場所に、適切に文字が入っていない場合に出力されます。」とのこと。
どうもtnsnames.oraに関係があるような記述があったので、そっちも確認してみたが、特におかしな点も見つからない…

原因

で、結局はORACLE_SIDという環境変数を設定していなかったからみたいです。
これが設定されていないとうまく接続できないんですね。知りませんでした。。ちなみに、ORACLE_HOMEも設定されていないといけないようです。(oracleユーザに指定してあげる)

きちんと設定されているかの確認は以下

# su - oracle
$ echo $ORACLE_HOME
 (設定されていれば表示される)
$ echo $ORACLE_SID
 (設定されていれば表示される)

解決策

もう設定しましょう以外の説明はないです。設定しましょう!「/etc/bashrc」に書くかあるいは「.bash_profile」に書くか、好きな方でOKです。

「.bash_profile」に書くなら以下ですね。oracleユーザにだけ設定したい場合はこちらです。

# su - oracle
$ vi ./bash_profile

(以下を追加)
export ORACLE_SID=(インスタンス名)

(:wqで保存して終了)

全てのユーザに適応させたいなら「/etc/bashrc」に記載ですかね。

# vi /etc/bashrc

(以下を追加)
export ORACLE_SID=(インスタンス名)

(:wqで保存して終了)

おしまい

きちんとインストールガイドとか読まないといけないですね。。

タイトルとURLをコピーしました