我想知道是否有人在編寫使用Oracle OCI API的C/C++應用程序並使用Oracle錢包進行身份驗證方面取得任何成功。使用來自OCI的Oracle Wallet認證
我已經使用mkstore成功創建了錢包,並在其中存儲了憑據。我的tnsnames.ora和sqlnames.ora文件具有正確的內容,並且我的ORACLE_HOME和ORACLE_SID環境變量設置正確,因爲我可以使用sqlplus/@ XE成功驗證sqlplus會話。
在同一個終端中,我創建了一個簡單的C程序,用於分配OCIEnv,OCIServer,OCIError和OCIsvcCtx句柄並調用OCIEnvCreate()。這一切都很好。
然後我嘗試調用任何一個「連接」函數,例如OCILogon(也嘗試OCILogon2和OCISessionPoolCreate),並且我總是得到「無效的用戶名/密碼」。我試圖調用它,因爲我看到它爲我的調用sqlplus定義,即空值爲0的用戶名和密碼,以及具有適當長度的「XE」的dbname。 (爲了完整性,我也嘗試了「@XE」和「/ @ XE」的dbnames)
我看到有一個用於打開錢包和詢問其內容的安全API,但我認爲這是想要交互的應用程序直接與錢包的內容(即添加/刪除憑證等)。也許這是我的錯誤假設...
有關於如何以編程方式執行此操作的寶貴信息,所以如果任何人有任何指針或一個可以簡單連接到數據庫的小型工作示例這樣我會非常感激。
非常感謝
本
大衛,非常感謝您的回答。自發布原始問題以來,我也完全按照您的建議採用了相同的方式工作。我還發現,沒有辦法通過任何類型的連接池進行此操作,所以很高興知道我們最終獲得了相同的解決方案。非常感激。問候。 Ben – user3307344
你們中的任何一個人都知道這是否也適用於EZ-Connect?我們根本沒有使用ORACLE_HOME或ORACLE_SID,也沒有任何.ora文件(使用Instant-Client),並且寧願留在EZ-Connect中。 – ddevienne