Oracleエラー対応(ORA-01034):ORA-01034発生時の対処方法について

現役DBAが解説 ~Oracleエラー対応~

Oracle Databaseに接続する際にORA-01034エラーが発生することがあります。

本記事では、ORA-01034発生時の原因および対処方法を紹介します。

1. エラーメッセージ

ORA-01034: ORACLE not available		
ORA-01034: Oracleは使用できません		

2. 事象

ODBにSYSDBA権限をもたないユーザーでローカル接続(DBサーバにOSログインしてからDBへ接続)に失敗すると、ORA-01034が発生します。
※SYSDBA権限をもつユーザーでは、エラーにならず「アイドル・インスタンスに接続しました」と表示されます。

C:¥xxxx> sqlplus DBuser@DBname	
	
SQL*Plus: Release 11.2.0.4.0 Production on 金 7月 29 09:51:00 2022	
Copyright © 1982, 2011, Oracle. All rights reserved.	
	
Enter password:	
ERROR:	
ORA-01034: ORACLE not available	

3. 原因と対処方法

ORA-01034の発生原因と解消方法を紹介します。

①環境変数ORACLE_SIDが間違っている

ローカル接続では、環境変数ORACLE_SIDでDBを指名します。
そのため、ORACLE_SIDが誤っているとDBにたどりつけず、接続に失敗します。

<ORACLE_SID確認方法>
以下のOSコマンドでORACLE_SIDを確認できます。

[Linux]

[oracle@server1 ~]$ printenv ORACLE_SID

[Windows]

C:¥xxxx> set ORACLE_SID

正しいORACLE_SIDがわからない時には、以下で確認できます。

・DBサーバのOracleバックグラウンドプロセス名の末尾
例:ora_pmon_testdb1

プロセスは以下のコマンドで確認できます。

[Linux]

[oracle@server1 ~]$ ps -ef | grep ora

[Windows]

C:¥xxxx> tasklist -fi "imagename eq ora*"

・別の方法でDBに接続できる場合は、v$instanceビュー

SQL> select instance_name from v$instance;

INSTANCE_NAME
-----------------------------------
TESTDB1

<ORACLE_SID設定方法>
以下のOSコマンドでORACLE_SIDを設定できます。

[Linux]

[oracle@server1 ~]$ export ORACLE_SID=TESTDB1

[Windows]

C:¥xxxx> set ORACLE_SID=TESTDB1

②DBが起動していない

ORACLE_SIDに誤りがない場合は、こちらを疑ってください。
SYSDBA権限を持たないユーザーで接続する際は、DBが起動している必要があります。
※DBの起動(startupコマンドの実行)は、SYSDBA権限でDBに接続しなければ実行できません。

アラートログを見ることで、DBの起動/停止が行われた日時を確認できます。
起動:Starting ORACLE instance付近
停止:Shutting down instance付近

4. 最後に

ORA-01034が発生した場合には、以下を確認しましょう。

  • ORACLE_SIDが間違っていないか
  • DBが起動しているか