【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.rhkb.cn/news/378298.html

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

相关文章

数据湖仓一体(一) 编译hudi

目录 一、大数据组件版本信息 二、数据湖仓架构 三、数据湖仓组件部署规划 四、编译hudi 一、大数据组件版本信息 hudi-0.14.1zookeeper-3.5.7seatunnel-2.3.4kafka_2.12-3.5.2hadoop-3.3.5mysql-5.7.28apache-hive-3.1.3spark-3.3.1flink-1.17.2apache-dolphinscheduler-3.1.9…

基于AT89C51单片机的16×16点阵LED显示器字符滚动显示设计(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于AT89C51单片机的1616点阵LED显示器字符滚动显示设计的详情介绍,如果对您有帮助的话,还请关注一下哦,如果有资源方面的需要可以联系我。 目录 仿真效果图 仿真图 代码 系统论文 资源下载 设计的内容和要求 熟悉51系…

基于视觉工具箱和背景差法的行人检测,行走轨迹跟踪,人员行走习惯统计matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 在三维图中,幅度越大,则表示人员更习惯的行走路线。 2.算法运行软件版本 matlab2022a 3.部分核…

css基础(1)

CSS CCS Syntax CSS 规则由选择器和声明块组成。 CSS选择器 CSS选择器用于查找想要设置样式的HTML元素 一般选择器分为五类 Simple selectors (select elements based on name, id, class) 简单选择器(根据名称、id、类选择元素) //页面上的所有 …

【经验分享】关于静态分析工具排查 Bug 的方法

文章目录 编译器的静态分析cppcheck安装 cppcheck运行 cppcheck 程序员的日常工作,不是摸鱼扯皮,就是在写 Bug。虽然这是一个梗,但也可以看出,程序员的日常一定绕不开 Bug。而花更少的时间修复软件中的 Bug,且不引入新…

Bug:时间字段显示有问题

Bug:时间字段显示有问题 文章目录 Bug:时间字段显示有问题1、问题2、解决方法一:添加注解3、解决方法二:消息转换器自定义对象映射器配置消息转换器 1、问题 ​ 在后端传输时间给前端的时候,发现前端的时间显示有问题…

汽车开发阶段(OTS/VFF/PVS/OS/SOP)

OTS:即英语中的Off Tooling Sample,通常被称为工装样件。它指的是通过配套设备、工装夹具以及模具制造出来的样品,但并不强调生产的时间效率,主要用于验证产品的设计能力。 VFF:在德语中表示为Vorserien Freigabefahr…

太速科技-FMC207-基于FMC 两路QSFP+光纤收发子卡

FMC207-基于FMC 两路QSFP光纤收发子卡 一、板卡概述 本卡是一个FPGA夹层卡(FMC)模块,可提供高达2个QSFP / QSFP 模块接口,直接插入千兆位级收发器(MGT)的赛灵思FPGA。支持利用Spartan-6、Virtex-6、Kin…

eNsp公司管理的网络NAT策略搭建

实验拓扑图 实验需求: 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 8,分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的http服务器 9,多出口环境基于带…

JavaWeb(四:Ajax与Json)

一、Ajax 1.定义 Ajax(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML AJAX 不是新的编程语言,指的是⼀种交互方式:异步加载。 客户端和服务器的数据交互更新在局部页面的技术,不需要刷新…

VUE:跨域配置代理服务器

//在vite.config。js中,同插件配置同级进行配置server:{proxy:{"/myrequest":{//代理域名,可自行修改target:"https://m.wzj.com/",//访问服务器的目标域名changeOrigin:true,//允许跨域configure:(proxy,options) > {proxy.on(&…

未知物材料成分配方检测分析

材料成分配方分析是一种通过分析材料的化学成分、结构和性质来确定其组成和配方的方法。这对于产品质量控制、新产品研发、工业问题解决和环保等领域具有重要意义。进行材料成分配方分析通常需要以下步骤: 1. 样品采集:采集需要分析的材料样品&#xff0…

从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望

我在2021年底开始使用Polars和DuckDB。我立刻意识到这些库很快就会成为数据科学生态系统的核心。自那时起,这些库的受欢迎程度呈指数级增长。 在这篇文章中,我做出了一些关于未来几年数据科学领域的发展方向和原因的预测。 这篇文章旨在检验我的预测能力…

再谈有关JVM中的四种引用

1.强引用 强引用就是我们平时使用最多的那种引用,就比如以下的代码 //创建一个对象 Object obj new Object();//强引用 这个例子就是创建了一个对象并建立了强引用,强引用一般就是默认支持的当内存不足的时候,JVM开始垃圾回收&#xff0c…

【Linux系统编程】软硬链接和动静态库

一,硬链接 1-1,硬链接的认识 Linux下的硬链接本质是在指定的目录下,插入新的文件名和目标文件的眏射关系,并让inode的引用计数加一,这里我们通过 ls 指令可查看到文件详细信息种的硬链接数。这里可参考文件系统的文章…

Linux - 冯-诺依曼体系结构、初始操作系统

目录 冯•诺依曼体系 结构推导 内存提高效率的方法 数据的流动过程 体系结构相关知识 初始操作系统 定位 设计目的 操作系统之上之下分别有什么 管理精髓:先描述,再组织 冯•诺依曼体系 结构推导 计算机基本工作流程图大致如下: 输入设备&a…

Web3D:WebGL为什么在渲染性能上输给了WebGPU。

WebGL已经成为了web3D的标配,市面上有N多基于webGL的3D引擎,WebGPU作为挑战者,在渲染性能上确实改过webGL一头,由于起步较晚,想通过这个优势加持,赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…

【微信小程序知识点】自定义构建npm

在实际开发中,随着项目的功能越来越多,项目越来越复杂,文件目录也变得很繁琐,为了方便进行项目的开发,开发人员通常会对目录结构进行优化调整,例如:将小程序源码放到miniprogram目录下。 &…

JuiceFS缓存特性

缓存 对于一个由对象存储和数据库组合驱动的文件系统,缓存是本地客户端与远端服务之间高效交互的重要纽带。读写的数据可以提前或者异步载入缓存,再由客户端在后台与远端服务交互执行异步上传或预取数据。相比直接与远端服务交互,采用缓存技…

SAP PP学习笔记28 - 生产订单的收货及品质管理

上一章讲了生产订单的很多概念,比如确认(报工)以及报工的各种形式,反冲,自动入库等。 SAP PP学习笔记27 - Confirmation(报工/确认)(CO11,CO11N,CO15,CO12),…