【node-RED 4.0.2】连接 Oracle 数据库踩坑解决,使用模组:node-red-contrib-agur-connector

关于 Oracle

Oracle 就好像一张吸满水的面巾纸,你稍一用力它就烂了。
PS:我更新了更好的模组的教程,这篇已经是旧款的教程,但是它仍旧包含了必要的配置环境变量等操作。
最新的模组教程:node-red-contrib-agur-connector 使用教程 oracle 增 删 改 查

一、发现的问题

1.为什么需要 Oracle Instant Client && 不能使用 rpm 安装的原因

我们在使用 node-red 的 node-red-contrib-agur-connector 插件模组时,需要用到 Oracle Client。
因为我们在服务器上也安装了 Oracle(如果你安装了的话),
那么,Oracle Instant Client 的 rpm 文件安装就会和 Oracle EE 发生冲突。
它会直接把你的数据库冲烂(已经试过了,修好花了好半天)
所以,我们采用直接使用压缩包解压的方法,然后手动配置环境变量。

2.其他的 oracle 插件一直不识别 Oracle 的信息,导致一直报错

我之前使用的 oracle 插件模组是 node-red-contrib-oracledb-mod,这东西有可能是不兼容 4.0.2 版本,一直爆红。
所以干脆换模块了。

二、操作

2.Oracle Instant Client 下载

2.1 官网下载:

请选择下面的你想要的版本,我是 CentOS7.6,所以我选择 Linux x86_64版本。
https://www.oracle.com/cn/database/technologies/instant-client/downloads.html

在这里插入图片描述

2.2 选择版本

选择你想要安装的版本,我安装的是 19.23,你选择你想要的版本。
并且在后续的操作中,请注意所有有版本号的地方,你需要将我的版本号改成你自己的版本号!

在这里插入图片描述

2.3 下载之后,使用 Xftp 将压缩文件 instantclient-basic-linux.x64-19.23.0.0.0dbru.zip 导入服务器

先创建一个目录 /opt/oracle/instantclient ,用来承装 oracle client:

cd /opt/oracle/
mkdir instantclient
cd instantclient

在此目录打开 Xftp,传输压缩包:

在这里插入图片描述

执行命令,解压 oracle instant client:

unzip instantclient-basic-linux.x64-19.23.0.0.0dbru.zip

正常情况下,你应该解压出类似于这样的两个文件,如果可以,我们再进行下一步:

在这里插入图片描述


3.修改环境变量

vim ~/.bashrc

参考下面的内容修改,目的是为了区别 oracle EE 和 oracle client 的环境变量,否则会发生冲突:
请不要照搬全抄,你要写你自己的路径,和ORACLE_SID等等,我只是提供一个文件格式

# Oracle Database 19c 环境变量
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export ORACLE_SID=RAGDOLL# Oracle Instant Client 环境变量
export INSTANT_CLIENT_PATH=/opt/oracle/instantclient/instantclient_19_23
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$INSTANT_CLIENT_PATH:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$INSTANT_CLIENT_PATH:$PATH# 语言设置
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

重新加载环境变量使它生效:

source ~/.bashrc

测试环境变量,看看它们是否指向了正确的目录:

echo $ORACLE_HOME
echo $ORACLE_SIDecho $INSTANT_CLIENT_PATH
echo $LD_LIBRARY_PATH
echo $PATH

输出只要不是空值就可以,如果出现了空值,说明你的环境变量设置的有问题,
最好的方案是,你可以关掉当前的 shell 窗口,重新连接服务器,再执行 echo 命令。
这样可以更准确,因为有时候环境变量的 echo 会输出过去的值(在你刚改完之后)

4.加载 Oracle instantclient 库

进入目录,并且创建一个新文件:

cd /etc/ld.so.conf.d
vim oracle-instantclient.conf

这个文件里要放什么内容呢?
放你的 instantclient 的目录路径!

!!请注意,一定要放你自己的 instantclient 的路径,别全照抄!下面是我的路径,你去找你自己的!!

我的是这样:

在这里插入图片描述
然后保存退出 vim。

5.更新库配置

sudo ldconfig

6.配置 sqlnet.ora 文件,打开 EASY 模式

vim /opt/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora
# 请你自己修改成自己的路径

在文件中添加以下内容:

# sqlnet.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
SQLNET.AUTHENTICATION_SERVICES = (BEQ, NONE)
NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)

7.配置 tnsnames.ora 文件

vim /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora

内容示范(别照抄,把 RAGDOLL 改成你自己的数据库 SID):

# tnsnames.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.RAGDOLL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 120.46.160.61)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = RAGDOLL)))LISTENER_RAGDOLL =(ADDRESS = (PROTOCOL = TCP)(HOST = 120.46.160.61)(PORT = 1521))

