先日の話ですが、インストール後は動作していたサーバが、
いったんマシンを再起動するとインスタンスの起動に失敗して動かなくなる、
という現象がありました。
エラーメッセージは以下のようになっていました。
「ORA-12541:TNSリスナーがありません。」
調べていったところ、2つ原因があることがわかりました。
まず1つがエラーの内容の通りで、リスナーの記述がなかったことです。
listener.oraのファイルを開いて、静的サービス登録(SID_LIST)セクションに以下の記述を追加しました。
(SID_DESC = (GLOBAL_DBNAME = ****) (ORACLE_HOME = C:\oracle\product\10.2.0\db_1) (SID_NAME = ****) )
なぜ、この記述がなかったのかは不明ですが・・・。
何かのタイミングでlistener.oraが書き換わったのでしょうか??
そして2つ目に、セキュリティポリシーでユーザー権利の割り当てがされていなかったことです。
インスタンスの起動/停止を行うときに、「ホスト資格証明」欄を入力する必要がありますが、ここではOSにログインできるユーザー名とパスワードを入力します。
ユーザー権利が割り当てられていないと、以下のようなエラーメッセージが表示されます。
「RemoteOperationException: ERROR: Wrong password for user」
次の設定を行うことでユーザー権利を割り当てることができます。
(1)[管理ツール] - [ローカルセキュリティポリシー] - [ユーザー権利の割り当て] を開く
(2)[バッチジョブとしてログオン] の項目に、Administratorのユーザを追加
これで無事にインスタンスが起動し、正常にデータベースに接続できるようになりました。
エラーメッセージをそのまま解釈すればユーザー名とパスワードの組み合わせが間違っていると判断しますが、このような例の場合はメッセージを元に連想していかないと推測できないので注意する必要があります。