如何在Ubuntu上实现Oracle自动化运维
在Ubuntu上实现Oracle自动化运维的完整指南
一、前置准备:环境配置
-
安装Oracle客户端工具
若Oracle数据库未部署在Ubuntu上,需先安装Oracle Instant Client(轻量级客户端)及依赖包。通过以下命令完成:sudo apt update sudo apt install libaio1 unzip wget wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linux.x64-21.9.0.0.0dbru.zip unzip instantclient-basiclite-linux.x64-21.9.0.0.0dbru.zip -d /opt/oracle export ORACLE_HOME=/opt/oracle/instantclient_21_9 export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
将上述环境变量添加至
~/.bashrc
或/etc/profile
,执行source ~/.bashrc
使配置生效。 -
配置Oracle监听器(可选)
若需管理Oracle监听器(监听客户端连接),可通过lsnrctl
工具操作。为简化管理,可将监听器配置为系统服务:
创建服务文件/etc/systemd/system/oracle-listener.service
,内容如下:[Unit] Description=Oracle Database Listener After=network.target [Service] Type=forking ExecStart=/opt/oracle/instantclient_21_9/lsnrctl start ExecStop=/opt/oracle/instantclient_21_9/lsnrctl stop Restart=on-failure [Install] WantedBy=multi-user.target
执行
systemctl daemon-reload
、systemctl enable oracle-listener
、systemctl start oracle-listener
完成配置。
二、自动化脚本开发:核心运维任务自动化
-
数据库备份自动化
使用expdp
(数据泵)工具实现逻辑备份,通过Shell脚本封装备份逻辑,并加入错误检查:#!/bin/bash # 设置备份参数 BACKUP_DIR="/opt/oracle/backups" DATE=$(date +"%Y%m%d_%H%M%S") BACKUP_FILE="$BACKUP_DIR/expdp_$DATE.dmp" LOG_FILE="$BACKUP_DIR/expdp_$DATE.log" DB_USER="sys" DB_PASS="your_password" DB_NAME="orcl" # 创建备份目录 mkdir -p $BACKUP_DIR # 执行备份 expdp $DB_USER/$DB_PASS@$DB_NAME directory=DATA_PUMP_DIR dumpfile=$BACKUP_FILE logfile=$LOG_FILE full=y # 检查备份结果 if [ $? -eq 0 ]; then echo "$(date): Backup succeeded: $BACKUP_FILE" > > /var/log/oracle_backup.log else echo "$(date): Backup failed!" > > /var/log/oracle_backup.log exit 1 fi
赋予脚本执行权限:
chmod +x /opt/oracle/scripts/backup_oracle.sh
。 -
监听器状态检查自动化
编写脚本检查监听器是否运行,并将结果写入日志:#!/bin/bash STATUS=$(/opt/oracle/instantclient_21_9/lsnrctl status | grep "Listener Status") echo "$(date): $STATUS" > > /var/log/oracle_listener.log
可结合邮件通知(如
mail
命令)在监听器异常时发送告警。
三、定时任务调度:周期性任务自动化
使用Ubuntu的cron
服务调度脚本定期执行。编辑当前用户的crontab:
crontab -e
添加以下内容,实现每天凌晨2点执行备份、每小时检查监听器状态:
0 2 * * * /opt/oracle/scripts/backup_oracle.sh
0 * * * * /opt/oracle/scripts/check_listener.sh
保存后,cron会自动加载任务。可通过crontab -l
查看当前用户的定时任务。
四、监控与告警:实时状态感知
-
命令行监控(适合技术人员)
通过SQL*Plus执行SQL查询,获取数据库性能指标(如连接数、活跃SQL、表空间使用率):-- 查看当前连接数 SELECT COUNT(*) FROM v$session; -- 查看活跃SQL(执行次数> 1000的SQL) SELECT sql_text FROM v$sql WHERE executions > 1000 ORDER BY executions DESC FETCH FIRST 5 ROWS ONLY; -- 查看表空间使用率 SELECT tablespace_name, ROUND((used_space/total_space)*100, 2) AS usage_rate FROM dba_tablespace_usage_metrics;
将上述查询封装为脚本,定期采集数据并写入日志。
-
开源监控工具(推荐)
- Prometheus + Grafana + Oracle Exporter:
Oracle Exporter是社区开发的采集器,可采集Oracle性能指标(如CPU使用率、SGA命中率、慢查询数),供Prometheus拉取。Grafana通过导入开源模板(如Oracle Monitoring Dashboard)实现可视化,支持设置告警规则(如CPU使用率> 80%时触发邮件通知)。 - Zabbix + Oracle模板:
Zabbix是企业级监控工具,支持Oracle专用模板(如表空间使用率、用户连接数、DML语句变化趋势)。通过配置Zabbix Agent的自定义item(如执行SQL查询),实现对Oracle的全面监控,支持阈值告警(如表空间使用率> 90%时发送短信)。
- Prometheus + Grafana + Oracle Exporter:
五、进阶自动化:企业级工具整合
-
Oracle Enterprise Manager (OEM)
若企业有Oracle OEM license,可通过OEM实现集中化管理。OEM支持自动采集Oracle数据库的性能指标、生成AWR报告、自动执行备份策略、发送告警通知(邮件/短信)。通过OEM的图形化界面,可快速定位性能瓶颈(如慢SQL、锁等待),并一键执行修复操作。 -
Ansible自动化配置
使用Ansible编写Playbook,实现Oracle环境的批量配置(如批量安装Oracle Instant Client、批量启动监听器、批量执行SQL脚本)。例如,以下Playbook用于安装Oracle Instant Client:- name: Install Oracle Instant Client on Ubuntu hosts: oracle_servers become: yes tasks: - name: Update apt cache apt: update_cache: yes - name: Install dependencies apt: name: ["libaio1", "unzip", "wget"] state: present - name: Download Oracle Instant Client get_url: url: "https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linux.x64-21.9.0.0.0dbru.zip" dest: "/tmp/instantclient.zip" - name: Unzip Oracle Instant Client unarchive: src: "/tmp/instantclient.zip" dest: "/opt/oracle" remote_src: yes - name: Set environment variables lineinfile: path: "/etc/profile" line: 'export ORACLE_HOME=/opt/oracle/instantclient_21_9' state: present - name: Reload profile shell: source /etc/profile
通过
ansible-playbook
命令执行Playbook,可实现多台Ubuntu服务器的Oracle环境自动化配置。
六、注意事项
- 权限管理:确保执行脚本的用户具备足够的Oracle权限(如
SYSDBA
或对应角色的权限)。 - 日志管理:定期清理备份文件和日志文件,避免占用过多磁盘空间。
- 安全防护:备份文件需加密存储(如使用
gpg
加密),敏感信息(如数据库密码)需通过环境变量或加密文件存储,避免明文泄露。 - 测试验证:所有自动化脚本和配置需在测试环境验证通过后,再部署到生产环境。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上实现Oracle自动化运维
本文地址: https://pptw.com/jishu/722746.html