一般来说,如果你配置过 oracle EE,那么这个文件就应该被配置过了。
还是看一下我的格式吧:

!!!注意,我里面使用的 RAGDOLL 是我的数据库的 SID 名称,请你也换成你的。
包括所有有 RAGDOLL 的地方,都请换成你自己的数据库的 SID。默认的 SID 是 ORCL。

在这里插入图片描述

8.配置 listener.ora 文件

监听文件要好好配置,不然嗷嗷报错

vim /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora

内容示范(别照抄,把 RAGDOLL 改成你自己的数据库 SID):

# listener.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = RAGDOLL)(ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)(SID_NAME = RAGDOLL)))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))

在这里插入图片描述

9.在 node-RED 安装模组插件 node-red-contrib-agur-connector

不会吧,不会有人还不会进 node-RED 的界面吧
不会也不管了去查一查吧。端口:1880

在这里插入图片描述
直接安装就好了,搜索这个插件:node-red-contrib-agur-connector,然后安装。

在这里插入图片描述

10.在 Oracle 里面创建一个 表,设置字段,并插入一些数据,用于测试

我创建了一个表:CAT
它包含4个字段:ID、COLOR(猫的颜色)、TYPE(猫的品种)、COST(猫的价格)

在这里插入图片描述

我插入了3行数据:如下

在这里插入图片描述

11.配置 node-RED 的 easy-oracle 节点

进入 node-RED 的配置界面。
请不要在意 SELECT * FROM CAT 的 inject 节点,让我们拖拽创建一个 easy-oracle 节点。
在这里插入图片描述

配置的样式如下(Role 请看下面的解析,再填写!!!!):

在这里插入图片描述

请注意!在配置 Role 字段的时候,你需要使用命令来查看你的用户到底是什么 Role
请把下面命令中的 your_username、your_password、your_database_sid,分别换成你的 用户名、密码、数据库SID

su oracle
sqlplus your_username/your_password@your_database_sid

进入 sqlplus 命令行之后执行:

SELECT * FROM USER_ROLE_PRIVS;

你这个用户的 Role 就显示出来了

在这里插入图片描述

12.配置 node-RED 的 inject 节点

inject 节点就相当于输入,有点像 scanner

配置 msg.topic = SELECT * FROM CAT。重要的是,要把类型换成“文本”,也就是 STRING 类型,不可以使用 JSON 哦

在这里插入图片描述

13.配置 node-RED 的 debug 节点

debug 节点更像是一个升级版的 print,直接在控制台里面输出各种内容

在这个例子中,debug 配置如下即可

在这里插入图片描述

14.检查所有节点的连接状态,确认如下:

在这里插入图片描述

15.点击 inject 按钮,发送信息,查看控制台输出

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/47124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI时代:探索个人潜能的新视角

文章目录 Al时代的个人发展1 AI的高速发展意味着什么1.1 生产力大幅提升1.2 生产关系的改变1.3 产品范式1.4 产业革命1.5 Al的局限性1.5.1局限一:大模型的幻觉1.5.2 局限二:Token 2 个体如何应对这种改变?2.1 职场人2.2 K12家长2.3 大学生2.4 创业者 3 人工智能发展…

解决vue3中el-input在form表单按下回车刷新页面

问题:在input框中点击回车之后不是调用我写的回车事件,而是刷新页面 原因: 如果表单中只有一个input 框则按下回车会直接关闭表单 所以导致刷新页面 解决方法 : 再写一个input 表单 ,并设置style"display:none&…

云端财富:在iCloud中安全存储你的个人财务管理数据

云端财富:在iCloud中安全存储你的个人财务管理数据 在数字时代,个人财务管理变得越来越重要。iCloud作为苹果公司提供的云服务,不仅可以存储照片和文档,还可以安全地存储和管理你的个人财务管理数据。本文将详细解释如何在iCloud…

SimMIM:一个类BERT的计算机视觉的预训练框架

