Oracle 11g 通过透明网关访问瀚高数据库_oracle透明网关事默认安装的么?-程序员宅基地

技术标签: oracle  瀚高数据库  Oracle技术  数据库  

Oracle 11g 访问瀚高数据库

一、前提

这个访问瀚高数据库的方式,本质上就是以 Oracle 的透明网关为基础,Oracle 数据库安装的时候默认就安装透明网关了。

场景

操作系统:Centos7.9

处理:x86_64

Oracle数据库版本:11.2.0.4

Oracle数据库IP地址:192.168.70.107

瀚高数据库版本:hgdb-see-4.5.7

瀚高数据库IP地址:192.168.70.169,端口号:5866

二、安装驱动

在 Oracle 服务器上,安装 unixODBC,命令如下:

yum install -y unixODBC unixODBC-devel

需要使用瀚高的提供的驱动包,因为这个支持sm3加密,同时 psqlodb 版本也支持 Oracle11g 的透明网关。下载地址:

链接:https://pan.baidu.com/s/1l67cHDkDltMX-n5Nt3rZAQ 提取码:yyds (如果链接失效,请联系瀚高获取)

将瀚高提供的驱动包解压

tar -xzvf hgodbc-centos7.9_x86-64.tar.gz -C /opt

这里要留意库文件 psqlodbcw.so 的绝对路径:

/opt/HG_ODBC/psqlODBC/lib/psqlodbcw.so

后面配置透明网关要用到。

三、配置文件

Oracle 数据库安装完后,自带透明网关,一般不需要额外单独安装。故在 Oracle 服务器上执行本章节操作。

3.1 配置 ODBC 数据源

切到 Oracle用户下,执行:

vi /home/oracle/.odbc.ini

内容如下:

[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 gbk

3.2 配置 listener.ora

Oracle 用户执行:

vi $ORACLE_HOME/network/admin/listener.ora 

追加以下内容

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")
    )
  )

说明:

  1. SID_LIST_LISTENER 后面的 “LISTENER” 是当前文件中监听的实际名称,不能随便命名。
  2. SID_NAME 是瀚高数据库的实例,可以自定义一个名称,如这里的:HGDB

重启监听:

lsnrctl reload

查看监听状态:

[oracle@dbs ~]$ lsnrctl status

LSNRCTL 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用户执行:

vi $ORACLE_HOME/network/admin/tnsnames.ora

追加以下内容:

HG_LINK =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA = (SID = HGDB))
    (HS = OK)
  ) 

测试一下:

tnsping HG_LINK 5

正常结果如下:

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 10-OCT-2022 22:40:08

Copyright (c) 1997, 2013, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora


Used 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 配置透明网关

在透明网关所在的主机上,切到Oracle用户执行:

vi $ORACLE_HOME/hs/admin/initHGDB.ora

内容如下:

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 创建数据库连接

用 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 hgdb
 CONNECT 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)
)';

以上两种创建连接的方式二选一即可。

4.2 查询

在瀚高数据库下,使用用户 sysdba 登录数据库 highgo,创建表t1,并插入几条数据:

create table t1(id integer, name varchar);
insert into t1 values(1,'瀚高'),(2,'test');

再回到Oracle执行:

 select * from "public"."t1"@hgdb; 

注意:

瀚高数据库中默认是小写,Oracle默认是大写,所以这里需要用双引号将表名、列名等标识符引起来,否则都会转成大写传到瀚高库将找不到对象。

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 同义词

如果不想频繁在表后面用个链接名,可以创建别名来代替。

CREATE SYNONYM t1 FOR "t1"@hgdb;

然后就可以这样使用了,不需要加双引号:

select * from t1;

在Oracle本地建的同义词,默认就是大写的。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qiuchenjun/article/details/127385149

智能推荐

Safari浏览器下使用H5视频播放问题的解决_safari用get方法请求视频资源-程序员宅基地

文章浏览阅读8.8k次。我们的项目,由于先做的安卓APP的开发,在安卓上测试视频播放通过以后。同样的接口放到IOS上是不能播放的。后来查了相关资料了解到其中的差别,总的来说,安卓上是请求一个视频链接,返回一整个视频文件。但是在IOS上,不是一次性请求全部文件的,一般首先会请求0-1字节,然后多次分段请求视频数据。 所以首先要解析Request Headers里面的Range字段,获取本..._safari用get方法请求视频资源

管理开发系统八:winform导出excel_winfromexcel导出保存文件-程序员宅基地

文章浏览阅读4.1k次,点赞5次,收藏23次。我这里说3种方法 一种数据流 有点速度比较快,缺点列表宽度不适配 日期长的直接显示##### 拉宽了才会显示正常。//1导出 excel 数据流方式 public static void ExcelBtnLiu(DataGridView dgvUseName, string name) { if (dgvUseName.Rows.Co..._winfromexcel导出保存文件

灵敏度分析-程序员宅基地

