1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【簡単Oracle DBA】【初心者向け】Oracle よくあるエラー完全解説 ORA-12514 / ORA-01034 / ORA-01555 実務トラブルシューティングガイド

1
Posted at

🎯 対象読者

  • Oracle Database 初学者〜中級者
  • ORAエラーの原因と対処を体系的に理解したい方
  • DBA・インフラ・開発者
  • OCP試験対策をしている方

🧠 Oracle エラー調査の基本フロー

ORAエラーが発生した場合、以下の順序で確認します:

① Listener(接続)
② Instance(インスタンス状態)
③ Storage(表領域・UNDO・REDO)
④ Transaction(一貫性・UNDO)

🔥 ORA-12514

TNS: listener does not currently know of service requested


📌 原因

Listener が指定された Service Name を認識していません。

つまり:

Client → Listener → Service Name 解決失敗

📊 よくある原因

原因① Instance が起動していない

確認:

SELECT status FROM v$instance;

解決:

STARTUP;

原因② Service Name が間違っている

確認:

SELECT value FROM v$parameter WHERE name='service_names';

tnsnames.ora 確認:

SERVICE_NAME = ORCL

原因③ Listener 未登録(動的登録失敗)

Listener 確認:

lsnrctl status

Service が表示されない場合:

lsnrctl reload

または:

ALTER SYSTEM REGISTER;

🧠 動的登録の仕組み

Instance 起動
   │
   ▼
LREG Process
   │
   ▼
Listener に Service 登録

✅ 解決まとめ

① Instance 起動確認
② Service Name 確認
③ listener status 確認
④ ALTER SYSTEM REGISTER

🔥 ORA-01034

ORACLE not available


📌 原因

Instance が起動していません。

つまり:

Oracle Instance = STOPPED

📊 確認方法

SQL*Plus 接続:

sqlplus / as sysdba

状態確認:

SELECT status FROM v$instance;

✅ 解決方法

STARTUP;

成功例:

ORACLE instance started.
Database mounted.
Database opened.

📊 Instance 状態

STOPPED
STARTED(NOMOUNT)
MOUNTED
OPEN

OPEN 状態が正常です。


🧠 よくある原因

  • DB 再起動後に未起動
  • サーバ再起動
  • SHUTDOWN 実行後未起動

🔥 ORA-01555

snapshot too old


📌 原因

UNDO 表領域不足により、読み取り一貫性を維持できない。

Oracle は過去のデータを UNDO から取得します:

Query 実行中
   │
   ▼
必要な過去データがUNDOにない
   │
   ▼
ORA-01555

📊 よくある発生ケース

  • 長時間 SELECT
  • 大量 UPDATE / DELETE 同時実行
  • UNDO 表領域が小さい

📊 確認方法

UNDO サイズ:

SELECT tablespace_name, bytes/1024/1024 MB
FROM dba_data_files
WHERE tablespace_name='UNDOTBS1';

UNDO 設定:

SHOW PARAMETER undo_retention;

✅ 解決方法① UNDO_RETENTION(秒) 増加

例:

ALTER SYSTEM SET undo_retention = 1800;

✅ 解決方法② UNDO 表領域拡張

ALTER DATABASE DATAFILE
'/u01/app/oracle/oradata/ORCL/undotbs01.dbf'
RESIZE 2G;

または:

ALTER DATABASE DATAFILE
'/u01/app/oracle/oradata/ORCL/undotbs01.dbf'
AUTOEXTEND ON;

✅ 解決方法③ 長時間トランザクション回避

  • 小分け commit
  • 長時間 SELECT 回避

🧠 読み取り一貫性の仕組み

Datafile(現在)
UNDO(過去)
   │
   ▼
Oracle が過去状態を再構築

🔎 実務で最も重要な確認コマンド


Instance 状態

SELECT status FROM v$instance;

Listener 状態

lsnrctl status

Service 確認

SELECT name FROM v$services;

UNDO 確認

SHOW PARAMETER undo;

🏢 実務ベストプラクティス


接続エラー対策

・Listener 起動確認
・Service Name 統一
・動的登録確認

Instance 管理

・サーバ起動時にDB自動起動
・SHUTDOWN IMMEDIATE 使用

UNDO 管理

・UNDO AUTOEXTEND ON
・undo_retention 適切設定

🧠 エラー分類まとめ

エラー 分類 原因
ORA-12514 接続 Listener
ORA-01034 Instance 未起動
ORA-01555 Storage UNDO不足

✅ まとめ

重要ポイント:

ORA-12514 → Listener / Service 確認
ORA-01034 → Instance 起動
ORA-01555 → UNDO 拡張

🎉 これでできること

  • Oracle 接続エラー対応
  • Instance 起動トラブル対応
  • UNDO 問題解決
  • 実務レベルの障害対応

📚 対象DB

本記事は Oracle Database 12c / 19c / 21c / 23c に対応しています。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?