1、前言 呃…好久没有写博客了,主要是最近时间比较少。今天来做一期视频博客的内容。本文主要讲SimMIM,它是一个将计算机视觉(图像)进行自监督训练的框架。 原论文:SimMIM:用于掩码图像建模的简单框架 (a…

解决虚拟机与主机ping不通,解决主机没有vmware网络

由于注册表文件缺失导致,使用这个工具 下载cclean 白嫖就行 https://www.ccleaner.com/ 是 点击修复就可以了

关于电路设计中,按键与电阻的问题

一 、在电路图中常看到有些按键外加了电阻而有些没有外加电阻,有上拉有下拉,这些电阻起什么作用,如果不加会导致什么情况? 在电路图中,按键通常需要加电阻来确保稳定的工作状态和消除抖动。按键在电路中扮演着重要的输…

评判卓越架构设计师的关键指标

目录 1. 技术能力 1.1 深厚的技术基础 1.2 架构设计模式 1.3 性能优化和扩展能力 2. 软技能 2.1 沟通能力 2.2 领导能力 2.3 解决问题的能力 3. 实践经验 3.1 项目经验 3.2 持续学习 3.3 失败教训 4. 对业务的理解 4.1 深入理解业务需求 4.2 与产品团队紧密合作…

防火墙双机热备带宽管理综合实验

一、实验拓扑 二、实验要求 12,对现有网络进行改造升级,将当个防火墙组网改成双机热备的组网形式,做负载分担模式,游客区和DMZ区走FW3,生产区和办公区的流量走FW1 13,办公区上网用户限制流量不超过100M&am…

技术速递|Let’s Learn .NET Aspire – 开始您的云原生之旅!

作者:James Montemagno 排版:Alan Wang Let’s Learn .NET 是我们全球性的直播学习活动。在过去 3 年里,来自世界各地的开发人员与团队成员一起学习最新的 .NET 技术,并参加现场研讨会学习如何使用它!最重要的是&#…

Java IO中的 InputStreamReader 和 OutputStreamWriter

Java IO 的流,有三个分类的维度: 输入流 or 输出流节点流 or 处理流字节流 or 字符流 在Java IO库中,InputStreamReader和OutputStreamWriter是两个非常重要的类,它们作为字符流和字节流之间的桥梁。 这两个类使得开发者可以方…

整数或小数点后补0操作

效果展示: 整数情况: 小数情况: 小编这里是以微信小程序举例,代码通用可兼容vue等。 1.在utils文件下创建工具util.js文本 util.js页面: // 格式…

淘宝扭蛋机小程序:旋转惊喜,开启购物新篇章!

在追求创新与惊喜的购物时代,淘宝再次引领潮流,精心打造——淘宝扭蛋机小程序,为您的购物之旅增添一抹不同寻常的色彩。这不仅仅是一个购物工具,更是一个充满趣味、互动与惊喜的宝藏盒子,等待您来探索与发现。 【旋转…

通过Dockerfile构建镜像

案例一: 使用Dockerfile构建tomcat镜像 cd /opt mkdir tomcat cd tomcat/ 上传tomcat所需的依赖包 使用tar xf 解压三个压缩包vim Dockerfile FROM centos:7 LABEL function"tomcat image" author"tc" createtime"2024-07-16"ADD j…

【 香橙派 AIpro评测】烧系统运行部署LLMS大模型跑开源yolov5物体检测并体验Jupyter Lab AI 应用样例(新手入门)

文章目录 一、引言⭐1.1下载镜像烧系统⭐1.2开发板初始化系统配置远程登陆💖 远程ssh💖查看ubuntu桌面💖 远程向日葵 二、部署LLMS大模型&yolov5物体检测⭐2.1 快速启动LLMS大模型💖拉取代码💖下载mode数据&#x…

第九课:服务器发布(静态nat配置)

一个要用到静态NAT的场景,当内网有一台服务器server1,假如一个用户在外网,从外网访问内网怎么访问呢,无法访问,这是因为外网没办法直接访问内网,这时候需要给服务器做一个静态NAT。 静态NAT指的是给服务器…

gltf模型加载 与3d背景贴图

Poly Haveny 用于3d模型跟贴图下载资源 Sketchfab 里面有免费的模型 模型放到public里面 const loader new GLTFLoader()// 加载GLTF模型loader.load(/scene.gltf,(gltf) > {// 将加载的模型添加到场景中scene.add(gltf.scene)// 现在你可以开始渲染循环了let angle …

深度学习落地实战:基于UNet实现血管瘤超声图像分割

前言 大家好,我是机长 本专栏将持续收集整理市场上深度学习的相关项目,旨在为准备从事深度学习工作或相关科研活动的伙伴,储备、提升更多的实际开发经验,每个项目实例都可作为实际开发项目写入简历,且都附带完整的代…

minimap2安装与使用(v 2.28)生物信息学工具26

01 背景 Minimap2 是一个多功能的序列比对程序,可以将 DNA 或 mRNA 序列与大型参考数据库进行比对。典型的使用案例包括:(1)将 PacBio 或 Oxford Nanopore 基因组读长映射到人类基因组;(2)在误…

类和对象(补充)

1.static成员 1>静态成员变量在类外进行初始化 2>静态成员变量为所有类对象所共享,不属于任何具体对象,存放在静态区中 3>静态成员函数没有this指针,可访问其他静态成员,但不可访问非静态的 4>非静态成员函数可以…

jmeter做接口压力测试_jmeter接口性能测试

jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免…