Oracle

使用 tnsnames.ora 和 sqlplus 客戶端,無需在 linux 客戶端上安裝 oracle 11g 伺服器

  • November 12, 2018

我想使用 SQLplus 客戶端和 tnsnames.ora 創建與遠端 Oracle 伺服器的連接,而無需在 Linux 客戶端上安裝 Oracle 11g 伺服器。我使用 debian 和 bash 腳本從遠端 Oracle 伺服器生成報告。這可能嗎?

我嘗試安裝 SQLplus 客戶端,但找不到 tnsnames.ora 文件。

如果可能的話,你能給我一個配置SQLplus客戶端使用tnsnames.ora文件的例子嗎?

我已經安裝了“基本即時客戶端”和“sqlplus 添加”包。我可以正常連接sqlplus user/password@host:port/servicenames。我想創建 bash 腳本以在 10 多個實例上執行 *.sql 文件。所以,如果我可以連接sqlplus user/pw@instance它看起來很簡單。有可能嗎?

更新:通過將 tnsnames.ora 文件複製到 /etc 來解決。

請參閱文章 #3 上的此頁面

感謝: Wernfried Domscheit , EdStevens , Paul White

首先,您必須告訴 Oracle 使用該tnsnames.ora文件。對於這個打開/創建文件sqlnet.ora並插入這樣的行:

NAMES.DIRECTORY_PATH = (TNSNAMES)

您可以添加其他解決方法,例如“LDAP”,請參閱DIRECTORY_PATH。條目tnsnames告訴 Oracle 使用tnsnames.ora文件。正如您在文件中看到的那樣NAMES.DIRECTORY_PATH=(tnsnames, onames, hostname),這是預設設置,因此sqlnet.ora在這種情況下實際上可以跳過該文件。

關於這兩個文件的位置,答案並非微不足道。不同的應用程序可能會搜尋不同的文件夾,並且可能有不同的優先規則。

以下文件夾可能是搜尋路徑的一部分:

  • 環境變數定義的文件夾TNS_ADMIN
  • 文件夾${ORACLE_HOME}\network\admin

如果您的文件位於不同的文件夾中,最好在此位置放置一個指向您的文件夾的符號連結。

  • 目前文件夾
  • 儲存應用程序二進製文件的文件夾

…在 Windows 的情況下(僅供參考)還有這些

  • 由系統資料庫項HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN分別定義的文件夾。HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN
  • machine.config, 分別 web.config文件,部分oracle.manageddataaccess.client/version/settings/setting/@name="tns_admin"

引用自:https://dba.stackexchange.com/questions/137913