在异构数据库环境中,实现Oracle与GBase 8s之间的无缝连接是一项关键任务。DBLink提供了一种高效的方法来连接和操作这两个系统。本文将详细介绍如何在Oracle环境中配置DBLink以连接GBase 8s数据库。

软件版本信息

  • GBase 8s:GBase8sV8.8_AEE_3.5.0_3NW1_6_86443b
  • Oracle:11g

Oracle到GBase 8s DBLink配置步骤

1、oracle端安装unixodbc

yum install unixODBC

2、oracle端安装gbasecsdk

tar -xvf clientsdk_3.5.0_3NW1_6_86443b_RHEL6_x86_64.tar 
./installclientsdk -i silent -DLICENSE_ACCEPTED=TRUE -DUSER_INSTALL_DIR=/opt/gbase

3、配置odbc配置文件(root在oracle端执行)

cat <<! >/etc/odbc.ini
[ODBC]
UNICODE=UCS-2
[odbc_demo]
Driver=/opt/gbase/lib/cli/iclit09b.so
Description=GBase ODBC DRIVER
Database=gbasedb
LogonID=gbasedbt
pwd=GBase123
Servername=gbase1
CLIENT_LOCALE=zh_cn.utf8
DB_LOCALE=zh_cn.utf8
TRANSLATIONDLL=/opt/gbase/lib/esql/igo4a304.so
!

4、配置环境变量

export ODBCINI=/etc/odbc.ini 
export GBASEDBTDIR=/opt/gbase

5、配置数据库连接sqlhosts文件(root在oracle端执行)

cat <<! >$GBASEDBTDIR/etc/sqlhosts
gbase01 onsoctcp 172.16.3.47 9088
!

6、测试odbc

isql odbc_demo   #显示connect!表示成功

7、配置oracle HS配置文件(oracle用户在oracle端执行)

cd $ORACLE_HOME/hs/admin (切到该目录下)
cat <<! >initodbc_demo.ora   #init<监听实例名>.ora
HS_FDS_CONNECT_INFO=odbc_demo
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so
HS_NLS_NCHAR = UCS2
HS_FDS_FETCH_ROWS=1000
HS_RPC_FETCH_REBLOCKING=OFF
set ODBCINI=/etc/odbc.ini
set GBASEDBTDIR=/opt/gbase
set GBASEDBTSERVER=gbase01
set GBASEDBTDIR=/opt/gbase
set GBASEDBTSQLHOSTS=/opt/gbase/etc/sqlhosts
set PATH=/opt/GBASE/gbase/bin:$PATH
set LD_LIBRARY_PATH=$GBASEDBTDIR/lib/:$GBASEDBTDIR/lib/cli:$GBASEDBTDIR/lib/esql:include:$LD_LIBRARY_PATH
set DELIMIDENT=y
!

8、配置oracle监听(oracle用户在Oracle端执行)

1.修改linstener.ora文件

cd $ORACLE_HOME/network/admin/
vi listener.ora

添加如下数行,如图所示

#add for gbase8s start
(SID_DESC =
     (ORACLE_HOME= /u01/app/oracle/product/11.2.0/db_1)
     (SID_NAME = odbc_demo)
     (PROGRAM=dg4odbc)
    )
#add for gbase8s end

Oracle到南大通用GBase 8s DBLink配置指南_sed

2、修改tnsnames.ora文件

cd $ORACLE_HOME/network/admin/
vi tnsnames.ora

添加如下数行,如图所示

# add for dg4odbc used by gbase8s start
odbc_demo =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.3.47)(PORT = 1521))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SID = odbc_demo)
    )
   (HS=OK)
  )
# add for dg4odbc used by gbase8s end

Oracle到南大通用GBase 8s DBLink配置指南_bc_02

9、重启监听(oracle在oracle端执行)

lsnrctl reload
lsnrctl status #显示odbc_demo正常,状态unkonwn
tnsping odbc_demo #显示ok即正常

Oracle到南大通用GBase 8s DBLink配置指南_oracle_03

Oracle到南大通用GBase 8s DBLink配置指南_bc_04

10、创建测试表(gbasedbt在gbase8s端执行)

export DELIMIDENT=y
dbaccess gbasedb -<<!
create table "TEST"(a int);
!

11、创建dblink并测试(oracle在oracle端执行)

su - oracle
sqlplus / as sysdba
SQL> create database link gbase8slink connect to "gbasedbt" identified by "GBase123" using 'odbc_demo';
SQL> select * from test@gbase8slink;
SQL> insert into test@gbase8slink values(9);

Oracle到南大通用GBase 8s DBLink配置指南_sed_05

Oracle到南大通用GBase 8s DBLink配置指南_oracle_06

12、注意事项

  • gbase8s端必须开启DELIMIDENT=y区分引号包围符中大小写表名必须大写。
  • oracle操作时表名默认为转换为大写加包围符,如“SYSTABLES” 。
  • 列名如不加双引号包围符创建,默认为小写,oracle操作时需编写为小写或省略字段名。
  • dg4odbc不支持DDL操作。

通过本文的步骤,Oracle数据库管理员和开发者可以成功配置DBLink,实现与GBase 8s的高效数据交互。这为跨数据库查询和数据同步提供了强大的支持。下一篇我们将来说说GBase 8s到Oracle DBLink配置情况,感谢您的阅读。