2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Oracle DBにつながらなくて困ったときの対応まとめ

Last updated at Posted at 2020-04-23

DB筐体内での確認事項

サービスが動いているか確認

そもそもOracleサービスが起動しているか確認します。
Windowsの場合の手順になりますが、サービス画面を開き(OSの検索窓でサービスで検索するか、Windowsキー+Rで出てきた検索窓でsc.mscと検索する)、下記のOracleサービスが動いているか確認します。
Screen Shot 2020-04-23 at 10.07.59.png

もし起動中になっていなかったらサービスを右クリックして起動させてください。

DBがオープンしているか確認

コマンドプロンプトを開き、sqlplusでDBにつなぎます。

DBの起動状態を確認します。

11g以前の手順

起動状態を確認します

sqlplus / as sysdba  もしくは sqlplus sys/{syspassword} as sysdba
select host_name, instance_name, status from v$instance;
HOST_NAME  INSTANCE_NAME    STATUS
---------- ---------------- ------------
db01       orcl             MOUNTED

もしSTATUSがOPENになっていなかったら、DBをOpenします。

STARTUP

12c以降の手順

起動状態を確認します

show pdbs				
				
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED				
---------- ------------------------------ ---------- ----------				
         2 CDB$SEED                       READ ONLY  NO				
         3 PDB01                          MOUNTED

もしSTATUSがOPENになっていなかったら、DBをOpenします。

alter pluggable database all open;

tnsnames.ora、lisner.oraの記載内容を確認

12c以降でPDBにつなごうとしても次のようなエラーでつながらない場合はtnsnames.oraとlisner.oraを確認します。

ORA-12514: TNS: リスナーは現在、接続識別子でリクエストされているサービスを認識していません(TNS-12514)

tnsnames.oraは下記のような形式で書かれています。hostnameが正しいか、PDB名が正しいか確認してください。
場所:{ORACLE_HOME}\network\admin\tnsnames.ora

tnsnames.ora
{接続したいサービス名} =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST ={hostname})(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME ={PDB名/SID})
    )
  )

lisner.oraは下記のような形式で書かれています。hostnameが正しいか確認してください。
場所:{ORACLE_HOME}\network\admin\lisner.ora

lisner.ora
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = {hostname})(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

DBが別筐体にある場合の確認事項

DBインスタンスが起動しているか確認

そもそもDBインスタンスが起動しているかを確認します。
また上記の手順のようにcが動いていて、DB筐体内ではDBが使える状態かも確認します。

DBへのアクセスが許可されているか確認

pingが通るか、telnetができるか、セキュリティグループやFWで遮断されていないか確認します。

tnsnames.oraの記載内容を確認

まず、下記のsqlで接続できるか確認します。

sqlplus system/{system_password}@{db_ip}:1521/{pdb_name}
例) sqlplus system/password@192.168.145.25:1521/PDB

できなければDBでLisnerが起動していないなどの原因が考えられるので、上記のようにDB筐体でOracleサービスが動いてるか確認してください。

これを下記のようにサービス名だけで接続したい場合、tnsnames.oraへの記載が必要になります。

tnsnames.oraは{ORACLE_HOME}/network/admin/tnsnames.oraにあります。
次のような記載を追加してください。

tnsnames.ora
{接続したいサービス名} =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST ={dbのip})(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME ={PDB名/SID})
    )
  )
例:
REMOTEPDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.129.12.24)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = PDB01)
    )
  )

そうすると、下記のようにつなぐことができます。

sqlplus system/{system_password}@REMOTEPDB

Windows向けに書いていますがLinuxでもやること自体そんなに変わらないはず
(ファイルの場所とかコマンドは違いますが)

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?