■事象
DBにリモート接続( = conn / as sysdbaのOS接続ではない)すると下記エラー
$ sqlplus /nolog
SQL*Plus: Release 19.0.0.0.0 - Production on 月 4月 6 06:06:47 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
SQL> conn sys@TEST as sysdba
パスワードを入力してください:
ERROR:
ORA-12520: TNS:
リスナーは、リクエストしたサーバー・タイプに使用可能なハンドラを検出できませんでした。
■原因
リスナーがDBリソースを認識していない。
つまり、下記のような状況になっているはず
$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 06-4月 -2020 06:05:16
Copyright (c) 1991, 2019, Oracle. All rights reserved.
(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for Linux: Version 19.0.0.0.0 - Production
開始日 06-4月 -2020 05:54:17
稼働時間 0 日 0 時間 10 分 59 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
パラメータ・ファイル /u01/app/19.3.0/grid/network/admin/listener.ora
ログ・ファイル /u01/app/grid/diag/tnslsnr/node2/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.203.102)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.203.112)(PORT=1521)))
サービスのサマリー...
サービス"+ASM"には、1件のインスタンスがあります。
インスタンス"+ASM2"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"+ASM_DATA"には、1件のインスタンスがあります。
インスタンス"+ASM2"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"+ASM_FRA"には、1件のインスタンスがあります。
インスタンス"+ASM2"、状態READYには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。
■解決方法
DB再起動(他にあるのかもしれませんが・・・)
※ SQL> conn / as sysdbaで接続後「 alter system register」をやっても認識してくれませんでした。
$ whoami
oracle
$ srvctl stop databse -db test
$ srvctl start database -db test
$ lsnrctl status
前略
ービス"pdb.oracle19c.jp"には、1件のインスタンスがあります。
インスタンス"test_1"、状態READYには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。
■備考
↓あまり参考になりませんでした。
$ oerr ora 12520
12520, 00000, "TNS:listener could not find available handler for requested type of server"
// *Cause: None of the known and available service handlers for requested type
// of server (dedicated or shared) are appropriate for the client connection.
// *Action: Run "lsnrctl services" to ensure that the instance(s) have
// registered with the listener and that the appropriate handlers are
// accepting connections.