Oracle
只有 oracle 使用者可以執行 sqlplus
我有幾個帶有 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 文件。