
- OS:Oracle Linux 9.7
- DB:Oracle AI Database 23.26.1.0.0 Enterprise Edition
Oracle Linux上にOracle AI Databaseを構築後、またはOS再起動後に「ORA-12162: TNS: 指定されたNetサービス名は正しくありません。」が発生しました。
[oracle@learnbytebybyte ~]$ sqlplus / as sysdba
<省略>
ERROR:
ORA-12162: TNS: 指定されたNetサービス名は正しくありません。 本記事では、「ORA-12162: TNS: 指定されたNetサービス名は正しくありません。」の発生原因と、解決方法、再発防止をまとめています。
問題点
Linux環境でOracle AI Databaseを構築後、以下のようにsqlplus / as sysdbaで接続すると「ORA-12162: TNS: 指定されたNetサービス名は正しくありません。」が発生しました。
[oracle@learnbytebybyte ~]$ sqlplus / as sysdba
SQL*Plus: Release 23.26.1.0.0 - Production on 日 2月 1 14:17:22 2026
Version 23.26.1.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
ERROR:
ORA-12162: TNS: 指定されたNetサービス名は正しくありません。 ヘルプ:
https://docs.oracle.com/error-help/db/ora-12162/
ユーザー名を入力してください: ^C
[oracle@learnbytebybyte ~]$
解決方法
Oracle公式サイトを調べたところによると、TNSNAMES.ORAの接続識別子が構文エラーか、ディレクトリ・ネーミングによるエラーか、ORACLE_SIDの未設定がエラーの原因となります。
ローカル・ネーミングを使用している場合は、TNSNAMES.ORAファイル内の対応する接続記述子に構文エラーがないことを確認してください。ディレクトリ・ネーミングを使用している場合は、ディレクトリ・ネーミングに使用する管理を通じて提供された情報を確認してください。ORACLE_SIDを使用している場合は、ORACLE_SIDが設定されているかどうかを確認してください
引用元:Oracle公式サイトの翻訳
今回の sqlplus / as sysdba はリスナー経由をしないローカル接続を行おうとしているので、ORACLE_SIDの未設定が原因と考えられます。
ORACLE_SIDの値を確認
まずは、ORACLE_SID環境変数が設定されているか確認します。
[oracle@learnbytebybyte ~]$ echo $ORACLE_SID
[oracle@learnbytebybyte ~]$ 何も表示されない場合、ORACLE_SIDが未設定なためORA-12162が発生する原因になります。
ORACLE_SIDにインスタンス名を入力
ORACLE_SID環境変数にインスタンス名を設定後、sqlplus / as sysdbaを入力して接続できれば解決です。
[oracle@learnbytebybyte ~]$ export ORACLE_SID=orcl
[oracle@learnbytebybyte ~]$ echo $ORACLE_SID
orcl
[oracle@learnbytebybyte ~]$ sqlplus / as sysdba
SQL*Plus: Release 23.26.1.0.0 - Production on 日 2月 1 14:24:37 2026
Version 23.26.1.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
アイドル・インスタンスに接続しました。
SQL> startup
ORACLEインスタンスが起動しました。
Total System Global Area 3218317872 bytes
Fixed Size 5014064 bytes
Variable Size 721420288 bytes
Database Buffers 2483027968 bytes
Redo Buffers 8855552 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL> 再発防止策
OSの再起動後は、シェル環境変数が初期化されるため、ログインし直すとORACLE_SIDが未設定になり、同じエラーが再発することがあります。
[oracle@learnbytebybyte ~]$ echo $ORACLE_SID
#一度OSが停止してしまうと情報が消えてしまう
[oracle@learnbytebybyte ~]$ sqlplus / as sysdba
SQL*Plus: Release 23.26.1.0.0 - Production on 日 2月 1 14:24:37 2026
Version 23.26.1.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
ERROR:
ORA-12162: TNS: 指定されたNetサービス名は正しくありません。 ヘルプ:
https://docs.oracle.com/error-help/db/ora-12162/この場合は、ログイン後に必ず環境変数が自動で設定されるように、.bash_profileへ追記しましょう。
[oracle@learnbytebybyte ~]$
[oracle@learnbytebybyte ~]$ vi .bash_profile
[oracle@learnbytebybyte ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
export ORACLE_SID=orcl #この部分を追記
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/26.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export NLS_LANG=Japanese_Japan.AL32UTF8
umask 022
# User specific environment and startup programsその後、. .bash_profileを入力すれば現在のセッションにも環境変数が設定され接続できようßになります。
[oracle@learnbytebybyte ~]$ . .bash_profile
[oracle@learnbytebybyte ~]$ sqlplus / as sysdba
SQL*Plus: Release 23.26.1.0.0 - Production on 日 2月 1 14:28:29 2026
Version 23.26.1.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production
Version 23.26.1.0.0
に接続されました。
SQL> まとめ
「ORA-12162: TNS: 指定されたNetサービス名は正しくありません。」が発生する場合は、以下の手順で解決できます。
- ORACLE_SID環境変数が設定されているか確認
- 未設定の場合は、ORACLE_SID環境変数にインスタンス名を設定
最後までご愛読ありがとうございました。
