Oracle Linux 7.8 静默安装 Oracle 11g R2 单机 ASM 笔记
一、系统环境准备
-
操作系统要求
- Oracle Linux 7.8 x86_64(内核:3.10.0-1127.el7.x86_64)
- 内存:≥ 4GB(推荐 8GB)
- 交换空间:≥ 8GB
- 磁盘空间:
/tmp
≥ 1GB- Grid 安装目录:≥ 10GB
- Oracle 安装目录:≥ 10GB
- ASM 磁盘:≥ 20GB(推荐 3 块磁盘)
-
配置主机名和解析
bashhostnamectl set-hostname ol7-ora11g echo "192.168.1.100 ol7-ora11g" >> /etc/hosts
-
禁用 SELinux 和防火墙
bashsetenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config systemctl stop firewalld systemctl disable firewalld
-
安装依赖包
bashyum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel \ ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat \ unixODBC unixODBC-devel elfutils-libelf-devel
二、创建用户和组
bash
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 asmadmin
groupadd -g 54325 asmdba
groupadd -g 54326 asmoper
useradd -u 54321 -g oinstall -G dba,asmdba,oper oracle
useradd -u 54322 -g oinstall -G asmadmin,asmdba,asmoper,dba grid
echo "oracle:oracle" | chpasswd
echo "grid:grid" | chpasswd
三、内核参数优化
编辑 /etc/sysctl.conf
:
conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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
应用配置:
bash
sysctl -p
四、资源限制配置
编辑 /etc/security/limits.conf
:
conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
五、禁用透明大页(THP)
-
编辑
/etc/default/grub
:confGRUB_CMDLINE_LINUX="... transparent_hugepage=never"
-
更新 GRUB:
bashgrub2-mkconfig -o /boot/grub2/grub.cfg reboot
-
验证:
bashcat /sys/kernel/mm/transparent_hugepage/enabled # 输出:[never] ...
六、配置 ASM 磁盘
-
准备磁盘(示例:/dev/sdb, /dev/sdc)
bashfdisk /dev/sdb # 创建分区(n → p → 1 → 回车 → t → 8e → w) fdisk /dev/sdc # 同上
-
配置 UDEV 规则
创建/etc/udev/rules.d/99-oracle-asm.rules
:rulesKERNEL=="sdb1", OWNER="grid", GROUP="asmadmin", MODE="0660" KERNEL=="sdc1", OWNER="grid", GROUP="asmadmin", MODE="0660"
生效配置:
bashudevadm control --reload-rules udevadm trigger
七、目录结构规划
bash
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/grid /u01/app/oraInventory
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app
八、上传并解压安装包
-
上传文件到
/opt
linux.x64_11gR2_grid.zip
linux.x64_11gR2_database_*.zip
-
解压文件
bashunzip linux.x64_11gR2_grid.zip -d /opt/grid unzip linux.x64_11gR2_database_1of2.zip -d /opt/database unzip linux.x64_11gR2_database_2of2.zip -d /opt/database chown -R grid:oinstall /opt/grid chown -R oracle:oinstall /opt/database
九、配置响应文件
-
Grid 响应文件 (
/opt/grid/grid.rsp
)propertiesoracle.install.responseFileVersion=/oracle/install/rspfmt_gridinstall_response_schema_v11_2_0 INVENTORY_LOCATION=/u01/app/oraInventory SELECTED_LANGUAGES=en oracle.install.option=HA_CONFIG ORACLE_BASE=/u01/app/grid ORACLE_HOME=/u01/app/11.2.0/grid oracle.install.asm.OSDBA=asmdba oracle.install.asm.OSOPER=asmoper oracle.install.asm.OSASM=asmadmin oracle.install.crs.config.ClusterType=STANDALONE oracle.install.asm.SYSASMPassword=Oracle123 oracle.install.asm.diskGroup.name=DATA oracle.install.asm.diskGroup.redundancy=EXTERNAL oracle.install.asm.diskGroup.AUSize=1 oracle.install.asm.diskGroup.disks=/dev/sdb1,/dev/sdc1 oracle.install.asm.diskGroup.diskDiscoveryString=/dev/sd* oracle.install.asm.monitorPassword=Oracle123
-
DB 响应文件 (
/opt/database/db.rsp
)propertiesoracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory SELECTED_LANGUAGES=en ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=oper DECLINE_SECURITY_UPDATES=true
十、静默安装 Grid Infrastructure
-
以 grid 用户运行
bashsu - grid cd /opt/grid ./runInstaller -silent -responseFile /opt/grid/grid.rsp -ignorePrereq
-
执行 root 脚本
bash/u01/app/oraInventory/orainstRoot.sh /u01/app/11.2.0/grid/root.sh
-
验证 ASM 实例
bashexport ORACLE_SID=+ASM sqlplus / as sysasm SQL> SELECT name, state FROM v$asm_diskgroup;
十一、静默安装 Oracle 数据库软件
-
以 oracle 用户运行
bashsu - oracle cd /opt/database ./runInstaller -silent -responseFile /opt/database/db.rsp -ignorePrereq
-
执行 root 脚本
bash/u01/app/oracle/product/11.2.0/db_1/root.sh
十二、创建数据库(使用 DBCA)
-
准备 DBCA 响应文件 (
/opt/database/dbca.rsp
)propertiesresponseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v11_2_0 gdbName=orcl sid=orcl templateName=General_Purpose.dbc sysPassword=Oracle123 systemPassword=Oracle123 characterSet=AL32UTF8 memoryPercentage=40 databaseType=MULTIPURPOSE storageType=ASM diskGroupName=DATA recoveryGroupName=DATA
-
静默创建数据库
bashdbca -silent -responseFile /opt/database/dbca.rsp
-
验证数据库
bashsqlplus / as sysdba SQL> SELECT name, open_mode FROM v$database;
十三、配置环境变量
-
grid 用户 (
~grid/.bash_profile
)bashexport ORACLE_HOME=/u01/app/11.2.0/grid export ORACLE_SID=+ASM export PATH=$PATH:$ORACLE_HOME/bin
-
oracle 用户 (
~oracle/.bash_profile
)bashexport ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 export ORACLE_SID=orcl export PATH=$PATH:$ORACLE_HOME/bin
十四、验证安装
bash
# 检查 ASM 实例
crsctl check has
sqlplus / as sysasm
SELECT * FROM v$asm_diskgroup;
# 检查数据库
lsnrctl status
sqlplus / as sysdba
SELECT * FROM v$version;
常见问题解决
-
磁盘权限问题
bashchown grid:asmadmin /dev/sd[b-c]1
-
ORA-00845 错误
确保/dev/shm
大小 ≥ 内存设置:bashmount -t tmpfs shmfs -o size=4g /dev/shm
-
安装日志路径
- Grid:
/u01/app/oraInventory/logs/installActions_*.log
- DB:
/u01/app/oracle/oraInventory/logs/installActions_*.log
- Grid: