BIEE 12c linux下連接mysql數據源

操作系統:Oracle Linux Server release 6.5 64bit

BIEE版本:12.2.1.1.0

同11g一樣,12c雖然biee自帶了datadirect的mysql驅動,但是該驅動只能連接企業版的mysql,並不支持社區版的的mysql。

所以我們只能採用mysql自己的odbc驅動。有關驅動的下載以及unixODBC的版本要求,具體請參考(BIEE 11g linux下連接mysql數據源)中的內容。


總結就是

unixODBC一定要在unixODBC-2.2.14-15.2.x86_64.rpm及以上

mysql driver 可以使用5.3.6

http://dev.mysql.com/downloads/connector/odbc/

注意匹配正確的操作系統版本




在安裝好unixODBC和mysql驅動之後,接下來就應該進行相關的配置了。

可以參考如官方文檔(Configuring Database Connections Using Native ODBC Drivers)

http://docs.oracle.com/middleware/12211/biee/BIEMG/GUID-CCDD9782-BC2A-497A-8ED0-AECA2ECFB3AE.htm#config_native_dbs


總結下來就是:


1.配置環境變量

修改$BI_DOMAIN/config/fmwconfig/bienv/OBIS目錄的obis.properties文件,向其中添加如下內容:

LD_LIBRARY_PATH=/usr/lib64


2.配置ODBC.ini

修改$BI_DOMAIN/bi/config/fmwconfig/bienv/core目錄下的odbc.ini

添加如下內容:

[mysql_test]
Driver = /usr/lib64/libmyodbc5w.so
Description = Connector/ODBC 5 Driver DSN
SERVER =  192.168.5.1

PORT = 8803
Database = demo
OPTION =
SOCKET = /tmp/mysql.sock
IANAAppCodePage = 106
Charset = UTF8




但是你會發現使用官方的步驟並不能成功配置mysql數據源,當你從biee向mysql數據源發出查詢的時候,bi server就會掛掉

State: 08004. Code: 10092. [NQODBC] [SQL_STATE: 08004] [nQSError: 10092] The Oracle BI Server is not currently running. (08004)
State: 08004. Code: 10092. [NQODBC] [SQL_STATE: 08004] [nQSError: 10092] The Oracle BI Server is not currently running.Cannot connect to server machine (08004)


這是爲什麼呢?


通過查看bi server的日誌($BI_DOMAIN/bi/servers/obis1/logs/obis1.out)你看發現如下內容


<Nov 4, 2016 10:02:18 PM CST> <INFO> <NodeManager ComponentManager> <LD_LIBRARY_PATH=/u01/app/Oracle/Middleware/Oracle_Home/bi/modules/oracle.bi.datadirect.odbc/8.0.1/lib:/u01/app/Oracle/Middleware/Oracle_Home/bi/modules/oracle.bi.datadirect.odbc/7.1.5/lib:/u01/app/Oracle/Middleware/Oracle_Home/bi/bifoundation/server/bin:/u01/app/Oracle/Middleware/Oracle_Home/bi/bifoundation/web/bin:/u01/app/Oracle/Middleware/Oracle_Home/bi/clients/Essbase/EssbaseRTC/bin:/u01/app/Oracle/Middleware/Oracle_Home/bi/lib:/u01/app/Oracle/Middleware/Oracle_Home/lib:/u01/app/Oracle/Middleware/Oracle_Home/oracle_common/adr:/u01/app/Oracle/Middleware/Oracle_Home/oracle_common/lib:/usr/lib:/lib:/usr/lib64::::/u01/app/Oracle/Middleware/Oracle_Home/wlserver/server/native/linux/x86_64:/u01/app/Oracle/Middleware/Oracle_Home/wlserver/server/native/linux/x86_64/oci920_8>


不知道大家有沒有看出來什麼問題?就是我們在obis.properties中配置的/usr/lib64這個目錄存在於LD_LIBRARY_PATH變量值的中間,即在datadirect驅動路徑之後。

由於datadirect和mysql odbc使用的是同樣的驅動管理器,誰的lib在前,誰的在後就有講究;我們需要把mysql的lib path放到前面去

即變成如下

LD_LIBRARY_PATH=/usr/lib64:/u01/app/Oracle/Middleware/Oracle_Home/bi/modules/oracle.bi.datadirect.odbc/8.0.1/lib:/u01/app/Oracle/Middleware/Oracle_Home/bi/modules/oracle.bi.datadirect.odbc/7.1.5/lib:/u01/app/Oracle/Middleware/Oracle_Home/bi/bifoundation/server/bin:/u01/app/Oracle/Middleware/Oracle_Home/bi/bifoundation/web/bin:/u01/app/Oracle/Middleware/Oracle_Home/bi/clients/Essbase/EssbaseRTC/bin:/u01/app/Oracle/Middleware/Oracle_Home/bi/lib:/u01/app/Oracle/Middleware/Oracle_Home/lib:/u01/app/Oracle/Middleware/Oracle_Home/oracle_common/adr:/u01/app/Oracle/Middleware/Oracle_Home/oracle_common/lib:/usr/lib:/lib::::/u01/app/Oracle/Middleware/Oracle_Home/wlserver/server/native/linux/x86_64:/u01/app/Oracle/Middleware/Oracle_Home/wlserver/server/native/linux/x86_64/oci920_8>


怎麼才能這樣呢?

我們必須得知道設置這個先後順序,通過觀察日誌可以得知,8.0.1的datadirect lib path是最後設置的,那麼我們只需要知道是哪裏完成這個設置的即可。

那怎麼才能知道呢?

很簡單,使用如下命令查找即可

find /u01/app/Oracle -type f -name "*.properties" | xargs grep "8.0.1"

這樣會得到一堆文件,我們只需要修改其中的一個文件即可

/u01/app/Oracle/Middleware/Oracle_Home/bi/modules/oracle.bi.sysman/env/odbc.properties

注意:爲什麼我會查找.properties文件,以及知道是oracle.bi.sysman目錄下的這個文件呢?

因爲我先查找到.sh的文件,沒有效果。然後oracle.bi.sysman下面的文件,是從obis1.out中的日誌觀察得出來的 其中有sysman相關的信息。


打開/u01/app/Oracle/Middleware/Oracle_Home/bi/modules/oracle.bi.sysman/env/odbc.properties

注:在12.2.1.2.0版本中修改此文件已經無效,應該修改  ----2016/12/13修改

$FMW_HOME/bi/modules/oracle.bi.datadirect.odbc/8.0.1/odbc.properties



將其中的

LD_LIBRARY_PATH=$BI_PRODUCT_HOME/modules/oracle.bi.datadirect.odbc/8.0.1/lib,$BI_PRODUCT_HOME/modules/oracle.bi.datadirect.odbc/7.1.5/lib

改成 

LD_LIBRARY_PATH=/usr/lib64,$BI_PRODUCT_HOME/modules/oracle.bi.datadirect.odbc/8.0.1/lib,$BI_PRODUCT_HOME/modules/oracle.bi.datadirect.odbc/7.1.5/lib

即可。

同時將$BI_DOMAIN/config/fmwconfig/bienv/OBIS目錄的obis.properties文件中的

LD_LIBRARY_PATH=/usr/lib64 刪除


最後重啓bi server即可。

cd /u01/app/Oracle/bi_domain/bi/bitools/bin
./stop.sh -i obis1 && ./start.sh -i obis1


























發佈了112 篇原創文章 · 獲贊 18 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章