Ubuntu Oracle数据库如何进行定期维护
导读:Ubuntu上Oracle数据库定期维护实操清单 一 维护目标与节奏 目标:保障数据库高可用、可恢复、性能稳定、安全合规。 建议节奏: 每日:实例与进程健康检查、告警日志巡检、表空间使用率检查、RMAN/Data Pump备份与清理、慢...
Ubuntu上Oracle数据库定期维护实操清单
一 维护目标与节奏
- 目标:保障数据库高可用、可恢复、性能稳定、安全合规。
- 建议节奏:
- 每日:实例与进程健康检查、告警日志巡检、表空间使用率检查、RMAN/Data Pump备份与清理、慢SQL巡检。
- 每周:统计信息收集、索引与SQL优化复盘、备份恢复演练、空间与对象清理。
- 每月/每季度:参数与容量评估、补丁与升级评估、容灾演练(如Data Guard)、审计与权限复核。
二 每日例行检查与备份
- 实例与进程
- 登录检查:sqlplus / as sysdba → SELECT status FROM v$instance; 确认为OPEN。
- 进程检查:ps -ef | grep ora_ 确认ora_pmon、ora_dbw0、ora_lgwr等进程存在。
- 告警与跟踪日志
- 告警日志:tail -f $ORACLE_BASE//bdump/alert_.log,关注ORA-、表空间满、归档切换失败等。
- 监听日志:检查 $ORACLE_HOME/diag/tnslsnr/*/trace/listener.log 的连接与错误。
- 表空间与数据文件
- 使用率查询(示例):
- SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024,2) AS used_mb, ROUND(SUM(maxbytes)/1024/1024,2) AS max_mb, ROUND(SUM(bytes)/SUM(maxbytes)*100,2) AS pct_used FROM dba_data_files GROUP BY tablespace_name;
- 扩容示例:ALTER TABLESPACE ADD DATAFILE ‘/path/newfile.dbf’ SIZE 1G;
- 数据文件状态:SELECT file_name, status FROM dba_data_files; 如OFFLINE则执行:ALTER DATABASE DATAFILE ‘’ ONLINE;
- 使用率查询(示例):
- 备份策略与执行
- RMAN热备(需归档模式):
- rman target /
- BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
- DELETE NOPROMPT OBSOLETE;
- Data Pump逻辑备份(示例):
- expdp system/@orcl directory=DATA_PUMP_DIR dumpfile=expdp_$(date +%F).dmp logfile=expdp_$(date +%F).log
- 备份验证与清理:
- RMAN> CROSSCHECK BACKUP; DELETE EXPIRED BACKUP;
- 定期在测试环境演练:RESTORE DATABASE; RECOVER DATABASE;
- RMAN热备(需归档模式):
- 慢SQL与阻塞
- 监控长事务与TOP SQL,结合AWR/ASH或v$session、v$sql分析并优化。
三 每周与每月维护任务
- 统计信息与优化器
- 收集Schema统计信息:EXEC DBMS_STATS.GATHER_SCHEMA_STATS(ownname=> ‘’, estimate_percent=> DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt=> ‘FOR ALL COLUMNS SIZE AUTO’, cascade=> TRUE);
- 生成AWR/ADDM报告定位瓶颈:@?/rdbms/admin/awrrpt.sql、@?/rdbms/admin/addmrpt.sql。
- 索引与SQL
- 按需重建/重组碎片化索引:ALTER INDEX REBUILD;
- 使用EXPLAIN PLAN、SQL Tuning Advisor优化慢SQL,避免SELECT *,使用绑定变量。
- 空间与对象治理
- 清理回收站:PURGE RECYCLEBIN;
- 归档/清理历史分区、失效对象编译、无主/过期作业清理。
- 安全与合规
- 权限复核:SELECT * FROM dba_sys_privs WHERE grantee=‘’; 回收过度授权。
- 审计日志归档与审查,确保关键操作可追溯。
- 补丁与升级
- 评估并应用季度补丁;升级前完整备份与回退方案,必要时使用DBUA或手工升级流程。
四 自动化脚本与定时调度
- 备份脚本示例(RMAN)
- 示例(/opt/oracle/scripts/rman_backup.sh):
- #!/bin/bash . /home/oracle/.bash_profile BACKUP_DIR=“/u01/oracle/backup/$(date +%F)” mkdir -p “$BACKUP_DIR” rman target / < < ‘EOF’ RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK FORMAT ‘${ BACKUP_DIR} /db_%U.bkp’; BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG DELETE INPUT; BACKUP CURRENT CONTROLFILE; DELETE NOPROMPT OBSOLETE; } CROSSCHECK BACKUP; DELETE EXPIRED BACKUP; EOF
- 赋权:chmod +x /opt/oracle/scripts/rman_backup.sh
- 示例(/opt/oracle/scripts/rman_backup.sh):
- 备份脚本示例(Data Pump)
- 示例(/opt/oracle/scripts/expdp_backup.sh):
- #!/bin/bash
. /home/oracle/.bash_profile
BACKUP_DIR=“/u01/oracle/dpump/$(date +%F)”
mkdir -p “$BACKUP_DIR”
expdp system/@orcl directory=DATA_PUMP_DIR
dumpfile=expdp_$(date +%F).dmp logfile=expdp_$(date +%F).log
parallel=2 job_name=expdp_daily
- #!/bin/bash
. /home/oracle/.bash_profile
BACKUP_DIR=“/u01/oracle/dpump/$(date +%F)”
mkdir -p “$BACKUP_DIR”
expdp system/@orcl directory=DATA_PUMP_DIR
- 示例(/opt/oracle/scripts/expdp_backup.sh):
- 调度示例(cron)
- 每日2点RMAN全备:0 2 * * * /opt/oracle/scripts/rman_backup.sh > > /var/log/oracle/rman_backup.log 2> & 1
- 每日3点Data Pump:0 3 * * * /opt/oracle/scripts/expdp_backup.sh > > /var/log/oracle/expdp_backup.log 2> & 1
- 每周日4点统计信息:0 4 * * 0 /opt/oracle/scripts/gather_stats.sh
- 监控告警脚本(慢SQL示例)
- 示例(/opt/oracle/scripts/monitor_slow_sql.sh):
- #!/bin/bash
. /home/oracle/.bash_profile
sqlplus -s /nolog <
<
‘EOF’
CONNECT system/@orcl
SET HEADING OFF FEEDBACK OFF
SELECT 'ALERT: Long SQL>
1s: '||sql_text
FROM v$sql
WHERE elapsed_time >
1e9 AND status=‘EXECUTING’;
EXIT
EOF
如有输出则邮件/企业微信/钉钉告警
- #!/bin/bash
. /home/oracle/.bash_profile
sqlplus -s /nolog <
<
‘EOF’
CONNECT system/@orcl
SET HEADING OFF FEEDBACK OFF
SELECT 'ALERT: Long SQL>
1s: '||sql_text
FROM v$sql
WHERE elapsed_time >
1e9 AND status=‘EXECUTING’;
EXIT
EOF
- 示例(/opt/oracle/scripts/monitor_slow_sql.sh):
- 脚本要点
- 统一在oracle用户下运行,显式加载环境变量(ORACLE_HOME、ORACLE_SID、PATH、LD_LIBRARY_PATH)。
- 日志落盘、按日分目录、保留策略与清理脚本配套。
五 关键注意事项与恢复演练
- 归档与保留
- 生产库建议开启归档模式,RMAN配置合理保留策略(如恢复窗口),定期CROSSCHECK/DELETE EXPIRED。
- 备份验证与演练
- 定期在测试环境执行RESTORE/RECOVER演练,验证备份可用性与恢复RPO/RTO。
- 容量与性能
- 监控表空间、UNDO、TEMP使用;结合AWR/ASH与OS工具(top、vmstat、iostat)定位瓶颈。
- 合理设置SGA_TARGET/PGA_AGGREGATE_TARGET或启用自动内存管理,优化SQL与索引,必要时分区与并行。
- 高可用与容灾
- 关键业务建议配置Data Guard或等效高可用方案,定期切换演练。
- 安全加固
- 最小权限、口令策略、审计开启与定期审查,限制高危操作与远程登录来源。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Oracle数据库如何进行定期维护
本文地址: https://pptw.com/jishu/750977.html
