银河麒麟V10系统下Oracle 19c静默安装全攻略从警告处理到补丁自动化在国产化替代浪潮中银河麒麟操作系统正成为越来越多企业的选择。作为一名长期奋战在一线的数据库架构师我最近在银河麒麟V10上完成了Oracle 19c的静默安装部署过程中遇到了各种坑和警告信息。本文将分享如何完美解决[INS-13014]等常见警告并实现补丁安装的全自动化为国产化环境下的Oracle部署提供一套经过实战检验的解决方案。1. 环境准备与系统调优银河麒麟V10作为国产操作系统的代表其底层基于Linux内核但在软件包管理和系统配置上有着自己的特点。在开始Oracle 19c安装前必须做好充分的准备工作。1.1 系统基础配置首先需要关闭防火墙和SELinux这是Oracle安装的常规操作# 停止并禁用防火墙 systemctl stop firewalld.service systemctl disable firewalld.service # 关闭SELinux sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config setenforce 0对于国产化环境特别需要注意的是银河麒麟的软件源配置。与CentOS不同银河麒麟的yum源需要从官方获取# 备份原有repo文件 mkdir -p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ # 添加银河麒麟官方源 cat /etc/yum.repos.d/kylin.repo EOF [ks10-adv-os] name Kylin Linux Advanced Server 10 - Os baseurl http://archive.kylinos.cn/yum/v10/sp3/os/adv/lic/base/$basearch/ gpgcheck 0 enabled 1 [ks10-adv-updates] name Kylin Linux Advanced Server 10 - Updates baseurl http://archive.kylinos.cn/yum/v10/sp3/os/adv/lic/updates/$basearch/ gpgcheck 0 enabled 1 EOF1.2 依赖包安装Oracle 19c所需的依赖包在银河麒麟上有些特殊之处。经过多次测试以下是最全的依赖列表yum install -y bc binutils elfutils-libelf elfutils-libelf-devel \ fontconfig-devel glibc glibc-devel ksh libaio libaio-devel \ libXrender libX11 libXau libXi libXtst libgcc libnsl \ librdmacm libstdc libstdc-devel libxcb libibverbs \ make policycoreutils policycoreutils-python-utils \ smartmontools sysstat unixODBC unixODBC-devel注意银河麒麟V10的libnsl和libibverbs包名称与CentOS略有不同如果遇到找不到包的情况可以尝试使用yum search查找对应包名。1.3 内核参数优化针对Oracle数据库的特性和银河麒麟系统的特点需要调整以下内核参数cat /etc/sysctl.conf EOF # Oracle 19c recommended parameters fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 7903699 kernel.shmmax 32373555199 kernel.shmmni 4096 kernel.sem 250 32000 100 128 net.ipv4.ip_local_port_range 9000 65500 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 1048576 vm.min_free_kbytes126459 vm.swappiness 10 EOF # 使参数生效 sysctl -p关键点kernel.shmmax的值应根据实际物理内存大小调整一般设置为物理内存的70%-80%。在银河麒麟系统上如果内存超过64GB需要特别注意这个参数的设置。2. 用户环境与目录规划合理的用户和目录规划是Oracle稳定运行的基础。在国产化环境中我们还需要考虑后续的维护便利性。2.1 用户和组创建Oracle安装需要专门的用户和组以下是推荐配置# 创建必要的用户组 groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper groupadd -g 54324 backupdba groupadd -g 54325 dgdba groupadd -g 54326 kmdba # 创建oracle用户 useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba oracle echo oracle | passwd oracle --stdin2.2 目录结构与权限在银河麒麟系统上推荐使用以下目录结构mkdir -p /u01/app/oracle/product/19.3.0/db mkdir -p /u01/app/oraInventory mkdir -p /data/oracle mkdir -p /arch/backup chown -R oracle:oinstall /u01 /data /arch chmod -R 775 /u01 /data /arch经验分享在实际项目中我习惯将数据文件、归档日志和备份分别放在不同的物理磁盘上这样既能提高性能又能增强安全性。在银河麒麟系统上可以通过lsblk命令查看磁盘情况然后使用mount命令挂载到相应目录。2.3 环境变量配置Oracle用户的环境变量配置对后续使用影响很大以下是我的推荐配置cat ~oracle/.bash_profile EOF umask 022 export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_BASE/product/19.3.0/db export ORACLE_SIDorcl export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANGAMERICAN_AMERICA.AL32UTF8 export TNS_ADMIN$ORACLE_HOME/network/admin # 实用别名 alias sqlsqlplus / as sysdba alias lsnrlsnrctl status alias startdbdbstart $ORACLE_HOME alias stopdbdbshut $ORACLE_HOME EOF提示在银河麒麟系统上如果使用中文环境务必设置正确的NLS_LANG环境变量否则可能会遇到字符集问题。对于国内项目ZHS16GBK也是常用的字符集选择。3. 静默安装与警告处理静默安装是生产环境中的标准做法但在银河麒麟系统上我们经常会遇到各种警告信息。下面分享如何正确处理这些警告。3.1 准备响应文件Oracle静默安装需要一个响应文件(response file)可以从安装介质中获取模板unzip LINUX.X64_193000_db_home.zip cp db/install/response/db_install.rsp /tmp/db_install.rsp然后修改响应文件的关键参数oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory ORACLE_HOME/u01/app/oracle/product/19.3.0/db ORACLE_BASE/u01/app/oracle oracle.install.db.InstallEditionEE oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPoper oracle.install.db.OSBACKUPDBA_GROUPbackupdba oracle.install.db.OSDGDBA_GROUPdgdba oracle.install.db.OSKMDBA_GROUPkmdba oracle.install.db.OSRACDBA_GROUPdba SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse DECLINE_SECURITY_UPDATEStrue3.2 处理[INS-13014]警告在银河麒麟上安装时几乎必定会遇到[WARNING] [INS-13014]警告。这是Oracle安装程序检查系统环境时发出的非致命警告。解决方法首先检查日志文件确定哪些检查未通过grep PRVG- /tmp/InstallActions*.log常见的可忽略检查包括PRVG-1101 : 未找到/etc/redhat-release文件银河麒麟不是RedHat系PRVG-13607 : 交换空间检查PRVG-11801 : 软件包版本检查在安装命令中添加-ignorePrereq参数./runInstaller -silent -responseFile /tmp/db_install.rsp -ignorePrereq -waitForCompletion实战经验在生产环境中我通常会先不加-ignorePrereq参数运行一次查看具体哪些检查未通过。对于确实不满足但可以忽略的条件如缺少特定软件包再决定是否忽略。但对于核心条件如内存不足则应该先解决根本问题。3.3 执行root脚本安装完成后需要以root身份执行两个脚本/u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/19.3.0/db/root.sh在银河麒麟系统上执行root.sh时可能会遇到/etc/oratab不存在的错误。这是因为银河麒麟默认没有这个文件可以手动创建touch /etc/oratab chown oracle:oinstall /etc/oratab4. 补丁自动化与数据库创建Oracle 19c安装完成后通常需要应用最新的补丁集。在国产化环境中如何自动化这一过程尤为重要。4.1 自动化补丁安装Oracle补丁通常需要交互确认这在自动化部署中是个难题。以下是解决方案首先解压补丁包unzip p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME unzip p35943157_190000_Linux-x86-64.zip unzip p35926646_190000_Linux-x86-64.zip使用expect工具自动化交互过程yum install -y expect cat apply_patch.exp EOF #!/usr/bin/expect set timeout -1 spawn $env(ORACLE_HOME)/OPatch/opatch apply -silent -oh $env(ORACLE_HOME) -local /tmp/35943157 expect Do you want to proceed? \\\[y\\\|n\\\] send y\r expect Is the local system ready for patching? \\\[y\\\|n\\\] send y\r expect eof EOF chmod x apply_patch.exp ./apply_patch.exp对于多个补丁可以编写循环脚本for PATCH_DIR in 35943157 35926646; do cd /tmp/$PATCH_DIR $ORACLE_HOME/OPatch/opatch apply -silent -oh $ORACLE_HOME done注意补丁安装顺序很重要必须按照Oracle官方文档要求的顺序安装。在银河麒麟系统上有时需要先安装特定的系统补丁才能继续。4.2 静默创建数据库使用DBCA静默创建数据库时可以通过响应文件实现完全自动化dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname orcl -sid orcl \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -sysPassword oracle \ -systemPassword oracle \ -createAsContainerDatabase false \ -databaseType MULTIPURPOSE \ -automaticMemoryManagement false \ -totalMemory 8192 \ -storageType FS \ -datafileDestination /data/oracle \ -redoLogFileSize 1024 \ -emConfiguration NONE \ -ignorePreReqs \ -enableArchive true \ -archiveLogDest /arch关键参数说明-totalMemory分配给Oracle的总内存(MB)建议为物理内存的50-70%-redoLogFileSize重做日志文件大小(MB)OLTP系统建议设置较大-characterSet字符集国内项目也可选择ZHS16GBK4.3 监听器配置静默配置监听器可以使用netca的静默模式首先准备响应文件cp $ORACLE_HOME/assistants/netca/netca.rsp /tmp/netca.rsp sed -i s/INSTALLED_COMPONENTS/INSTALLED_COMPONENTS{oracle.net.ca}/ /tmp/netca.rsp sed -i s/LISTENER_NUMBER/LISTENER_NUMBER1/ /tmp/netca.rsp sed -i s/LISTENER_NAMES/LISTENER_NAMES{LISTENER}/ /tmp/netca.rsp sed -i s/LISTENER_PROTOCOLS/LISTENER_PROTOCOLS{TCP;1521}/ /tmp/netca.rsp sed -i s/LISTENER_START/LISTENER_STARTLISTENER/ /tmp/netca.rsp运行netcanetca -silent -responseFile /tmp/netca.rsp验证监听状态lsnrctl status5. 生产环境优化与维护数据库安装完成后还需要进行一系列优化配置才能满足生产环境要求。5.1 系统服务配置将Oracle配置为系统服务实现开机自启cat /usr/lib/systemd/system/oracle.service EOF [Unit] DescriptionOracle Database Service Afternetwork.target [Service] Typeforking Useroracle Groupoinstall EnvironmentORACLE_HOME/u01/app/oracle/product/19.3.0/db EnvironmentORACLE_SIDorcl ExecStart$ORACLE_HOME/bin/dbstart $ORACLE_HOME ExecStop$ORACLE_HOME/bin/dbshut $ORACLE_HOME TimeoutSec5min IgnoreSIGPIPEno [Install] WantedBymulti-user.target EOF systemctl daemon-reload systemctl enable oracle5.2 备份策略实施完善的备份策略是DBA工作的重中之重。以下是一个简单的RMAN全备脚本cat /home/oracle/scripts/rman_backup.sh EOF #!/bin/bash export ORACLE_HOME/u01/app/oracle/product/19.3.0/db export PATH$ORACLE_HOME/bin:$PATH export DATE$(date %Y%m%d) rman target / EOD run { allocate channel c1 device type disk; allocate channel c2 device type disk; backup as compressed backupset database plus archivelog delete input; release channel c1; release channel c2; } crosscheck backup; delete noprompt obsolete; exit EOD EOF chmod x /home/oracle/scripts/rman_backup.sh然后配置cron定时任务(crontab -l 2/dev/null; echo 0 2 * * * /home/oracle/scripts/rman_backup.sh /home/oracle/scripts/backup.log 21) | crontab -5.3 性能监控配置Oracle自带的AWR报告是性能分析的重要工具需要配置正确的快照间隔sqlplus / as sysdba EOF -- 修改快照保留时间为30天 exec dbms_workload_repository.modify_snapshot_settings(retention43200); -- 修改快照间隔为1小时 exec dbms_workload_repository.modify_snapshot_settings(interval60); exit EOF此外还可以配置OSWatcher等工具来监控系统性能mkdir /home/oracle/osw cd /home/oracle/osw wget https://support.oracle.com/epmos/faces/DocumentDisplay?id301137.1 -O osw.zip unzip osw.zip nohup ./startOSW.sh 60 24 gzip /home/oracle/osw/archive 6. 国产化环境特别注意事项在银河麒麟V10这样的国产化环境中部署Oracle还有一些特别需要注意的事项。6.1 兼容性问题处理银河麒麟系统虽然基于Linux但与Oracle官方认证的Red Hat/Oracle Linux存在一些差异。常见问题包括缺少依赖包银河麒麟的软件仓库可能缺少某些Oracle需要的包可以通过手动编译或从兼容系统获取glibc版本问题如果Oracle需要的glibc版本高于系统自带版本可以考虑使用静态链接的Oracle客户端工具内核参数差异银河麒麟的某些内核参数默认值与Oracle推荐值差异较大需要仔细调整6.2 性能调优建议根据在多个国产化项目中的经验银河麒麟系统上Oracle性能调优的几个关键点I/O调度器选择银河麒麟默认使用cfq调度器对于Oracle数据库建议改为deadline或noopecho deadline /sys/block/sda/queue/scheduler透明大页禁用Oracle推荐禁用透明大页(Transparent HugePages)echo never /sys/kernel/mm/transparent_hugepage/enabled echo never /sys/kernel/mm/transparent_hugepage/defragNUMA设置对于NUMA架构的服务器需要特别注意内存分配策略yum install -y numactl numactl --hardware6.3 安全加固措施在国产化环境中安全要求通常更高。以下是一些推荐的安全加固措施Oracle审计配置ALTER SYSTEM SET audit_traildb,extended SCOPESPFILE; ALTER SYSTEM SET audit_sys_operationsTRUE SCOPESPFILE;密码策略强化ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LIFE_TIME 90 PASSWORD_REUSE_TIME 365 PASSWORD_REUSE_MAX 10;网络访问控制# 在sqlnet.ora中添加 tcp.validnode_checking yes tcp.invited_nodes (192.168.1.100, 192.168.1.101)在银河麒麟V10上成功部署Oracle 19c后最大的感受是一定要仔细阅读安装日志不要被表面的警告吓到。很多所谓的错误实际上只是Oracle安装程序对非认证系统的抱怨并不影响实际功能。通过-ignorePrereq参数和适当的响应文件配置完全可以实现一键式静默安装。对于补丁安装的交互问题expect工具是个不错的选择但在生产环境中使用前一定要在测试环境充分验证。
在银河麒麟V10上,我如何用静默安装搞定Oracle 19c,并顺手解决了那些烦人的警告和补丁问题
银河麒麟V10系统下Oracle 19c静默安装全攻略从警告处理到补丁自动化在国产化替代浪潮中银河麒麟操作系统正成为越来越多企业的选择。作为一名长期奋战在一线的数据库架构师我最近在银河麒麟V10上完成了Oracle 19c的静默安装部署过程中遇到了各种坑和警告信息。本文将分享如何完美解决[INS-13014]等常见警告并实现补丁安装的全自动化为国产化环境下的Oracle部署提供一套经过实战检验的解决方案。1. 环境准备与系统调优银河麒麟V10作为国产操作系统的代表其底层基于Linux内核但在软件包管理和系统配置上有着自己的特点。在开始Oracle 19c安装前必须做好充分的准备工作。1.1 系统基础配置首先需要关闭防火墙和SELinux这是Oracle安装的常规操作# 停止并禁用防火墙 systemctl stop firewalld.service systemctl disable firewalld.service # 关闭SELinux sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config setenforce 0对于国产化环境特别需要注意的是银河麒麟的软件源配置。与CentOS不同银河麒麟的yum源需要从官方获取# 备份原有repo文件 mkdir -p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ # 添加银河麒麟官方源 cat /etc/yum.repos.d/kylin.repo EOF [ks10-adv-os] name Kylin Linux Advanced Server 10 - Os baseurl http://archive.kylinos.cn/yum/v10/sp3/os/adv/lic/base/$basearch/ gpgcheck 0 enabled 1 [ks10-adv-updates] name Kylin Linux Advanced Server 10 - Updates baseurl http://archive.kylinos.cn/yum/v10/sp3/os/adv/lic/updates/$basearch/ gpgcheck 0 enabled 1 EOF1.2 依赖包安装Oracle 19c所需的依赖包在银河麒麟上有些特殊之处。经过多次测试以下是最全的依赖列表yum install -y bc binutils elfutils-libelf elfutils-libelf-devel \ fontconfig-devel glibc glibc-devel ksh libaio libaio-devel \ libXrender libX11 libXau libXi libXtst libgcc libnsl \ librdmacm libstdc libstdc-devel libxcb libibverbs \ make policycoreutils policycoreutils-python-utils \ smartmontools sysstat unixODBC unixODBC-devel注意银河麒麟V10的libnsl和libibverbs包名称与CentOS略有不同如果遇到找不到包的情况可以尝试使用yum search查找对应包名。1.3 内核参数优化针对Oracle数据库的特性和银河麒麟系统的特点需要调整以下内核参数cat /etc/sysctl.conf EOF # Oracle 19c recommended parameters fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 7903699 kernel.shmmax 32373555199 kernel.shmmni 4096 kernel.sem 250 32000 100 128 net.ipv4.ip_local_port_range 9000 65500 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 1048576 vm.min_free_kbytes126459 vm.swappiness 10 EOF # 使参数生效 sysctl -p关键点kernel.shmmax的值应根据实际物理内存大小调整一般设置为物理内存的70%-80%。在银河麒麟系统上如果内存超过64GB需要特别注意这个参数的设置。2. 用户环境与目录规划合理的用户和目录规划是Oracle稳定运行的基础。在国产化环境中我们还需要考虑后续的维护便利性。2.1 用户和组创建Oracle安装需要专门的用户和组以下是推荐配置# 创建必要的用户组 groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper groupadd -g 54324 backupdba groupadd -g 54325 dgdba groupadd -g 54326 kmdba # 创建oracle用户 useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba oracle echo oracle | passwd oracle --stdin2.2 目录结构与权限在银河麒麟系统上推荐使用以下目录结构mkdir -p /u01/app/oracle/product/19.3.0/db mkdir -p /u01/app/oraInventory mkdir -p /data/oracle mkdir -p /arch/backup chown -R oracle:oinstall /u01 /data /arch chmod -R 775 /u01 /data /arch经验分享在实际项目中我习惯将数据文件、归档日志和备份分别放在不同的物理磁盘上这样既能提高性能又能增强安全性。在银河麒麟系统上可以通过lsblk命令查看磁盘情况然后使用mount命令挂载到相应目录。2.3 环境变量配置Oracle用户的环境变量配置对后续使用影响很大以下是我的推荐配置cat ~oracle/.bash_profile EOF umask 022 export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_BASE/product/19.3.0/db export ORACLE_SIDorcl export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANGAMERICAN_AMERICA.AL32UTF8 export TNS_ADMIN$ORACLE_HOME/network/admin # 实用别名 alias sqlsqlplus / as sysdba alias lsnrlsnrctl status alias startdbdbstart $ORACLE_HOME alias stopdbdbshut $ORACLE_HOME EOF提示在银河麒麟系统上如果使用中文环境务必设置正确的NLS_LANG环境变量否则可能会遇到字符集问题。对于国内项目ZHS16GBK也是常用的字符集选择。3. 静默安装与警告处理静默安装是生产环境中的标准做法但在银河麒麟系统上我们经常会遇到各种警告信息。下面分享如何正确处理这些警告。3.1 准备响应文件Oracle静默安装需要一个响应文件(response file)可以从安装介质中获取模板unzip LINUX.X64_193000_db_home.zip cp db/install/response/db_install.rsp /tmp/db_install.rsp然后修改响应文件的关键参数oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory ORACLE_HOME/u01/app/oracle/product/19.3.0/db ORACLE_BASE/u01/app/oracle oracle.install.db.InstallEditionEE oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPoper oracle.install.db.OSBACKUPDBA_GROUPbackupdba oracle.install.db.OSDGDBA_GROUPdgdba oracle.install.db.OSKMDBA_GROUPkmdba oracle.install.db.OSRACDBA_GROUPdba SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse DECLINE_SECURITY_UPDATEStrue3.2 处理[INS-13014]警告在银河麒麟上安装时几乎必定会遇到[WARNING] [INS-13014]警告。这是Oracle安装程序检查系统环境时发出的非致命警告。解决方法首先检查日志文件确定哪些检查未通过grep PRVG- /tmp/InstallActions*.log常见的可忽略检查包括PRVG-1101 : 未找到/etc/redhat-release文件银河麒麟不是RedHat系PRVG-13607 : 交换空间检查PRVG-11801 : 软件包版本检查在安装命令中添加-ignorePrereq参数./runInstaller -silent -responseFile /tmp/db_install.rsp -ignorePrereq -waitForCompletion实战经验在生产环境中我通常会先不加-ignorePrereq参数运行一次查看具体哪些检查未通过。对于确实不满足但可以忽略的条件如缺少特定软件包再决定是否忽略。但对于核心条件如内存不足则应该先解决根本问题。3.3 执行root脚本安装完成后需要以root身份执行两个脚本/u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/19.3.0/db/root.sh在银河麒麟系统上执行root.sh时可能会遇到/etc/oratab不存在的错误。这是因为银河麒麟默认没有这个文件可以手动创建touch /etc/oratab chown oracle:oinstall /etc/oratab4. 补丁自动化与数据库创建Oracle 19c安装完成后通常需要应用最新的补丁集。在国产化环境中如何自动化这一过程尤为重要。4.1 自动化补丁安装Oracle补丁通常需要交互确认这在自动化部署中是个难题。以下是解决方案首先解压补丁包unzip p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME unzip p35943157_190000_Linux-x86-64.zip unzip p35926646_190000_Linux-x86-64.zip使用expect工具自动化交互过程yum install -y expect cat apply_patch.exp EOF #!/usr/bin/expect set timeout -1 spawn $env(ORACLE_HOME)/OPatch/opatch apply -silent -oh $env(ORACLE_HOME) -local /tmp/35943157 expect Do you want to proceed? \\\[y\\\|n\\\] send y\r expect Is the local system ready for patching? \\\[y\\\|n\\\] send y\r expect eof EOF chmod x apply_patch.exp ./apply_patch.exp对于多个补丁可以编写循环脚本for PATCH_DIR in 35943157 35926646; do cd /tmp/$PATCH_DIR $ORACLE_HOME/OPatch/opatch apply -silent -oh $ORACLE_HOME done注意补丁安装顺序很重要必须按照Oracle官方文档要求的顺序安装。在银河麒麟系统上有时需要先安装特定的系统补丁才能继续。4.2 静默创建数据库使用DBCA静默创建数据库时可以通过响应文件实现完全自动化dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname orcl -sid orcl \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -sysPassword oracle \ -systemPassword oracle \ -createAsContainerDatabase false \ -databaseType MULTIPURPOSE \ -automaticMemoryManagement false \ -totalMemory 8192 \ -storageType FS \ -datafileDestination /data/oracle \ -redoLogFileSize 1024 \ -emConfiguration NONE \ -ignorePreReqs \ -enableArchive true \ -archiveLogDest /arch关键参数说明-totalMemory分配给Oracle的总内存(MB)建议为物理内存的50-70%-redoLogFileSize重做日志文件大小(MB)OLTP系统建议设置较大-characterSet字符集国内项目也可选择ZHS16GBK4.3 监听器配置静默配置监听器可以使用netca的静默模式首先准备响应文件cp $ORACLE_HOME/assistants/netca/netca.rsp /tmp/netca.rsp sed -i s/INSTALLED_COMPONENTS/INSTALLED_COMPONENTS{oracle.net.ca}/ /tmp/netca.rsp sed -i s/LISTENER_NUMBER/LISTENER_NUMBER1/ /tmp/netca.rsp sed -i s/LISTENER_NAMES/LISTENER_NAMES{LISTENER}/ /tmp/netca.rsp sed -i s/LISTENER_PROTOCOLS/LISTENER_PROTOCOLS{TCP;1521}/ /tmp/netca.rsp sed -i s/LISTENER_START/LISTENER_STARTLISTENER/ /tmp/netca.rsp运行netcanetca -silent -responseFile /tmp/netca.rsp验证监听状态lsnrctl status5. 生产环境优化与维护数据库安装完成后还需要进行一系列优化配置才能满足生产环境要求。5.1 系统服务配置将Oracle配置为系统服务实现开机自启cat /usr/lib/systemd/system/oracle.service EOF [Unit] DescriptionOracle Database Service Afternetwork.target [Service] Typeforking Useroracle Groupoinstall EnvironmentORACLE_HOME/u01/app/oracle/product/19.3.0/db EnvironmentORACLE_SIDorcl ExecStart$ORACLE_HOME/bin/dbstart $ORACLE_HOME ExecStop$ORACLE_HOME/bin/dbshut $ORACLE_HOME TimeoutSec5min IgnoreSIGPIPEno [Install] WantedBymulti-user.target EOF systemctl daemon-reload systemctl enable oracle5.2 备份策略实施完善的备份策略是DBA工作的重中之重。以下是一个简单的RMAN全备脚本cat /home/oracle/scripts/rman_backup.sh EOF #!/bin/bash export ORACLE_HOME/u01/app/oracle/product/19.3.0/db export PATH$ORACLE_HOME/bin:$PATH export DATE$(date %Y%m%d) rman target / EOD run { allocate channel c1 device type disk; allocate channel c2 device type disk; backup as compressed backupset database plus archivelog delete input; release channel c1; release channel c2; } crosscheck backup; delete noprompt obsolete; exit EOD EOF chmod x /home/oracle/scripts/rman_backup.sh然后配置cron定时任务(crontab -l 2/dev/null; echo 0 2 * * * /home/oracle/scripts/rman_backup.sh /home/oracle/scripts/backup.log 21) | crontab -5.3 性能监控配置Oracle自带的AWR报告是性能分析的重要工具需要配置正确的快照间隔sqlplus / as sysdba EOF -- 修改快照保留时间为30天 exec dbms_workload_repository.modify_snapshot_settings(retention43200); -- 修改快照间隔为1小时 exec dbms_workload_repository.modify_snapshot_settings(interval60); exit EOF此外还可以配置OSWatcher等工具来监控系统性能mkdir /home/oracle/osw cd /home/oracle/osw wget https://support.oracle.com/epmos/faces/DocumentDisplay?id301137.1 -O osw.zip unzip osw.zip nohup ./startOSW.sh 60 24 gzip /home/oracle/osw/archive 6. 国产化环境特别注意事项在银河麒麟V10这样的国产化环境中部署Oracle还有一些特别需要注意的事项。6.1 兼容性问题处理银河麒麟系统虽然基于Linux但与Oracle官方认证的Red Hat/Oracle Linux存在一些差异。常见问题包括缺少依赖包银河麒麟的软件仓库可能缺少某些Oracle需要的包可以通过手动编译或从兼容系统获取glibc版本问题如果Oracle需要的glibc版本高于系统自带版本可以考虑使用静态链接的Oracle客户端工具内核参数差异银河麒麟的某些内核参数默认值与Oracle推荐值差异较大需要仔细调整6.2 性能调优建议根据在多个国产化项目中的经验银河麒麟系统上Oracle性能调优的几个关键点I/O调度器选择银河麒麟默认使用cfq调度器对于Oracle数据库建议改为deadline或noopecho deadline /sys/block/sda/queue/scheduler透明大页禁用Oracle推荐禁用透明大页(Transparent HugePages)echo never /sys/kernel/mm/transparent_hugepage/enabled echo never /sys/kernel/mm/transparent_hugepage/defragNUMA设置对于NUMA架构的服务器需要特别注意内存分配策略yum install -y numactl numactl --hardware6.3 安全加固措施在国产化环境中安全要求通常更高。以下是一些推荐的安全加固措施Oracle审计配置ALTER SYSTEM SET audit_traildb,extended SCOPESPFILE; ALTER SYSTEM SET audit_sys_operationsTRUE SCOPESPFILE;密码策略强化ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LIFE_TIME 90 PASSWORD_REUSE_TIME 365 PASSWORD_REUSE_MAX 10;网络访问控制# 在sqlnet.ora中添加 tcp.validnode_checking yes tcp.invited_nodes (192.168.1.100, 192.168.1.101)在银河麒麟V10上成功部署Oracle 19c后最大的感受是一定要仔细阅读安装日志不要被表面的警告吓到。很多所谓的错误实际上只是Oracle安装程序对非认证系统的抱怨并不影响实际功能。通过-ignorePrereq参数和适当的响应文件配置完全可以实现一键式静默安装。对于补丁安装的交互问题expect工具是个不错的选择但在生产环境中使用前一定要在测试环境充分验证。