「ORA-12162: TNS: 指定されたNetサービス名は正しくありません。」の解決方法

  • URLをコピーしました!
Oracle Error Handling
僕の作業環境
  • 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 Database 19c等でも発生するエラーになります。

[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の未設定が原因と考えられます。

STEP

ORACLE_SIDの値を確認

まずは、ORACLE_SID環境変数が設定されているか確認します。

[oracle@learnbytebybyte ~]$ echo $ORACLE_SID

[oracle@learnbytebybyte ~]$ 

何も表示されない場合、ORACLE_SIDが未設定なためORA-12162が発生する原因になります。

STEP

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> 
STEP

再発防止策

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サービス名は正しくありません。」が発生する場合は、以下の手順で解決できます。

  1. ORACLE_SID環境変数が設定されているか確認
  2. 未設定の場合は、ORACLE_SID環境変数にインスタンス名を設定

最後までご愛読ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

情報系Fラン大学出身・新卒未経験からデータベースエンジニアに転身。
使用技術:Oracle|TypeScript
資格取得:情報処理安全確保支援士試験|応用情報技術者試験|OracleMaster Gold DBA|OCI Architect Associate

目次