存储过程批量修改数据库中部分表中的ip信息

news/2024/11/22 21:08:03/

一、背景

项目中涉及到环境迁移,迁移过程中,原来的数据库(oracle)中应用ip和数据库ip地址均未变更,每次都是手动修改,想通过存储过程快捷执行

二、修改目标:

把相关几个表格的ip地址变更为其他ip地址

三、脚本参考:

create or replace procedure reset_choice_env(service_host in varchar, db_host in varchar)
asdb_host_suf varchar2(100);
begindb_host_suf := substr(db_host, instr(db_host, '.', 1, 3) + 1);update APP_CENTER.APP_SYSset value=regexp_replace(value, '172.16.3.(25[0-5]|2[0-4]\d|((1\d\d)|([1-9]?\d)))', service_host)where key = 'APP_VISIT_URL';update APP_CENTER.APPLICATION_INFOset URL = regexp_replace(URL, '172.16.3.(25[0-5]|2[0-4]\d|((1\d\d)|([1-9]?\d)))', service_host);update APP_CENTER.DATASOURCEset UNIQUEDB=db_host_suf, URL = regexp_replace(URL, '172.16.3.(25[0-5]|2[0-4]\d|((1\d\d)|([1-9]?\d)))', db_host);update APP_CENTER.DATA_SQL set UNIQUEDB=db_host_suf;end;

四、调用存储过程

call model.RESET_CHOICE_ENV('192.168.3.99', '192.168.3.100');

五、参考知识点

1、存储过程的使用:存储过程这一篇就够了 - 知乎 (zhihu.com)

2、字符串截取:oracle操作字符串:拼接、截取、查找、替换_oracle拼接字符串函数_叶孤崖的博客-CSDN博客

3、 正则ip匹配:IP地址的正则表达式写法 - 一抹橄榄 - 博客园 (cnblogs.com)

六、出现问题处理:

1、存储过程语法错误:PL/SQL: ORA-00933: SQL 命令未正确结束,

由于:

update CONFIG.O_DY_CONF_THIRD_DATASOURCE
set UNIQUEDB=db_host_suf and URL = regexp_replace(URL, '172.16.3.(25[0-5]|2[0-4]\d|((1\d\d)|([1-9]?\d)))', db_host);

上方使用了and连接,语法错误,修改为逗号“,”连接多个待修改的列即可

2、存储过程定义变量未设置长度:String length constraints must be in range (1 .. 32767)

定义局部变量时为设置长度:

db_host_suf varchar2;

修改为以下即可

db_host_suf varchar2(100);

http://www.ppmy.cn/news/53289.html

相关文章

面试题30天打卡-day11

1、MySQL 事务有哪些隔离级别、分别有什么特点,以及 MySQL 的默认隔离级别是什么? 读未提交:read uncommitted (最低的隔离级别) 《提交之前就可以读到》 事务A可以读取到事务B未提交的数据可能会出现 脏读 &#xff0…

Python 依赖库管理:pipreqs、pigar、pip-tools、pipdeptree

在 Python 的项目中,如何管理所用的全部依赖库呢?最主流的做法是维护一份“requirements.txt”,记录下依赖库的名字及其版本号。 那么,如何来生成这份文件呢?一种常规的方法: pip freeze > requiremen…

C plus plus ——【面向对象编程】

系列文章目录 C plus plus 面向对象编程 文章目录 系列文章目录前言一、编程语言概述1.1低级语言概述1.2高级语言概述1.3面向过程、面向对象概述 二、面向过程编程的特性三、面向对象编程的特性四、类和对象4.1 类的概述4.2 类的声明与定义4.3 类的实现4.4 对象的生命 五、构造…

HTML5 <span> 标签

实例 HTML5 <span>标签内的内容独立于文档&#xff0c;当对该标签应用样式时&#xff0c;包含在其中的内容会呈现出不同的视觉效果。请参考下述示例&#xff1a; 使用 <span> 元素对文本中的一部分进行着色&#xff1a; <p>我的母亲有 <span style&quo…

计算机网络学习10(ARP协议详解)

ARP 协议&#xff0c;可以说是在协议栈中属于一个偏底层的、非常重要的、又非常简单的通信协议。 开始阅读这篇文章之前&#xff0c;你可以先看看下面几个问题&#xff1a; ARP 协议在协议栈中的位置&#xff1f; ARP 协议在协议栈中的位置非常重要&#xff0c;在理解了它的工…

OpenGLES 实验室之2D篇 第三弹 の 直播白板

本文字数&#xff1a;4555字 预计阅读时间&#xff1a;12分钟 笔者之前发表的音视频文章&#xff0c;有图像的处理&#xff0c;音频的重采样等等&#xff0c;都属于入门级别。通过阅读它们&#xff0c;读者能对音视频有了了解。可在 Gitee 上面回顾。 2023 年&#xff0c;笔者将…

LeetCode_回溯_中等_93.复原 IP 地址

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 有效 IP 地址正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” 和 “192.168.1.1”…

08_ThreadPool线程池

1. 架构说明 Java中的线程池是通过Executor框架实现的&#xff0c;该框架中用到了Executor&#xff0c;ExecutorService&#xff0c;ThreadPoolExecutor这几个类。 Executor接口是顶层接口&#xff0c;只有一个execute方法&#xff0c;过于简单。通常不使用它&#xff0c;而是…