oracle中的hit,HIT工程师踩“oracle网关失效”坑日记

2023-11-10 16:00

本文主要是介绍oracle中的hit,HIT工程师踩“oracle网关失效”坑日记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在展开叙述之前,先对oracle网关用来干吗的做一个简单介绍。

一、oracle网关的作用

假设你有这样的一个需求,想通过oracle数据库直接访问异构的数据库,那就要用到oracle网关。我当年就是怀揣着这样一个梦想,如果能在oracle里面访问mssql数据库,那就太好了,我就可以用plsql直接查询mssql,很方便。广东省大部分的医院都会存在这两种数据库,典型的应用场景,his跑在oracle之上,病案管理系统跑在mssql上。在查询统计的工作当中,有时候会用到his与病案系统数据合并查询。比如根据病案首页数据来分析医保患者。

带着这个梦想,在百度上寻找答案,一个个关于网关的解决方案映入眼帘。经过一个星期的折腾,终于配置好网关可以访问mssql,欣喜若狂,以后终于方便多了。

a49216ac8a21

网关

a49216ac8a21

通过网关查sql2000

二、oracle网关失效

上个星期我们决定将我院的病案系统数据库sql 2000升级到sql 2008,为了升级方便,在另一台服务器上安装sql 2008并导入数据,升级完全以后,我将用到连接病案数据库的程序改为新的IP地址,都正常可以访问,就剩下网关了,我按之前文档配置成新的IP,再在plsql测试,发现sql语句一直在执行,卡在那里,既不出结果,也不报错。

a49216ac8a21

遇到这种问题,上一篇文章也提过,最有效的方法是用排除法,然而在这种情况下面,排除法是失效的。使用排除法有个前提,必须要知道排除选项确定不是这个原因,显然这里你是无法确定的,是oracle bug?是mssql 2008 已不支持?是oracle 网关bug?

oracle网关虽然好用,但出了问题很难解决。面对这种情况,我们最好的方法以后规避它,能不用就不用,尤其是开发的程序里面不要使用,但是临时的SQL统计可以使用。要不然像彭大帅那样“【彭建明专栏】IT运维系列谈(3):亲历让人后怕的医院数据库“灾难恢复”,自己亲手埋下“地雷”,还亲自踩上去,被炸个人秧马翻就不好了。

三、pb程序修复“网关失效”坑

我开发万能信息科程序里面,一小部份功能,当时为了方便(避免连接2个数据库),使用oracle网关进行开发,用pb9找到相应的"数据窗口",右键---edit source,一定要用这种方式打开,如果通过工具栏”sql“进去修改,pb会连接oracle数据库,现在网关已失效,pb会卡死在这里。

a49216ac8a21

a49216ac8a21

badata连接到网关

a49216ac8a21

再将相应window对象改成直接连接mssql数据库来处理,但是奇葩的问题来了,比如我只改一条语句,保存的时候一直提示未响应,pb卡死在那里。

a49216ac8a21

以前一直都可以,为什么现在不行?是不是win7环境有问题,百度找一下,说有这个bug会导致这种问题,但是我下载补丁,安装以后,测试故障依旧。

a49216ac8a21

然后又找了一台win xp的机器,来修改,故障依旧。这就奇怪了,到底是什么原因会引发未响应,我尝试改了一下其他窗口的代码,是正常的。为什么这个连接sql server的代码会出问题,带着这个问题一直思考,今天终于想明白了,原来pb保存window对象时,首先会检查一下语句是否正确,包括”嵌入式sql语法“,因为程序之前引用了badata,而badata是连接网关来的,pb检查嵌入式sql语法正确并连接oracle数据库验证,但是网关已失效,无响应也不报错,导致pb就卡死在这里。

原因找到了,接下来就好办法,打开编码先将window对象所有涉及到badata全部去掉,再保存,pb就正常了!

a49216ac8a21

冯火    2019-12-17

这篇关于oracle中的hit,HIT工程师踩“oracle网关失效”坑日记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_33218378/article/details/116516607
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/383743

相关文章

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

Idea插件MybatisX失效的问题解决

《Idea插件MybatisX失效的问题解决》:本文主要介绍Idea插件MybatisX失效的问题解决,详细的介绍了4种问题的解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录一、重启idea或者卸载重装MyBATis插件(无需多言)二、检查.XML文件与.Java(该文件后缀Idea可能会隐藏

C++迭代器失效的避坑指南

《C++迭代器失效的避坑指南》在C++中,迭代器(iterator)是一种类似指针的对象,用于遍历STL容器(如vector、list、map等),迭代器失效是指在对容器进行某些操作后... 目录1. 什么是迭代器失效?2. 哪些操作会导致迭代器失效?2.1 vector 的插入操作(push_back,

MySQL索引失效问题及解决方案

《MySQL索引失效问题及解决方案》:本文主要介绍MySQL索引失效问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql索引失效一、概要二、常见的导致MpythonySQL索引失效的原因三、如何诊断MySQL索引失效四、如何解决MySQL索引失

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.