当前位置: 首页 > news >正文

如何一键完成20个Oracle实例运维脚本部署

在日常的运维工作中,常常是一个人需要管理维护数个数十个数据库实例,如果是开源类集群如mysql,PG等可能更多;在没有商业的集中管理平台的情况下,如何快速的部署监控或者运维脚本,是一个值得探讨的问题,这里博主以一个简单的示例来演示如何快速一次性给20个实例部署运维脚本。

前面我发布了一个自动检查tablespace空间使用率,并再超过阈值时自动添加数据文件的脚本,具体参考链接如下:

Oracle自动处理表空间不足脚本-CSDN博客

更多的监控脚本可以参考如下:

oracle常用监控脚本(纯干货,没有EMCC,ZABBIX也不怕)_oracle 监控及日常处理脚本-CSDN博客

我这里就来演示如何一次性将这个脚本部署到全部20个数据库实例中

1. 选择一台集中部署服务器

这台部署服务器要和所有数据库实例网络通,ssh端口通,我这里选择了EMCC服务器,为了管理实例EMCC服务器已经和所有数据库实例打通了网络。如何部署EMCC可以参考如下文档
EMCC13.5安装配置手册(详细版)-CSDN博客

2. 配置互联互通

配置互联互通一般有两种方式,一种是类似Oracle11g RAC配置节点间免密登陆;我个人认为比较麻烦一下,但是配置好之后 后期会比较方便;我这里选择使用sshpass,

sshpass 是一个用于在命令行中非交互式提供 SSH 密码的工具,特别适合自动化脚本。它允许用户在 SSH、SCP 等命令中通过参数提供密码,从而省去手动输入的过程。

安装# Ubuntu/Debiansudo apt-get install sshpass# CentOS/RHELsudo yum install sshpass#ssh登陆格式sshpass -p "your_password" ssh user@hostname#ssh传输文件格式sshpass -p "your_password" scp localfile.txt user@hostname:/remote/path

3.配置需要部署的IP列表

#设置需要部署的ip list #格式为ip osuser password sshport10.xxx.xx.xxx oracle xxxxx 22

图片

4.初次部署需要手动scp一下

昨天实验时sshpass一直无法正常传输数据,但是sshpass没有报错,后来发现要先scp 接受一下

#首次部署需要scp接受RSA key,后面再次部署就可以使用sshpass了[oracle@orcoem01 jobs]$  scp  "/home/oracle/jobs/auto_add_dbf.sh" "oracle@10.xxx.xxx.xxx:/home/oracle/jobs/"The authenticity of host '10.219.40.231 (10.219.40.231)' can't be established.RSA key fingerprint is SHA256:RTS5x8jB3sOKNeKwN4jOH+iISwAZfgWf4WmJTT4rXc0.RSA key fingerprint is MD5:c0:06:94:bd:35:1b:f9:4c:b7:d7:10:0a:e7:22:f5:56.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '10.xxx.xxx.xxx' (RSA) to the list of known hosts.oracle@10.xxx.xxx.xxx'auto_add_dbf.sh

5.自动化部署脚本

这里自动化部署自动加tablespace数据库文件脚本,

[oracle@szsplorcoem01 jobs]$ cat deploy_auto_add_dbf.sh #!/bin/bash
# 配置文件路径CONFIG_FILE="list.txt"#需要部署的脚本,SCRIPT_FILE="auto_add_dbf.sh"#设置crontab 参数CRON_SCHEDULE="0 8 * * *"  # 每天早上8点00分执行一次
# 检查 list.txt 和 auto_add_dbf.sh 文件是否存在if [[ ! -f "$CONFIG_FILE" ]]; then    echo "配置文件 $CONFIG_FILE 不存在!"    exit 1fi
if [[ ! -f "$SCRIPT_FILE" ]]; then    echo "脚本文件 $SCRIPT_FILE 不存在!"    exit 1fi
# 将配置文件内容读入数组mapfile -t servers < "$CONFIG_FILE"
# 遍历数组中的每一行 抓取ip和用户信息等for server in "${servers[@]}"; do    # 解析 IP、用户名、密码和端口    IP=$(echo "$server" | awk '{print $1}')    USERNAME=$(echo "$server" | awk '{print $2}')    PASSWORD=$(echo "$server" | awk '{print $3}')    PORT=$(echo "$server" | awk '{print $4}')    PORT=${PORT:-22}  # 如果没有指定端口,则默认为22
    # 使用 sshpass 自动登录并执行命令    echo "连接到 $IP 并部署脚本..."
    # 复制脚本到远程主机 目标路径根据个人需要设定    sshpass -p "$PASSWORD" scp -P "$PORT" "$SCRIPT_FILE" "$USERNAME@$IP:/home/oracle/jobs"
    # 在远程主机上设置 cron 任务    sshpass -p "$PASSWORD" ssh -p "$PORT" "$USERNAME@$IP" "(crontab -l 2>/dev/null; echo \"$CRON_SCHEDULE /bin/bash /home/oracle/jobs/$SCRIPT_FILE\") | crontab -"
    echo "在 $IP 上成功部署并配置了自动任务。"
