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で保存して終了)
おしまい
きちんとインストールガイドとか読まないといけないですね。。