(この投稿のタイトルは別の投稿と似ていますが、根本的な原因と解決策はまったく異なります。)
問題:
Sysdbaとしてsqlplusにログインできませんが、リスナーが起動しているようです
[John@localhost ~]$ lsnrctl start
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 13-AUG-2015 18:19:03
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Starting /home/John/app/John/product/12.1.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 12.1.0.2.0 - Production
System parameter file is /home/John/app/John/product/12.1.0/dbhome_1/network/admin/listener.ora
Log messages written to /home/John/app/John/diag/tnslsnr/localhost/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=localhost)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date 13-AUG-2015 18:19:03
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/John/app/John/product/12.1.0/dbhome_1/network/admin/listener.ora
Listener Log File /home/John/app/John/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=localhost)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully
リスナーは起動しているようですが、TNSリスナーはsysdbaログインを拒否します。
[John@localhost ~]$ sqlplus -prelim / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Thu Aug 13 18:25:49 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name: ^C
[John@localhost ~]$
考えられる原因:
これが発生する数日前にログインできました。この問題を引き起こしたと考えられる唯一のことは、John:John
が所有するすべてのファイルとフォルダーをJohn:Users
に変更し、Users
をJohn
。なぜそれが問題になるのかはわかりません。それが重要であるならば、それは確かにそうすべきではありません。
/ as sysdba
がTNSリスナーによって突然拒否された理由について、より詳細な情報を入手するにはどうすればよいですか?それがグループの変更に明確に関連している場合、認証エラーを修正しながら、グループの設定をそのままにするために、どのような変更を行う必要がありますか?
この構文は、リスナーをまったく使用しません。
sqlplus -prelim / as sysdba
ただし、OSグループベースのSYSDBA認証が失敗したため、認証エラーが発生しました。以下を確認してください:
cat $Oracle_HOME/rdbms/lib/config.c
そこで、次のような行が表示されます。
#define SS_DBA_GRP "John"
上記で定義されたOSグループのメンバーである/ as sysdba
を使用できるのは、それらのユーザーのみです。 OSDBAグループをJohnに設定してデータベースソフトウェアをインストールし、グループをUsersに変更した場合、/ as sysdba
を使用できなくなります。
OSDBAグループを新しいグループに変更する場合は、上記のファイルを編集し、必要な値を設定し、Oracle_HOME(データベース、リスナー)から実行中のすべてのものをシャットダウンして、次を実行します。
$Oracle_HOME/bin/relink all
「リスナーはサービスをサポートしていません」とそれはすべて言います。
データベースは稼働していますか?
sqlplus /nolog as sysdba
これにより、アイドル状態のインスタンスに接続しているか、データベースが実行中かがわかります。
データベースは稼働していますか?動的または静的登録を使用していますか?データベースがリスナーに登録されると、接続できるようになります。そしてあなたがするとき:
lsnrctl status
リスナーが知っているサービスをリストする必要があります。