银河麒麟V10 + Oracle 19c静默安装后,别忘了这几步:开机自启、RMAN备份与systemd服务配置全指南
银河麒麟V10环境下Oracle 19c生产级运维实战:从systemd集成到备份策略优化
当Oracle 19c在银河麒麟V10系统上完成静默安装后,真正的挑战才刚刚开始。许多DBA在基础安装环节投入大量精力,却往往忽视了将数据库转化为稳定生产系统的关键配置步骤。本文将揭示那些容易被忽略但至关重要的后期配置细节,帮助您构建一个具备企业级可靠性的数据库环境。
1. 深度集成systemd服务管理
传统rc.local方式管理Oracle服务早已不符合现代运维标准。银河麒麟V10作为systemd原生系统,为Oracle服务管理提供了更专业的解决方案。
1.1 服务单元文件深度定制
创建/usr/lib/systemd/system/oracle-19c.service文件时,需要特别注意麒麟系统的特性:
[Unit] Description=Oracle Database 19c Service After=syslog.target network.target auditd.service RequiresMountsFor=/u01 /arch [Service] Type=forking User=oracle Group=oinstall Environment="ORACLE_HOME=/u01/app/oracle/product/19.3.0/db" Environment="ORACLE_SID=oracle" Environment="LD_LIBRARY_PATH=/usr/lib64:/lib64:$ORACLE_HOME/lib" PIDFile=$ORACLE_HOME/dbs/lk$ORACLE_SID ExecStart=/u01/app/oracle/product/19.3.0/db/bin/dbstart $ORACLE_HOME ExecStop=/u01/app/oracle/product/19.3.0/db/bin/dbshut $ORACLE_HOME TimeoutSec=300 Restart=on-failure RestartSec=30s [Install] WantedBy=multi-user.target关键配置要点:
- After参数确保网络和存储挂载完成
- RequiresMountsFor声明关键目录依赖
- Type=forking适配Oracle的启动特性
- TimeoutSec适当延长避免超时误判
1.2 环境变量隔离策略
银河麒麟的安全策略要求特别注意环境隔离:
# /etc/systemd/system/oracle-19c.service.d/env.conf [Service] EnvironmentFile=-/etc/sysconfig/oracle-19c ProtectSystem=full ReadWritePaths=/u01 /arch PrivateTmp=true NoNewPrivileges=true1.3 服务健康检查机制
添加自定义健康检查脚本/usr/libexec/oracle-healthcheck:
#!/bin/bash ORAENV_ASK=NO source /home/oracle/.bash_profile sqlplus -S / as sysdba <<EOF set heading off select status from v\$instance; EOF [ $? -eq 0 ] && exit 0 || exit 1然后在service文件中添加:
[Service] ExecStartPost=/usr/libexec/oracle-healthcheck2. RMAN备份体系全构建
备份不是简单的脚本编写,而是包含验证、监控、应急的完整体系。
2.1 多级备份策略设计
采用GFS(祖父-父亲-儿子)备份策略:
| 备份类型 | 频率 | 保留周期 | 存储位置 | 特点 |
|---|---|---|---|---|
| 全量备份 | 每周日 | 4周 | /arch/backup/full | 包含所有数据文件 |
| 增量1级 | 每周三 | 2周 | /arch/backup/incr1 | 基于上周全量 |
| 增量2级 | 每日 | 7天 | /arch/backup/incr2 | 基于最近增量 |
| 归档日志 | 每小时 | 3天 | /arch/backup/arch | 持续备份 |
2.2 智能备份脚本实现
改进版备份脚本/home/oracle/scripts/rman_backup.sh:
#!/bin/bash # 环境检测 [ -f ~/.bash_profile ] && source ~/.bash_profile || exit 1 [ -z "$ORACLE_HOME" ] && exit 1 # 动态参数计算 DAY_OF_WEEK=$(date +%u) BACKUP_TYPE=$([ $DAY_OF_WEEK -eq 7 ] && echo "FULL" || \ [ $DAY_OF_WEEK -eq 3 ] && echo "INCR1" || echo "INCR2") TIMESTAMP=$(date +"%Y%m%d_%H%M%S") LOG_DIR="/home/oracle/scripts/log" [ -d "$LOG_DIR" ] || mkdir -p "$LOG_DIR" # RMAN执行块 $ORACLE_HOME/bin/rman target / log=$LOG_DIR/rman_${BACKUP_TYPE}_${TIMESTAMP}.log <<EOF run { configure retention policy to recovery window of 15 days; configure controlfile autobackup on; configure controlfile autobackup format for device type disk to '/arch/backup/ctl/ctl_%F'; $(case $BACKUP_TYPE in "FULL") echo "backup as compressed backupset database include current controlfile plus archivelog delete input format '/arch/backup/full/full_%d_%T_%s_%p';" ;; "INCR1") echo "backup as compressed backupset incremental level 1 database include current controlfile format '/arch/backup/incr1/incr1_%d_%T_%s_%p';" ;; *) echo "backup as compressed backupset incremental level 2 cumulative database include current controlfile format '/arch/backup/incr2/incr2_%d_%T_%s_%p';" ;; esac) crosscheck backup; crosscheck archivelog all; delete noprompt obsolete; delete noprompt expired backup; } EOF2.3 备份验证自动化
创建验证脚本/home/oracle/scripts/verify_backup.sh:
#!/bin/bash LAST_FULL=$(ls -t /arch/backup/full/* | head -1) $ORACLE_HOME/bin/rman target / <<EOF run { allocate channel for maintenance device type disk; restore validate database from '$LAST_FULL'; release channel; } EOF3. 归档日志管理高级技巧
归档日志管理不当会导致存储爆炸,需要系统化解决方案。
3.1 智能归档清理策略
在RMAN中配置:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY BACKED UP 2 TIMES TO DISK;配合操作系统级清理脚本/home/oracle/scripts/arch_clean.sh:
#!/bin/bash # 保留最近3天归档 find /arch/oraarch -type f -name "*.arc" -mtime +3 -delete # 控制归档目录大小不超过80% ARCH_USAGE=$(df -h /arch | awk 'NR==2 {print $5}' | cut -d'%' -f1) [ $ARCH_USAGE -gt 80 ] && find /arch/oraarch -type f -name "*.arc" -delete3.2 归档目录多路径配置
在init.ora中设置:
log_archive_dest_1='LOCATION=/arch/oraarch1 MANDATORY' log_archive_dest_2='LOCATION=/arch/oraarch2 OPTIONAL' log_archive_dest_state_1=ENABLE log_archive_dest_state_2=ENABLE4. 性能与稳定性调优
银河麒麟V10特有的优化点需要特别关注。
4.1 内核参数补充优化
在/etc/sysctl.conf中添加:
# 麒麟特有参数 vm.dirty_ratio = 10 vm.dirty_background_ratio = 5 vm.swappiness = 5 kernel.sched_min_granularity_ns = 10000000 kernel.sched_wakeup_granularity_ns = 150000004.2 Oracle内存精细管理
采用混合内存管理模式:
ALTER SYSTEM SET memory_target=0 SCOPE=SPFILE; ALTER SYSTEM SET sga_target=12G SCOPE=SPFILE; ALTER SYSTEM SET pga_aggregate_target=4G SCOPE=SPFILE; ALTER SYSTEM SET db_cache_size=8G SCOPE=SPFILE; ALTER SYSTEM SET shared_pool_size=3G SCOPE=SPFILE;4.3 存储I/O调度优化
针对银河麒麟的存储配置:
# 查看当前调度器 cat /sys/block/sd*/queue/scheduler # 永久修改为deadline echo 'ACTION=="add|change", KERNEL=="sd*", ATTR{queue/scheduler}="deadline"' \ > /etc/udev/rules.d/60-oracle-disk.rules