源起:sap bw升级hana,客户需要将oracle dblinke查询hana,作为一位小白开发的我首先没用过dblinke ,其次对bw一无所知,无奈硬着头皮搞完,艰辛历程就不说了,记录下过程(注意: 主要是basis工作)。
1、主要工具为 oracle gateway,如果是单机的可和oracle在一台服务器;如果是多个oracle连接hana建议单独部署
步骤1:在gateway机器上安装安装 unixODBC rpms。
步骤2;在 gateway机器上安装sap hana客户端
步骤3: 创建 /etc/odbc.ini 内容如下所示
[H1X]
驱动程序=/usr/sap/hdbclient/libodbcHDB.so
ServerNode=serverhana:30015
步骤 4 – 安装 Oracle Gateway 软件。
步骤5:设置运行 oracle 网关的用户的环境变量。
LD_LIBRARY_PATH=/usr/lib64:/usr/sap/hdbclient:/oracle/BW1/112_64/lib
步骤6:创建 init.ora。就我而言,我将其称为 dg4odbc (initdg4odbc.ora)。
HS_DB_NAME = H1X
HS_FDS_CONNECT_INFO = H1X <====== 这是来自第 2 步 /etc/odbc.ini 的 DSN 名称
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
HS_LANGUAGE=AMERICAN_AMERICA.UTF8
HS_NLS_NCHAR=UCS2
HS_FDS_TRANSACTION_MODEL=READ_ONLY
设置 ODBCINI=/etc/odbc.ini
步骤 7 – Create listener.ora
LISTENER =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=oragwhost)(PORT=1551))
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=dg4odbc)
(ORACLE_HOME=/oracle/BW1/112_64)
(PROGRAM=dg4odbc)
(ENV=”LD_LIBRARY_PATH=/usr/lib64:/oracle/BW1/112_64/lib:”)
)
)
步骤 8 – Start listener
lsnrctl start
步骤 9 –测试unixODBC 是否正常
Login as user which will run oracle gateway and check LD_LIBRARY_PATH (refer step 4 above) and use below commands.
isql -v <DSN name from step 2 /etc/odbc.ini>
For example isql -v H1X SYSTEM password
+—————————————+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+—————————————+
SQL> select * from dummy
+——+
| DUMMY|
+——+
| X |
+——+
SQLRowCount returns 1
1 rows fetched
If you see these output you are half way through. unixODBC is working.
Now its time to work on oracle database from where data will be read with SELECT statements.
步骤 10 – 在 tnsnames.ora 中添加条目在我的情况下
dg4odbc =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=oragwhost)(PORT=1551))
(CONNECT_DATA=(SID=dg4odbc))
(HS=OK)
)
步骤 11 – 创建dblinke
CREATE PUBLIC DATABASE LINK H1X CONNECT TO
“SYSTEM” IDENTIFIED BY “password” USING ‘dg4odbc’;
SQL> select * from dummy@H1X;