Oracle 10gをRedHat Enterprise Linux 5にインストールしています。
Oracleを使用する2人のユーザーがいます。
uid=501(user1) gid=502(group1) groupes=500(oinstall),501(dba),502(group1)
そして
uid=500(Oracle) gid=500(oinstall) groupes=500(oinstall),501(dba),502(group1)
ユーザーが開始したリスナーを停止しようとすると、他のユーザーがとすると、次のエラーが発生します。
TNS-01190: The user is not authorized to execute the requested listener command
誰が開始したかに関係なく、両方のユーザーがリスナーを停止できるようにするにはどうすればよいですか?
表示されているメッセージの説明は次のとおりです。
原因:リスナー管理コマンドのほとんどは、DBAやシステム管理者などの特権ユーザーが発行することのみを目的としています。リスナーパスワードが設定されていない場合、リスナーは、同じOS資格情報で実行されている、またはローカル管理者(スーパーユーザーとも呼ばれる)として実行されているLSNRCTLからの管理要求のみを受け入れます。
処置:認可されたユーザーがコマンドを試行している場合は、LSNRCTLが実行中のリスナーまたはローカル管理者と同じOSユーザー資格証明で実行されていることを確認してください。
setuid
ラッパーを使用する場合を除き、リスナーにパスワードを設定する必要があります。まだ設定していない場合は、設定方法の良い要約 here があります。
次に、Oracle
のように通常どおりリスナーを起動する場合は、コントローラーのインタラクティブモードに入り、コマンド「set password」を入力して、リスナーのパスワードを入力することで、user1
としてシャットダウンできます。
$ lsnrctl
LSNRCTL for Solaris: Version 11.2.0.2.0 - Production on 12-NOV-2012 14:55:29
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> stop
Connecting to (ADDRESS=(PROTOCOL=tcp)(Host=localhost)(PORT=1521))
TNS-01190: The user is not authorized to execute the requested listener command
LSNRCTL> set password
Password: <secret>
The command completed successfully
LSNRCTL> stop
Connecting to (ADDRESS=(PROTOCOL=tcp)(Host=localhost)(PORT=1521))
The command completed successfully
LSNRCTL>
...シャットダウンします。これは別のO/Sとバージョンであることは知っていますが、原理は同じです。そしてその逆は真実です。 user1
として起動する場合は、Oracle
としてシャットダウンできるようにset password
する必要があります。
ただし、 これは11gR2から非推奨 です。 manual mentonsssh
またはOEMを使用しますが、user1
をOracle
アカウントに切り替えて、su
を介してリスナーを開始および停止することもできます。明らかに、これにより完全なDBAアクセスが提供されますが、これはリスナーに限定されません。これはssh
の場合も同様です。
信頼できない人にデータベースの管理を任せてリスナーを台無しにしたいのはなぜなのか、なぜ問題が発生するのに十分な頻度でデータベースをシャットダウンして起動する必要があるのかわかりません。