如何一键完成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" ]]; thenecho "配置文件 $CONFIG_FILE 不存在!"exit 1fiif [[ ! -f "$SCRIPT_FILE" ]]; thenecho "脚本文件 $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实例运维脚本部署
在日常的运维工作中,常常是一个人需要管理维护数个数十个数据库实例,如果是开源类集群如mysql,PG等可能更多;在没有商业的集中管理平台的情况下,如何快速的部署监控或者运维脚本,是一个值得探讨的问题&…...
【C++刷题】力扣-#598-区间加法 II
题目描述 给你一个 m x n 的矩阵 M和一个操作数组 op 。矩阵初始化时所有的单元格都为 0 。ops[i] [ai, bi] 意味着当所有的 0 < x < ai 和 0 < y < bi 时, M[x][y] 应该加 1。 在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数 。 示…...
优雅的LUA数据记录方法-serpent序列化+LUA Table
目录 简述如何集成?如何使用序列化 反序列化 参考 简述 项目里需要使用LUA脚本将数据记录到文件,要方便的增加、查找、删除,要方便的加载与存回。 使用序列化/反序列化 lua table可以很容易实现这些功能。 序列化将table转换为字符串 反序列…...
初始JavaEE篇——多线程(4):wait、notify,饿汉模式,懒汉模式,指令重排序
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: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发展的非常迅速,从刚开始的只有ChatGPT到现在的很百家争鸣。从开始的大参数模型,再到后来的小参数模型,从一开始单一的文本模型到现在的多模态模型等等。随着一起进步的不仅仅是模型的多样化,还有模型的使用方式。…...
C++基于opencv的视频质量检测--图像抖动检测
文章目录 0.引言1. 原始代码分析2. 优化方案3. 优化后的代码4. 代码详细解读 0.引言 视频质量图像抖动检测已在C基于opencv4的视频质量检测中有所介绍,本文将详细介绍其优化版本。 1. 原始代码分析 首先,我们来看图像抖动检测的原始代码: …...
Cuda By Example - 11 (Texture Memory 2-D)
跟1D一样,2D的代码也没有运行过。旧的方法看看就好。 声明二维Texture texture<float, 2> texConstSrc; texture<float, 2> texIn; texture<float, 2> texOut; 访问二维Texture 使用2D的Texture的便利性体现在blend_kernel函数里。不再需要通…...
Go匿名结构体使用场景
1. 定义 在 Go 语言中,匿名结构体(Anonymous Struct)是一种没有显式命名的结构体类型。你可以直接在代码中定义并使用匿名结构体,而不需要为其定义一个单独的类型名称。匿名结构体通常用于临时数据结构或一次性使用的场景。 匿名…...
Vue 发布十年了!你知道我这十年是怎么过的吗?
2014 年 2 月 3 日,Vue 在 Hacker News 上首次亮相。十年后的今天,Vue 已经成为使用最广泛的前端框架之一,拥有了一个非常丰富的生态系统。本文来梳理一下 Vue.js 十年以来的重要里程碑! 尤雨溪,无疑是 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 为什么我们要搞出来这么多指标/参数? 1.1 描述统计学为啥要搞出来这么多复杂的参数?什么平均值等 1.2 所以,需要用少数几个关键数据代表1群数据 1.2.1 平均值 1.2.2 平均值的问题:方差 2 代表性的数据1:…...
flink1.17.2安装和使用
版本: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,但是以头⽂件形式呈现,内容⽐较易看好懂。 https://zh.cppreference.com/w/cpp https://en.cppreference.com/w/ 后两…...
扫雷游戏(C语言详解)
扫雷游戏(C语言详解) 放在最前面的1、前言(扫雷游戏的简介)2、扫雷游戏的规则(简易版)3、代码实现(3.1)提醒一下:( i ) 提醒1:( ii ) 提醒2: &…...
信刻全自动光盘摆渡系统
随着各种数据传输、储存技术、信息技术的快速发展,保护信息安全是重中之重。各安全领域行业对跨网数据交互需求日益迫切。针对于业务需要与保密规范相关要求,涉及重要秘密信息,需做到安全的物理隔离,并且保证跨网数据高效安全传输…...
计算机网络的数据链路层
计算机网络的数据链路层 数据链路层是OSI参考模型中的第二层,它位于物理层之上,网络层之下。数据链路层的主要功能是在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。…...
从0开始搭建一个生产级SpringBoot2.0.X项目(三)SpringBoot接口统一返回和全局异常处理
前言 最近有个想法想整理一个内容比较完整springboot项目初始化Demo。 SpringBoot接口统一返回和全局异常处理,使用ControllerAdvice ExceptionHandler 的组合来实现。 一、pom文件新增依赖 <dependency><groupId>com.alibaba</groupId><ar…...
Mybatis-plus-扩展功能
Mybatis-plus-扩展功能 一:代码生成器 AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。 功能的演示:…...
三步解决Windows系统驱动冗余难题:DriverStore Explorer系统优化指南
三步解决Windows系统驱动冗余难题:DriverStore Explorer系统优化指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 系统盘空间持续告急?设备管理器中出现重复驱…...
3秒极速解锁:高效智能的百度网盘提取码获取工具实战指南
3秒极速解锁:高效智能的百度网盘提取码获取工具实战指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 在数字资源分享日益频繁的今天,百度网盘提取码智能获取工具baidupankey通过创新的技术架构和优化…...
OFA图像语义蕴含Web应用5分钟部署教程:图文匹配AI一键搭建
OFA图像语义蕴含Web应用5分钟部署教程:图文匹配AI一键搭建 1. 项目简介与核心价值 OFA(One For All)图像语义蕴含模型是阿里巴巴达摩院研发的多模态深度学习系统,能够智能分析图像内容与文本描述之间的逻辑关系。这个Web应用将强…...
Qwen-Image-Edit-2511商业落地:快速生成产品设计图,提升工作效率
Qwen-Image-Edit-2511商业落地:快速生成产品设计图,提升工作效率 1. 产品设计效率的革命性提升 在当今快节奏的商业环境中,产品设计团队面临着前所未有的压力:需要在更短时间内交付更多设计方案,同时保持高质量和创新…...
全自动洗衣机组态王与三菱PLC联机及仿真探索
全自动洗衣机组态王6.53,6.60和三菱PLC联机和仿真程序包最近在研究自动化控制领域相关内容,接触到了全自动洗衣机组态王 6.53、6.60 与三菱 PLC 的联机以及仿真程序包,感觉很有意思,今天就来和大家分享分享。 一、组态王与三菱 PLC 联机的意义…...
Qwen-Image-Edit快速上手:模糊图片变清晰,效果惊艳实测
Qwen-Image-Edit快速上手:模糊图片变清晰,效果惊艳实测 1. 引言:从模糊到清晰的魔法 你是否遇到过这样的困扰?手机里珍藏的老照片变得模糊不清,或是抓拍的精彩瞬间因为手抖而糊成一片。传统修图软件对这些模糊图片往…...
Chain-of-Thought Hub进阶应用:多轮对话和长上下文推理评测
Chain-of-Thought Hub进阶应用:多轮对话和长上下文推理评测 【免费下载链接】chain-of-thought-hub Benchmarking large language models complex reasoning ability with chain-of-thought prompting 项目地址: https://gitcode.com/gh_mirrors/ch/chain-of-thou…...
WuliArt Qwen-Image Turbo效果对比:FP16黑图频发 vs BF16稳定出图实测
WuliArt Qwen-Image Turbo效果对比:FP16黑图频发 vs BF16稳定出图实测 1. 引言:从“黑图”困扰到稳定出图 如果你用过一些本地部署的文生图模型,可能遇到过这样的糟心事儿:满怀期待地输入一段描述,点击生成ÿ…...
别再手动算不确定度了!用C++代码一键搞定科大奥锐虚拟仿真实验(附完整代码)
用C解放物理实验:不确定度计算的自动化实践 物理实验报告中最令人头疼的部分莫过于那些繁琐的不确定度计算。每次测量完数据,面对满纸的数字和公式,总有一种被数学淹没的窒息感。记得上学期做"长度与固体密度测量"实验时࿰…...
矢量网络分析仪在MRI射频子系统研发测试中的应用
磁共振成像(MRI)正经历双向演进:一方面,高场强系统向7T及更高场强发展,持续推动成像分辨率提升;另一方面,低场强永磁体技术逐步成熟,使便携式MRI在急救室、ICU及基层医疗场景中的应用…...
