使用 Oracle Call Interface 存取 Oracle Database

如果您使用以 Oracle Call Interface (OCI) 開發的應用程式,則可以使用 OCI 連線字串或 Essbase 伺服器上 tnsnames.ora 組態檔中定義的網路服務名稱,將 Essbase 載入規則連線至 Oracle Database。

含 Oracle Call Interface 連線字串的規則特性

若要使用 OCI 連線字串將 Essbase 載入規則連線至 Oracle Database,

  1. 在 Essbase Web 介面中,開啟現有規則或建立新的規則 (請參閱存取與編輯規則、建立新維度建置規則或建立新資料載入規則 )。

  2. 按一下來源特性。


    Essbase Web 介面規則編輯器中的來源特性按鈕

  3. 按一下 SQL 特性。

  4. 從特性中,選取 Oracle Call Interface (OCI) 。

  5. 在伺服器欄位中,輸入 Oracle Database 連線字串,格式為 <host>:<port>/<service_name>。

  6. 在查詢欄位中,輸入從 Oracle Database 存取所需資料的 SQL 查詢。

  7. 在使用者名稱和密碼欄位中,提供存取 Oracle Database 綱要所需的證明資料。此資訊用於預覽資料,但不會儲存在規則中。


    「SQL 特性」對話方塊。選取的特性選項為 Oracle Call Interface (OCI)。「伺服器」欄位的 OCI 連線字串格式為 DatabaseServerName:PortNumber/ServiceName。「查詢」欄位中有 SQL 查詢範例。已輸入「使用者名稱與密碼」。

  8. 按一下預覽,確定規則可以連接和擷取資料,然後儲存和關閉規則。

使用組態檔中預先定義的 Oracle Call Interface 載入規則

若要使用 Essbase 伺服器上組態檔中定義的 net_service_name,將 Essbase 載入規則連線至 Oracle Database,

  1. 在 Essbase 伺服器上,在 <Oracle Home>/network/admin 中建立組態檔 (例如,名稱為 tnsnames.ora)。

    如果組態檔已經存在,請確定它具有使用 Oracle Call Interface (OCI) 連線至 Oracle Database 的有效項目。否則,請立即加以設定。在以下的範例中:

    OCISQL =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = oraclehost.example.com)(PORT = 1521))
        )
        (CONNECT_DATA =
          (service_name = orcl.example.com)
          (SERVER = DEDICATED)
        )
      )
    • net_service_name 為 OCISQL。請記下這個名稱,接下來您需要一個步驟。
    • 主機為 oraclehost.example.com。
    • 連接埠是 1521。
    • 服務名稱是 orcl.example.com。
  2. 在 Essbase Web 介面中,開啟現有的資料載入或維度建置規則,或建立新的規則 (請參閱存取與編輯規則、建立新維度建置規則或建立新資料載入規則 )。

  3. 按一下來源特性。


    Essbase Web 介面規則編輯器中的來源特性按鈕

  4. 按一下 SQL 特性。

  5. 從特性中,選取 Oracle Call Interface (OCI) 。

  6. 在伺服器欄位中,輸入用於 tnsnames.ora 組態檔的 net_service_name。根據步驟 1 中提供的範例,輸入 OCISQL。

  7. 在查詢欄位中,輸入從 Oracle Database 存取所需資料的 SQL 查詢。

  8. 在使用者名稱和密碼欄位中,提供存取 Oracle Database 綱要所需的證明資料。此資訊用於預覽資料,但不會儲存在規則中。


    「SQL 特性」對話方塊。選取的特性選項為 Oracle Call Interface (OCI)。「伺服器」欄位具有 OCI 連線 net_service_name。「查詢」欄位中有 SQL 查詢範例。輸入「使用者名稱」和「密碼」。

  9. 按一下預覽,確定規則可以連接和擷取資料,然後儲存和關閉規則。

連線疑難排解

在 Windows 上,使用使用 Oracle Call Interface (OCI) 連線字串的規則預覽資料或執行維度建置或資料載入可能會失敗,並產生下列錯誤訊息:

Attempt to connect to OCI failed. [ORA-12638: Credential retrieval failed].

造成此問題的原因是版本 19c Oracle Database 伺服器和 19c 從屬端 (在此情況下,從屬端是安裝 Essbase 伺服器的位置) 沒有設定,或是在 tnsnames.ora (或 sqlnet.ora) 中設定下列設定:SQLNET.AUTHENTICATION_SERVICES= (NTS)

解決方案是在 Essbase 伺服器機器上設定 SQLNET.AUTHENTICATION_SERVICES= (NONE)。

  1. 在 <Oracle Home>/network/admin 中,尋找組態檔。

  2. 開啟檔案並新增 SQLNET.AUTHENTICATION_SERVICES=(NONE)

  3. 重新啟動 Essbase 應用程式。

附註:

請參閱 SQLNET.AUTHENTICATION_SERVICES 文件中的使用注意事項,瞭解 Oracle Database 19c。