使用 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。