Linux
使用者無法停止 Oracle 偵聽器 (TNS-01190)
我在 RedHat Enterprise Linux 5 上安裝了 Oracle 10g。
我有 2 個使用 Oracle 的使用者:
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 或系統管理員。如果未設置偵聽器密碼,則偵聽器僅接受來自使用相同作業系統憑據執行的 LSNRCTL 或以本地管理員(也稱為超級使用者)身份執行的管理請求。
操作:如果授權使用者正在嘗試該命令,請確保使用與正在執行的偵聽器或本地管理員相同的作業系統使用者憑據執行 LSNRCTL。
除非你想進入
setuid
包裝器,否則你需要為你的監聽器設置一個密碼。如果您還沒有這樣做,這裡有一個關於如何設置的很好的總結。然後,如果您正常啟動監聽器,您可以通過進入控制器的互動模式將
oracle
其關閉,輸入命令“設置密碼”,然後輸入監聽器的密碼: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>
…它應該關閉。我知道這是一個不同的作業系統和版本,但原理是一樣的。反之亦然;如果你啟動它
user1
,你需要set password
能夠關閉它oracle
。但是,這已從 11gR2 中棄用。手冊中提到使用或
ssh
OEM,但您也可以通過user1
切換到oracle
帳戶以啟動和停止偵聽器su
。顯然,這為他們提供了完全的 DBA 訪問權限,它不僅限於偵聽器,情況也是ssh
如此。我不確定為什麼您希望任何您不信任的人來管理數據庫以便能夠弄亂偵聽器,或者為什麼您需要將其關閉並經常啟動它才能成為一個問題。