Oracle

只有 oracle 使用者可以執行 sqlplus

  • March 13, 2020

我有幾個帶有 Oracle 12.2 伺服器和 11.2 客戶端的 RHEL 6 機器。這是供應商的要求。

在一台伺服器上,我可以以任何使用者身份執行 sqlplus,而在另一台伺服器上,我只能以 oracle 使用者身份執行 sqlplus。像任何其他使用者一樣執行會給出: ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

當我說 oracle 使用者時,我指的是名為 oracle 的作業系統使用者。

我檢查了 listener.ora 和 tnsnames.ora(在客戶端和伺服器 ORACLE_HOME 結構中),兩者都是相同的,除了主機名。

文件/目錄權限(所有權和模式)看起來不錯。

tnsping 和 lsnrctl 狀態看起來都很好。

關於問題可能是什麼的任何想法?

謝謝

  • 編輯 -

這些環境變數已設置並且功能相同。

set | awk -F= '/ORA/ {print $1}' ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM ORACLE_UNQNAME ORA_SDTZ

問題原來是hostname在工作伺服器上返回一個短名稱,在非工作伺服器上返回一個 FQDN。

我已更新 /etc/sysconfig/network 以將主機名設置為簡短,現在一切正常。

我不知道為什麼需要這樣做,但它解決了問題,現在一切都很重要。

當您閱讀 oracle 文件時,您還需要設置更多變數。對於 oracle 以外的使用者,您應該設置範例 ORACLE_SID,它應該指向您的數據庫的 SID。您也可以考慮將 TNSADMIN 設置為指向正確的 TNS 文件。

引用自:https://serverfault.com/questions/1006598