web-dev-qa-db-ja.com

ユーザーがOracleリスナーを停止できない(TNS-01190)

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

誰が開始したかに関係なく、両方のユーザーがリスナーを停止できるようにするにはどうすればよいですか?

1
Ould Abba

表示されているメッセージの説明は次のとおりです。

原因:リスナー管理コマンドのほとんどは、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を使用しますが、user1Oracleアカウントに切り替えて、suを介してリスナーを開始および停止することもできます。明らかに、これにより完全なDBAアクセスが提供されますが、これはリスナーに限定されません。これはsshの場合も同様です。

信頼できない人にデータベースの管理を任せてリスナーを台無しにしたいのはなぜなのか、なぜ問題が発生するのに十分な頻度でデータベースをシャットダウンして起動する必要があるのか​​わかりません。

4
Alex Poole