Oracle10gのWindows版でEnterprise Managerを使ってデータベースの起動・停止を行う場合、”ホスト資格証明”というものが必要です。
そのため、[ホストとターゲット・データベースの資格証明の指定]画面で、OSユーザー名、パスワードとターゲット・データベースのユーザー名・パスワードの入力を迫られるのですが、ここで正しいユーザー名・パスワードを入力しているのに
RemoteOperationException: ERROR: Wrong password for user
というエラーが発生し、データベースの起動・停止ができないことがあります。
この問題に関してはOTN
にある「意外と簡単!? Oracle Database 10g - Windows 版 -
」という技術講座の中で解説されています。
これによるとWindowsプラットフォームでEnterprise Managerを使用してホスト資格証明を必要とする操作を行う場合にはEnterprise Manager用のユーザーに以下の設定を施す必要があるそうです。
・環境変数%TEMP%,%TMP% ディレクトリへの権限を与える。
・「バッチジョブとしてログオン権限」を与える。
ということで、指示どおりにこの設定を行ってみたのですが、なんと!それでも解決しません...
上記の設定を何度も見直してみたり、再起動をかけてみたりしたのですが全然ダメ。
しばらく格闘した挙句、ようやく原因が判明。
どうもこのEnterprise Managerを使うために必要な”OracleDBConsole{SID}”というWindowsのサービスを通常のWindowsユーザーアカウントで動かしているとダメなようです。
このサービスをローカルシステムアカウントで起動するように設定を変更すると上記のエラーは発生しなくなり、データベースの起動・停止が正常に行えるようになりました。
”OracleDBConsole{SID}”はデフォルトではローカルシステムアカウントで起動しているのでわざわざ変更しない限りはこんなことにはならないのですが、UTL_FILEなどでネットワークパスにアクセスするために”OracleService{SID}”を通常のWindowsユーザーアカウントに変更したついでに、ついつい”OracleDBConsole{SID}”も同じユーザーに変更してしまっていたのです。
よく考えると”OracleDBConsole{SID}”は変える必要はなかったのですが...^^;