文章浏览阅读2.1w次,点赞12次,收藏61次。灵敏度分析(sensitivity analysis,又称敏感性分析)教程概念在数学建模中使用最优化方法时,我们常常会忽略对模型进行灵敏度分析,若缺少这一个步骤,会使得模型的可靠度受到质疑,那到底什么是灵敏度分析?参考百度:灵敏度分析,是研究与分析一个系统(或模型)的状态或输出变化对系统参数或周围条件变化的敏感程度的方法。说人话,就是改变模型(公式)的某个参数,引起这个模型输出的变化的程度。li例1????例2????例3????..._灵敏度分析

Selenium爬虫-获取浏览器Network请求和响应_采集软件 抓取network的请求-程序员宅基地

文章浏览阅读2.5w次,点赞19次,收藏142次。1.问题自从发现Selenium这块新大陆后,许多异步加载、js加密、动态Cookie等问题都变得非常简单,大大简化了爬虫的难度。但是有些时候使用Selenium仍然有一些缺陷,比如现在很多网站数据都是通过json结构的接口来交互,通过分析报文的方式直接发包可以直接拿到json数据,数据不但全而且还很好解析,这比解析html网页容易多了。另一个非常重要的问题就是,很多时候一些接口返..._采集软件 抓取network的请求

ios下使用-webkit-overflow-scrolling出现卡顿无法滑动的bug解决-程序员宅基地

文章浏览阅读1w次。现在做的小程序项目需要适配iphoneX,所以不再使用page自身的滚动,需要在判断是iphoneX机型下把view底部留白34px;34px是避开iphoneX底部的操作范围,以下代码同样适用H5。实现方法:最外层用content包裹滚动,默认情况下滑动时手指松开即停止滑动。为了实现顺滑滚动,加上这句代码:-webkit-overflow-scrolling: auto | touch;auto...

Python 3.8 + PyCharm + PyQt5(四)-串口助手_pycharm怎么制作串口-程序员宅基地

文章浏览阅读4.2k次,点赞9次,收藏60次。Python 3.8 + PyCharm + PyQt5(四)-串口助手UI布局代码编写模块加载代码实现线程发送数据所有后面讲解和记录的源码都会在GuiHub中,可以自行下载上节我们讲到通过数字输入框,然后做了一个简单的加法,操作了按钮事件,字符转换等。这次我们来讲讲实现串口助手,通过串口进行通讯。UI布局首先创建pycharm工程建立新的UI,并拖拽QT控件,进行UI的布局,布局如下,当然个人喜好,喜欢怎么放就怎么放。当然两个按钮分别对应了2个槽:一个打开串口槽:一个发送给数据槽:_pycharm怎么制作串口

随便推点

C++实现双人对决的围棋程序,这是上面神仙围法?_胜负对决c++-程序员宅基地

文章浏览阅读1.1k次。围棋使用格状棋盘及黑白二色棋子进行对弈,双方在网格交叉点上交替放置黑白两色棋子,落子后不能移动,围地吃子,以所围“地”的大小决定胜负。这是一款小编用C++编写的可以双人对决的围棋程序,程序不很复杂,通过编写这个小程序,让我对VC++有了更深层的了解。项目结构展示:源码展示:声明:本文内容来源于网络,如有侵权请联系删除..._胜负对决c++

NSDate 格式化含有毫秒_nsdate格式化毫秒-程序员宅基地

文章浏览阅读1.6k次。[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];_nsdate格式化毫秒

CSS控制文字超出范围显示省略号_css控制内容超出显示范围-程序员宅基地

文章浏览阅读1.6k次。实现方法: overflow:hidden;text-overflow:ellipsis;white-space:nowrap;_css控制内容超出显示范围

查看hdfs的fsimage和editlog_edits文件和fsimage文件那个体现了hdfs最新状态-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏7次。(一)名称解释fsimage,namenode的元数据镜像文件,保存在磁盘editlog,namenode操作日志fstime,最近一次的checkpoint时间metadata,一个文件存储在哪些DataNode节点的哪些位置的元数据信息NN,namenodeSNN,secondarynamenodeNamenode主要维护两个文件,一个是fsimage,一个是editlog(二)如何查看fsi..._edits文件和fsimage文件那个体现了hdfs最新状态

关于上传FileUpload异常:Stream ended unexpectedly_java stram ended unexpectedly-程序员宅基地

文章浏览阅读8.3k次,点赞2次,收藏2次。关于上传FileUpload异常:Stream ended unexpectedlyJSP页面上传JAVA后台报错问题场景:解决方案:JSP页面上传JAVA后台报错org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request;org.apache.commons...._java stram ended unexpectedly

node.js试题_一. node.js编程题(共1题,100分) 1. (编程题) 下载并解压附件,编写程序将txt目-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏11次。1、Node是什么?(转自:https://blog.csdn.net/m0_37938910/article/details/103673105)Node.js 就是运行在服务端的 JavaScript。Node.js不是一种独立的语言,也不是一个JavaScript的框架,Node.js只是一个让JavaScript运行在浏览器之外的平台。它采用事件驱动、异步编程、为网络服务而设计,实现了诸如文件系统、模块、包、操作系统 API、网络通信等 Core JavaScript 没有或者不完善的功能。N_一. node.js编程题(共1题,100分) 1. (编程题) 下载并解压附件,编写程序将txt目录