银河麒麟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] DescriptionOracle Database 19c Service Aftersyslog.target network.target auditd.service RequiresMountsFor/u01 /arch [Service] Typeforking Useroracle Groupoinstall EnvironmentORACLE_HOME/u01/app/oracle/product/19.3.0/db EnvironmentORACLE_SIDoracle EnvironmentLD_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 TimeoutSec300 Restarton-failure RestartSec30s [Install] WantedBymulti-user.target关键配置要点After参数确保网络和存储挂载完成RequiresMountsFor声明关键目录依赖Typeforking适配Oracle的启动特性TimeoutSec适当延长避免超时误判1.2 环境变量隔离策略银河麒麟的安全策略要求特别注意环境隔离# /etc/systemd/system/oracle-19c.service.d/env.conf [Service] EnvironmentFile-/etc/sysconfig/oracle-19c ProtectSystemfull ReadWritePaths/u01 /arch PrivateTmptrue NoNewPrivilegestrue1.3 服务健康检查机制添加自定义健康检查脚本/usr/libexec/oracle-healthcheck#!/bin/bash ORAENV_ASKNO 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 NR2 {print $5} | cut -d% -f1) [ $ARCH_USAGE -gt 80 ] find /arch/oraarch -type f -name *.arc -delete3.2 归档目录多路径配置在init.ora中设置log_archive_dest_1LOCATION/arch/oraarch1 MANDATORY log_archive_dest_2LOCATION/arch/oraarch2 OPTIONAL log_archive_dest_state_1ENABLE log_archive_dest_state_2ENABLE4. 性能与稳定性调优银河麒麟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_target0 SCOPESPFILE; ALTER SYSTEM SET sga_target12G SCOPESPFILE; ALTER SYSTEM SET pga_aggregate_target4G SCOPESPFILE; ALTER SYSTEM SET db_cache_size8G SCOPESPFILE; ALTER SYSTEM SET shared_pool_size3G SCOPESPFILE;4.3 存储I/O调度优化针对银河麒麟的存储配置# 查看当前调度器 cat /sys/block/sd*/queue/scheduler # 永久修改为deadline echo ACTIONadd|change, KERNELsd*, ATTR{queue/scheduler}deadline \ /etc/udev/rules.d/60-oracle-disk.rules
银河麒麟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] DescriptionOracle Database 19c Service Aftersyslog.target network.target auditd.service RequiresMountsFor/u01 /arch [Service] Typeforking Useroracle Groupoinstall EnvironmentORACLE_HOME/u01/app/oracle/product/19.3.0/db EnvironmentORACLE_SIDoracle EnvironmentLD_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 TimeoutSec300 Restarton-failure RestartSec30s [Install] WantedBymulti-user.target关键配置要点After参数确保网络和存储挂载完成RequiresMountsFor声明关键目录依赖Typeforking适配Oracle的启动特性TimeoutSec适当延长避免超时误判1.2 环境变量隔离策略银河麒麟的安全策略要求特别注意环境隔离# /etc/systemd/system/oracle-19c.service.d/env.conf [Service] EnvironmentFile-/etc/sysconfig/oracle-19c ProtectSystemfull ReadWritePaths/u01 /arch PrivateTmptrue NoNewPrivilegestrue1.3 服务健康检查机制添加自定义健康检查脚本/usr/libexec/oracle-healthcheck#!/bin/bash ORAENV_ASKNO 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 NR2 {print $5} | cut -d% -f1) [ $ARCH_USAGE -gt 80 ] find /arch/oraarch -type f -name *.arc -delete3.2 归档目录多路径配置在init.ora中设置log_archive_dest_1LOCATION/arch/oraarch1 MANDATORY log_archive_dest_2LOCATION/arch/oraarch2 OPTIONAL log_archive_dest_state_1ENABLE log_archive_dest_state_2ENABLE4. 性能与稳定性调优银河麒麟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_target0 SCOPESPFILE; ALTER SYSTEM SET sga_target12G SCOPESPFILE; ALTER SYSTEM SET pga_aggregate_target4G SCOPESPFILE; ALTER SYSTEM SET db_cache_size8G SCOPESPFILE; ALTER SYSTEM SET shared_pool_size3G SCOPESPFILE;4.3 存储I/O调度优化针对银河麒麟的存储配置# 查看当前调度器 cat /sys/block/sd*/queue/scheduler # 永久修改为deadline echo ACTIONadd|change, KERNELsd*, ATTR{queue/scheduler}deadline \ /etc/udev/rules.d/60-oracle-disk.rules