在使用cx_oracle python庫,它返回以下錯誤:
錯誤信息:無法找到一個64位的Oracle客戶端庫:“libclntsh.so:無法打開共享對象文件:沒有這樣的文件或目錄
cx_oracle庫依賴於本地庫libclntsh.so。有一個即時的客戶要求使用cx_oracle庫。
這往往打破由於不可用即時客戶或失蹤這個庫的路徑變量。
為了解決這個問題,我們可以使用下麵的init腳本下載即時客戶機和添加的路徑變量。有時動態鏈接器運行時需要刷新緩存,特別是如果有交叉依賴本地庫,他們放置在機器在LD_LIBRARY_PATH設置。在這種情況下,運行ldconfig - v /道路/ /本地/ libs之前加載本地庫從Java。
這是一個示例init腳本,該腳本將幫助
步驟1:創建你想要的基本目錄來存儲init腳本(假設不存在。)這裏我們使用dbfs: /磚/ <目錄>為例。
dbutils.fs.mkdirs (“dbfs: /磚/ <目錄> /”)
步驟2:創建腳本
dbutils.fs.put (“dbfs: /磚/ oracleTest / oracle_ctl。sh”、“”“# !/bin/bash #下載即時客戶存檔文件和更新url的不同版本的# wget - quiet-O / tmp / instantclient-basiclite-linux.x64-19.3.0.0.0dbru.ziphttps://download.oracle.com/otn_software/linux/instantclient/193000/instantclient-basiclite-linux.x6..。將/ tmp / instantclient-basiclite-linux.x64-19.3.0.0.0dbru解壓縮。zip - d /磚/司機/ oracle_ctl / sudo回聲'出口LD_LIBRARY_PATH =“磚/司機/ oracle_ctl”> > /磚/ / conf / spark-env火花。sh sudo echo '出口ORACLE_HOME =“磚/司機/ oracle_ctl”> > /磚/ / conf / spark-env火花。sh”“”,真的)
第三步:驗證腳本存在。
顯示器(dbutils.fs.ls(“dbfs: /磚/ <目錄> / oracle_ctl. sh"))
步驟4。在集群中配置一個集群級init腳本
步驟5:重新啟動集群
這對我來說不工作。我得到一個錯誤
dpi - 1047:不能找到一個64位的Oracle客戶端庫:“磚/司機/ oracle_ctl / / lib / libclntsh。所以:不能打開共享對象文件:沒有這樣的文件或目錄”。
當我試圖使用dbutils.f.ls檢查目錄(“/ oracle_ctl /磚/驅動程序”)我不能夠找到該目錄。可能是init腳本不是複製客戶端。所以我還手動下載Oracle客戶端和映射,集群通過創建一個位置”/磚/司機/ oracle_ctl /”,仍然沒有成功。
我也注意到錯誤是指向一個位置”..../ oracle_ctl / / lib / libclntsh”。當我檢查下載的客戶端,我無法找到任何文件夾/lib/libclntsh.可能它指向錯誤的目錄,因為最近的變化嗎?
任何幫助都是欣賞連接Oracle數據庫係統的前提。
嗨@Manoj Ashvin你能使用下麵的init腳本並嚐試嗎?
dbutils.fs.put (“dbfs: /磚/ oracleTest / oracle_ctl_new。sh”、“”“# !/bin/bash sudo apt-get安裝libaio1 wget - o / tmp / instantclient-basiclite-linuxx64.zip——安靜https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip將/ tmp / instantclient-basiclite-linuxx64解壓縮。zip - d /磚/司機/ oracle_ctl / mv /磚/驅動程序/ oracle_ctl / instantclient * /磚/驅動程序/ oracle_ctl instantclient sudo echo '出口LD_LIBRARY_PATH = " /磚/司機/ oracle_ctl / instantclient /“”> > /磚/ / conf / spark-env火花。sh sudo回聲的出口ORACLE_HOME = " /磚/司機/ oracle_ctl / instantclient /“”> > /磚/ / conf / spark-env火花。sh”“”,真的)
你好@Manoj對衝基金,
謝謝你的建議。我使用了腳本和錯誤消失了。華友世紀!