done

6.脚本执行结果
有部分IP 或者端口不通或者用户名密码不对 导致失败

图片

到目标主机检查部署情况
确认脚本文件被传输到目标主机

图片

确认crontab 已经正常添加,并确认脚本可以正常执行

批量化执行的脚本需要有普适性,也就是不需要修改脚本,这里auto_add_dbf.sh 通过抓取/home/oracle/.bash_profile来获取sid和oracle home信息等

图片

这里只是一个范例,如果脚本需要定制化修改,也可以通过抓取主机上的信息来自动修改脚本实现批量部署,希望能帮助到大家。

相关文章:

如何一键完成20个Oracle实例运维脚本部署

在日常的运维工作中&#xff0c;常常是一个人需要管理维护数个数十个数据库实例&#xff0c;如果是开源类集群如mysql&#xff0c;PG等可能更多&#xff1b;在没有商业的集中管理平台的情况下&#xff0c;如何快速的部署监控或者运维脚本&#xff0c;是一个值得探讨的问题&…...

【C++刷题】力扣-#598-区间加法 II

题目描述 给你一个 m x n 的矩阵 M和一个操作数组 op 。矩阵初始化时所有的单元格都为 0 。ops[i] [ai, bi] 意味着当所有的 0 < x < ai 和 0 < y < bi 时&#xff0c; M[x][y] 应该加 1。 在 执行完所有操作后 &#xff0c;计算并返回 矩阵中最大整数的个数 。 示…...

优雅的LUA数据记录方法-serpent序列化+LUA Table

目录 简述如何集成&#xff1f;如何使用序列化 反序列化 参考 简述 项目里需要使用LUA脚本将数据记录到文件&#xff0c;要方便的增加、查找、删除&#xff0c;要方便的加载与存回。 使用序列化/反序列化 lua table可以很容易实现这些功能。 序列化将table转换为字符串 反序列…...

初始JavaEE篇——多线程(4):wait、notify,饿汉模式,懒汉模式,指令重排序

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 目录 wait、notify 方法 多线程练习 单例模式 饿汉模式 懒汉模式 指令重排序 wait、notify 方法 wait 和 我们前面学习的sleep…...

Apache Solr 身份认证绕过导致任意文件读取漏洞复现(CVE-2024-45216)

0x01 产品简介 Apache Solr是一个开源的搜索平台,基于流行的Apache Lucene库构建。它提供了一个强大的全文搜索功能,能够快速处理大量数据,并支持复杂的搜索操作。并且是一个独立的企业级搜索应用服务器,它采用Java开发,并基于Apache Lucene实现。Solr提供了类似于Web-Se…...

C#整合Ollama实现本地LLMs调用

前言 近两年AIGC发展的非常迅速&#xff0c;从刚开始的只有ChatGPT到现在的很百家争鸣。从开始的大参数模型&#xff0c;再到后来的小参数模型&#xff0c;从一开始单一的文本模型到现在的多模态模型等等。随着一起进步的不仅仅是模型的多样化&#xff0c;还有模型的使用方式。…...

C++基于opencv的视频质量检测--图像抖动检测

文章目录 0.引言1. 原始代码分析2. 优化方案3. 优化后的代码4. 代码详细解读 0.引言 视频质量图像抖动检测已在C基于opencv4的视频质量检测中有所介绍&#xff0c;本文将详细介绍其优化版本。 1. 原始代码分析 首先&#xff0c;我们来看图像抖动检测的原始代码&#xff1a; …...

Cuda By Example - 11 (Texture Memory 2-D)

跟1D一样&#xff0c;2D的代码也没有运行过。旧的方法看看就好。 声明二维Texture texture<float, 2> texConstSrc; texture<float, 2> texIn; texture<float, 2> texOut; 访问二维Texture 使用2D的Texture的便利性体现在blend_kernel函数里。不再需要通…...

Go匿名结构体使用场景

