Oracle 11g 通过透明网关访问瀚高数据库
Oracle 11g 訪問瀚高數(shù)據(jù)庫
一、前提
這個訪問瀚高數(shù)據(jù)庫的方式,本質(zhì)上就是以 Oracle 的透明網(wǎng)關(guān)為基礎(chǔ),Oracle 數(shù)據(jù)庫安裝的時候默認就安裝透明網(wǎng)關(guān)了。
場景
操作系統(tǒng):Centos7.9
處理:x86_64
Oracle數(shù)據(jù)庫版本:11.2.0.4
Oracle數(shù)據(jù)庫IP地址:192.168.70.107
瀚高數(shù)據(jù)庫版本:hgdb-see-4.5.7
瀚高數(shù)據(jù)庫IP地址:192.168.70.169,端口號:5866
二、安裝驅(qū)動
在 Oracle 服務(wù)器上,安裝 unixODBC,命令如下:
yum install -y unixODBC unixODBC-devel需要使用瀚高的提供的驅(qū)動包,因為這個支持sm3加密,同時 psqlodb 版本也支持 Oracle11g 的透明網(wǎng)關(guān)。下載地址:
鏈接:https://pan.baidu.com/s/1l67cHDkDltMX-n5Nt3rZAQ 提取碼:yyds (如果鏈接失效,請聯(lián)系瀚高獲取)
將瀚高提供的驅(qū)動包解壓
tar -xzvf hgodbc-centos7.9_x86-64.tar.gz -C /opt這里要留意庫文件 psqlodbcw.so 的絕對路徑:
/opt/HG_ODBC/psqlODBC/lib/psqlodbcw.so后面配置透明網(wǎng)關(guān)要用到。
三、配置文件
Oracle 數(shù)據(jù)庫安裝完后,自帶透明網(wǎng)關(guān),一般不需要額外單獨安裝。故在 Oracle 服務(wù)器上執(zhí)行本章節(jié)操作。
3.1 配置 ODBC 數(shù)據(jù)源
切到 Oracle用戶下,執(zhí)行:
vi /home/oracle/.odbc.ini內(nèi)容如下:
[HGDB_169] Description = HighgoDB ODBC Driver = PostgreSQL Database = highgo Servername = 192.168.70.169 UserName = sysdba Password = Hello@123 Port = 5866 ReadOnly = 0 ConnSettings = set client_encoding to gbk3.2 配置 listener.ora
Oracle 用戶執(zhí)行:
vi $ORACLE_HOME/network/admin/listener.ora追加以下內(nèi)容
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = HGDB)(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)(PROGRAM = dg4odbc)(ENV="LD_LIBRARY_PATH=/opt/HG_ODBC/psqlODBC/lib")))說明:
重啟監(jiān)聽:
lsnrctl reload查看監(jiān)聽狀態(tài):
[oracle@dbs ~]$ lsnrctl statusLSNRCTL for Linux: Version 11.2.0.4.0 - Production on 10-OCT-2022 22:38:59 ...... Services Summary... Service "HGDB" has 1 instance(s).Instance "HGDB", status UNKNOWN, has 1 handler(s) for this service... Service "orcl.qcj.com" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service... Service "orclXDB.qcj.com" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully看到上面有“Service “HGDB” has 1 instance(s).”就可以了。
3.3 配置 tnsname.ora
Oracle用戶執(zhí)行:
vi $ORACLE_HOME/network/admin/tnsnames.ora追加以下內(nèi)容:
HG_LINK =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA = (SID = HGDB))(HS = OK))測試一下:
tnsping HG_LINK 5正常結(jié)果如下:
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 10-OCT-2022 22:40:08Copyright (c) 1997, 2013, Oracle. All rights reserved.Used parameter files: /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.oraUsed TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.70.107)(PORT = 1521)) (CONNECT_DATA = (SID = HGDB)) (HS = OK)) OK (0 msec) OK (0 msec) OK (0 msec) OK (0 msec) OK (0 msec)3.4 配置透明網(wǎng)關(guān)
在透明網(wǎng)關(guān)所在的主機上,切到Oracle用戶執(zhí)行:
vi $ORACLE_HOME/hs/admin/initHGDB.ora內(nèi)容如下:
HS_FDS_CONNECT_INFO = HGDB_169 HS_FDS_TRACE_LEVEL = off HS_FDS_SHAREABLE_NAME = /opt/HG_ODBC/psqlODBC/lib/psqlodbcw.so HS_NLS_NCHAR=UCS2 HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8 #HS_LANGUAGE=AMERICAN_AMERICA.ZHS16GBK set ODBCINI = /home/oracle/.odbc.ini四、測試
4.1 創(chuàng)建數(shù)據(jù)庫連接
用 tnsname.ora 中的鏈接名:
create public database link hgdb connect to "sysdba" identified by "Hello@123" using 'HG_LINK';直接定義連接信息,不需要解析:
DROP PUBLIC DATABASE LINK hgdb;CREATE PUBLIC DATABASE LINK hgdbCONNECT TO "sysdba"IDENTIFIED BY "Hello@123"USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.70.107)(PORT = 1521))) (CONNECT_DATA = (SID = HGDB)) (HS = OK) )';以上兩種創(chuàng)建連接的方式二選一即可。
4.2 查詢
在瀚高數(shù)據(jù)庫下,使用用戶 sysdba 登錄數(shù)據(jù)庫 highgo,創(chuàng)建表t1,并插入幾條數(shù)據(jù):
create table t1(id integer, name varchar); insert into t1 values(1,'瀚高'),(2,'test');再回到Oracle執(zhí)行:
select * from "public"."t1"@hgdb;注意:
瀚高數(shù)據(jù)庫中默認是小寫,Oracle默認是大寫,所以這里需要用雙引號將表名、列名等標(biāo)識符引起來,否則都會轉(zhuǎn)成大寫傳到瀚高庫將找不到對象。
4.3 修改
插入行:
insert into "public"."t1"@hgdb values(10,'aaa');更新行:
update "public"."t1"@hgdb set "name"='abc' where "id" = 10;刪除行:
delete from "public"."t1"@hgdb where "id" = 10;4.4 同義詞
如果不想頻繁在表后面用個鏈接名,可以創(chuàng)建別名來代替。
CREATE SYNONYM t1 FOR "t1"@hgdb;然后就可以這樣使用了,不需要加雙引號:
select * from t1;在Oracle本地建的同義詞,默認就是大寫的。
總結(jié)
以上是生活随笔為你收集整理的Oracle 11g 通过透明网关访问瀚高数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教程二:go语言windows gui界
- 下一篇: SQL 查询并不是从 SELECT 开始