如何一键完成20个Oracle实例运维脚本部署
ccwgpt 2024-11-25 10:28 32 浏览 0 评论
在日常的运维工作中,常常是一个人需要管理维护数个数十个数据库实例,如果是开源类集群如mysql,PG等可能更多;在没有商业的集中管理平台的情况下,如何快速的部署监控或者运维脚本,是一个值得探讨的问题,这里博主以一个简单的示例来演示如何快速一次性给20个实例部署运维脚本。
前面我发布了一个自动检查tablespace空间使用率,并再超过阈值时自动添加数据文件的脚本,具体参考链接如下:
Oracle自动处理表空间不足脚本
更多的监控脚本可以参考如下:
oracle常用监控脚本(纯干货,没有EMCC,ZABBIX也不怕)
我这里就来演示如何一次性将这个脚本部署到全部20个数据库实例中
1. 选择一台集中部署服务器
这台部署服务器要和所有数据库实例网络通,ssh端口通,我这里选择了EMCC服务器,为了管理实例EMCC服务器已经和所有数据库实例打通了网络。如何部署EMCC可以参考如下文档
最好的数据库监控平台-ORACLE EMCC13.5安装配置使用文档
2. 配置互联互通
配置互联互通一般有两种方式,一种是类似Oracle11g RAC配置节点间免密登陆;我个人认为比较麻烦一下,但是配置好之后 后期会比较方便;我这里选择使用sshpass,
sshpass 是一个用于在命令行中非交互式提供 SSH 密码的工具,特别适合自动化脚本。它允许用户在 SSH、SCP 等命令中通过参数提供密码,从而省去手动输入的过程。
安装
# Ubuntu/Debian
sudo apt-get install sshpass
# CentOS/RHEL
sudo 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 sshport
10.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)? yes
Warning: 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 1
fi
if [[ ! -f "$SCRIPT_FILE" ]]; then
echo "脚本文件 $SCRIPT_FILE 不存在!"
exit 1
fi
# 将配置文件内容读入数组
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信息等
这里只是一个范例,如果脚本需要定制化修改,也可以通过抓取主机上的信息来自动修改脚本实现批量部署,希望能帮助到大家。
相关推荐
- 一个基于.Net Core遵循Clean Architecture原则开源架构
-
今天给大家推荐一个遵循CleanArchitecture原则开源架构。项目简介这是基于Asp.netCore6开发的,遵循CleanArchitecture原则,可以高效、快速地构建基于Ra...
- AI写代码翻车无数次,我发现只要提前做好这3步,bug立减80%
-
写十万行全是bug之后终于找到方法了开发"提示词管理助手"新版本那会儿,我差点被bug整崩溃。刚开始两周,全靠AI改代码架构,结果十万行程序漏洞百出。本来以为AI说没问题就稳了,结果...
- OneCode低代码平台的事件驱动设计:架构解析与实践
-
引言:低代码平台的事件驱动范式在现代软件开发中,事件驱动架构(EDA)已成为构建灵活、松耦合系统的核心范式。OneCode低代码平台通过创新性的注解驱动设计,将事件驱动理念深度融入平台架构,实现了业务...
- 国内大厂AI插件评测:根据UI图生成Vue前端代码
-
在IDEA中安装大厂的AI插件,打开ruoyi增强项目:yudao-ui-admin-vue31.CodeBuddy插件登录腾讯的CodeBuddy后,大模型选择deepseek-v3,输入提示语:...
- AI+低代码技术揭秘(二):核心架构
-
本文档介绍了为VTJ低代码平台提供支持的基本架构组件,包括Engine编排层、Provider服务系统、数据模型和代码生成管道。有关UI组件库和widget系统的信息,请参阅UI...
- GitDiagram用AI把代码库变成可视化架构图
-
这是一个名为gitdiagram的开源工具,可将GitHub仓库实时转换为交互式架构图,帮助开发者快速理解代码结构。核心功能一键可视化:替换GitHubURL中的"hub...
- 30天自制操作系统:第六天:代码架构整理与中断处理
-
1.拆开bootpack.c文件。根据设计模式将对应的功能封装成独立的文件。2.初始化pic:pic(可编程中断控制器):在设计上,cpu单独只能处理一个中断。而pic是将8个中断信号集合成一个中断...
- AI写代码越帮越忙?2025年研究揭露惊人真相
-
近年来,AI工具如雨后春笋般涌现,许多人开始幻想程序员的未来就是“对着AI说几句话”,就能轻松写出完美的代码。然而,2025年的一项最新研究却颠覆了这一期待,揭示了一个令人意外的结果。研究邀请了16位...
- 一键理解开源项目:两个自动生成GitHub代码架构图与说明书工具
-
一、GitDiagram可以一键生成github代码仓库的架构图如果想要可视化github开源项目:https://github.com/luler/reflex_ai_fast,也可以直接把域名替换...
- 5分钟掌握 c# 网络通讯架构及代码示例
-
以下是C#网络通讯架构的核心要点及代码示例,按协议类型分类整理:一、TCP协议(可靠连接)1.同步通信//服务器端usingSystem.Net.Sockets;usingTcpListene...
- 从复杂到优雅:用建造者和责任链重塑代码架构
-
引用设计模式是软件开发中的重要工具,它为解决常见问题提供了标准化的解决方案,提高了代码的可维护性和可扩展性,提升了开发效率,促进了团队协作,提高了软件质量,并帮助开发者更好地适应需求变化。通过学习和应...
- 低代码开发当道,我还需要学习LangChain这些框架吗?| IT杂谈
-
专注LLM深度应用,关注我不迷路前两天有位兄弟问了个问题:当然我很能理解这位朋友的担忧:期望效率最大化,时间用在刀刃上,“不要重新发明轮子”嘛。铺天盖地的AI信息轰炸与概念炒作,很容易让人浮躁与迷茫。...
- 框架设计并不是简单粗暴地写代码,而是要先弄清逻辑
-
3.框架设计3.框架设计本节我们要开发一个UI框架,底层以白鹭引擎为例。框架设计的第一步并不是直接撸代码,而是先想清楚设计思想,抽象。一个一个的UI窗口是独立的吗?不是的,...
- 大佬用 Avalonia 框架开发的 C# 代码 IDE
-
AvalonStudioAvalonStudio是一个开源的跨平台的开发编辑器(IDE),AvalonStudio的目标是成为一个功能齐全,并且可以让开发者快速使用的IDE,提高开发的生产力。A...
- 轻量级框架Lagent 仅需20行代码即可构建自己的智能代理
-
站长之家(ChinaZ.com)8月30日消息:Lagent是一个专注于基于LLM模型的代理开发的轻量级框架。它的设计旨在简化和提高这种模型下代理的开发效率。LLM模型是一种强大的工具,可以...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- mfc框架 (52)
- abb框架断路器 (48)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- 前端框架bootstrap (54)
- orm框架有哪些 (51)
- 知识框架图 (52)
- ppt框架 (55)
- 框架图模板 (59)
- 内联框架 (52)
- cad怎么画框架 (58)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)