1. 定义 在 Go 语言中&#xff0c;匿名结构体&#xff08;Anonymous Struct&#xff09;是一种没有显式命名的结构体类型。你可以直接在代码中定义并使用匿名结构体&#xff0c;而不需要为其定义一个单独的类型名称。匿名结构体通常用于临时数据结构或一次性使用的场景。 匿名…...

Vue 发布十年了!你知道我这十年是怎么过的吗?

2014 年 2 月 3 日&#xff0c;Vue 在 Hacker News 上首次亮相。十年后的今天&#xff0c;Vue 已经成为使用最广泛的前端框架之一&#xff0c;拥有了一个非常丰富的生态系统。本文来梳理一下 Vue.js 十年以来的重要里程碑&#xff01; 尤雨溪&#xff0c;无疑是 Vue.js 背后的灵…...

Unity 6 来袭

这里写自定义目录标题 1.提升渲染性能1.1 降低CPU开销 Lower CPU overhead1.2.减少内存带宽1.3.高档低分辨率帧2.多人游戏创作3.扩大多平台覆盖范围3.1.增进Android平台开发4.使用Runtime AI解锁各种可能性4.1.Unity Muse4.2.Unity Sentis5.实现更具吸引力的视觉效果5.1.自适应…...

SpringMVC课时1

一:SpringMVC Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet,负责表述层(控制层)实现简化。 由于 Spring MVC 本身就是 Spring 框架的一部分,和 Spring 框架是无缝集成。 二:SSM的主要作用 三:SpringMVC的原理架构图 …...

【小白学机器学习30】样本统计的核心参数:均值/期望,方差,标准差,标准值。

目录 1 为什么我们要搞出来这么多指标/参数&#xff1f; 1.1 描述统计学为啥要搞出来这么多复杂的参数&#xff1f;什么平均值等 1.2 所以&#xff0c;需要用少数几个关键数据代表1群数据 1.2.1 平均值 1.2.2 平均值的问题&#xff1a;方差 2 代表性的数据1&#xff1a;…...

flink1.17.2安装和使用

版本&#xff1a;flink1.17.2 单机模式 配置 # 为了在别处连接flink-web rest.bind-address: 0.0.0.0命令 # 启动集群 bin/start-cluster.sh # 关闭集群 bin/stop-cluster.sh使用 使用浏览器连接 ip:8081 使用flink-web...

C向C++入门-- C语言填坑

1.c参考文档 我们在学习c中需要查找参照信息到是从这些文档中得到。 https://legacy.cplusplus.com/reference/ 标准只更新到C11&#xff0c;但是以头⽂件形式呈现&#xff0c;内容⽐较易看好懂。 https://zh.cppreference.com/w/cpp https://en.cppreference.com/w/ 后两…...

扫雷游戏(C语言详解)

扫雷游戏&#xff08;C语言详解&#xff09; 放在最前面的1、前言&#xff08;扫雷游戏的简介&#xff09;2、扫雷游戏的规则&#xff08;简易版&#xff09;3、代码实现&#xff08;3.1&#xff09;提醒一下&#xff1a;( i ) 提醒1&#xff1a;( ii ) 提醒2&#xff1a; &…...

信刻全自动光盘摆渡系统

随着各种数据传输、储存技术、信息技术的快速发展&#xff0c;保护信息安全是重中之重。各安全领域行业对跨网数据交互需求日益迫切。针对于业务需要与保密规范相关要求&#xff0c;涉及重要秘密信息&#xff0c;需做到安全的物理隔离&#xff0c;并且保证跨网数据高效安全传输…...

计算机网络的数据链路层

计算机网络的数据链路层 数据链路层是OSI参考模型中的第二层&#xff0c;它位于物理层之上&#xff0c;网络层之下。数据链路层的主要功能是在物理层提供的服务的基础上向网络层提供服务&#xff0c;其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。…...

从0开始搭建一个生产级SpringBoot2.0.X项目(三)SpringBoot接口统一返回和全局异常处理

前言 最近有个想法想整理一个内容比较完整springboot项目初始化Demo。 SpringBoot接口统一返回和全局异常处理&#xff0c;使用ControllerAdvice ExceptionHandler 的组合来实现。 一、pom文件新增依赖 <dependency><groupId>com.alibaba</groupId><ar…...

Mybatis-plus-扩展功能

Mybatis-plus-扩展功能 一&#xff1a;代码生成器 AutoGenerator 是 MyBatis-Plus 的代码生成器&#xff0c;通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码&#xff0c;极大的提升了开发效率。 功能的演示&#xff1a…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...