www.colben.cn/content/post/oracle11g-install.md
2022-04-20 12:07:11 +08:00

257 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "CentOS7.4 静默安装 Oracle11g"
date: 2019-10-30T11:54:49+08:00
lastmod: 2022-04-19T12:00:00+08:00
tags: ["oracle"]
categories: ["database"]
---
## 环境
- CentOS7.4 最小安装
- 数据库软件
- linux.x64_11gR2_database_1of2.zip
- linux.x64_11gR2_database_2of2.zip
## 操作系统配置
- 关闭 SELinux
```bash
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
```
- 关闭防火墙,或者放行 tcp 1521 端口
```bash
systemctl disable firewalld
systemctl stop firewalld
```
- 检查交换内存(swap)大小,建议内存一半以上,如果没有设置虚拟内存,可参考如下操作
```bash
dd if=/dev/zero bs=1024 count=1048576 of=/SWAP # 1GB
chmod 0600 /SWAP
echo '/SWAP swap swap defaults 0 0' >> /etc/fstab
swapon /SWAP
```
- 调整 /etc/fstab调整共享内存分区的大小
```
tmpfs /dev/shm tmpfs defaults,size=5120M 0 0
# 这里的 5120M 是要调整的共享内存分区的大小,建议大小为内存一半以上
```
- 重启操作系统
```bash
reboot
```
## 安装依赖
- 安装可能用到的工具
```bash
yum install epel-release
yum clean all
yum makecache fast
yum install vim unzip rlwrap
```
- 安装 oracle 需要的包
```bash
yum install binutils compat-libcap1 compat-libstdc++-33 \
compat-libstdc++-33*i686 gcc gcc-c++ glibc glibc*.i686 \
glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel \
libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel \
libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC \
unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686
```
## 配置安装环境
- 创建 oracle 用户
```bash
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
```
- 创建 oracle 安装目录
```bash
mkdir -p /opt/oracle/app/product/11.2.0
mkdir -p /opt/oracle/app/oradata
mkdir -p /opt/oracle/app/fast_recovery_area
mkdir -p /opt/oracle/inventory
chown -R oracle:oinstall /opt/oracle
chmod -R 775 /opt/oracle
```
- 修改 sysctl.conf
```bash
cat << EOF >> /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
#物理内存一半和4G中的较大者
kernel.shmmax = 4294967296
#shmmax / 4k (getconf PAGESIZE)
kernel.shmall = 1048576
kernel.shmmni = 4096
kernel.sem = 250 32000 200 200
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.core.rmem_max = 4194304
EOF
sysctl -p
```
- 修改 limits.conf
```bash
cat << EOF >> /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
```
- 修改 login
```bash
cat << EOF >> /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so
EOF
```
- 修改 profile
```bash
cat << EOF >> /etc/profile
if [ \$USER = "oracle" ] ; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF
```
- 修改 oracle 用户的 .bash_profile
```bash
cat << EOF >> /home/oracle/.bash_profile
export ORACLE_BASE=/opt/oracle/app
export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0
export ORACLE_SID=orcl
export PATH=\$PATH:\$ORACLE_HOME/bin
#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
EOF
```
## 安装数据库
- 上传数据库软件到 /root 下,解压
```bash
unzip linux.x64_11gR2_database_1of2.zip -d /home/oracle/
unzip linux.x64_11gR2_database_2of2.zip -d /home/oracle/
chown -R oracle.oinstall /home/oracle/database
```
- 切换到 oracle 用户,后续操作都在该 oracle 用户下执行
```bash
su - oracle
```
- 创建 response 文件
```bash
cd /home/oracle
cp database/response/*.rsp ./
```
- 修改 db_install.rsp
```bash
sed -i \
-e '/^oracle.install.option=/s#=.*$#=INSTALL_DB_SWONLY#' \
-e '/^UNIX_GROUP_NAME=/s#=.*$#=oinstall#' \
-e '/^INVENTORY_LOCATION=/s#=.*$#=/opt/oracle/inventory#' \
-e '/^SELECTED_LANGUAGES=/s#=.*$#=en,zh_CN#' \
-e '/^ORACLE_HOME=/s#=.*$#=/opt/oracle/app/product/11.2.0#' \
-e '/^ORACLE_BASE=/s#=.*$#=/opt/oracle/app#' \
-e '/^oracle.install.db.InstallEdition=/s#=.*$#=EE#' \
-e '/^oracle.install.db.DBA_GROUP=/s#=.*$#=dba#' \
-e '/^oracle.install.db.OPER_GROUP=/s#=.*$#=dba#' \
-e '/^oracle.install.db.config.starterdb.type=/s#=.*$#=GENERAL_PURPOSE#' \
-e '/^DECLINE_SECURITY_UPDATES=/s#=.*$#=true#' \
/home/oracle/db_install.rsp
```
- 无需修改 netca.rsp
- 修改 dbca.rsp
```bash
sed -i \
-e '/^GDBNAME=/s#=.*$#=orcl#' \
-e '/^SID=/s#=.*$#=orcl#' \
-e '/^SYSPASSWORD=/s#=.*$#=111111#' \
-e '/^SYSTEMPASSWORD=/s#=.*$#=111111#' \
-e '/^CHARACTERSET=/s#=.*$#=ZHS16GBK#' \
/home/oracle/dbca.rsp
```
- 安装 oracle 软件
```bash
cd /home/oracle/database
./runInstaller -silent -responseFile /home/oracle/db_install.rsp -ignorePrereq
#安装成功后,系统提示需要在 root 下执行两个脚本
/opt/oracle/invertory/orainstRoot.sh
/opt/oracle/app/product/11.2.0/root.sh
```
- 配置监听
```bash
netca /silent /responseFile /home/oracle/netca.rsp
#配置成功后,监听启动,查看监听状态
lsnrctl status
```
- 创建数据库
```bash
dbca -silent -responseFile /home/oracle/dbca.rsp
#查看屏幕输出的创建进度
```
## 启动数据库
- 登陆 sysdba启动数据库
```
[oracle@localhost ~]$ rlwrap sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 6月 25 14:46:58 2018
Copyright (c) 1982, 2009, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> startup
```
### 启动报错 LRM-00109
- 详细报错信息如下:
```
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file 'cd /opt/oracle/app/product/11.2.0/dbs/initorcl.ora'
```
- 创建 initorcl.ora 文件
```bash
cd /opt/oracle/app
cp admin/orcl11g/pfile/init.ora.* product/11.2.0/dbs/initorcl.ora
```
### 启动报错 ORA-00845
- 详细报错信息如下:
```
ORA-00845: MEMORY_TARGET not supported on this system
```
- 调整 /etc/fstab增加如下配置
```
tmpfs /dev/shm tmpfs defaults,size=5120M 0 0
# 这里的 5120M 是要调整的共享内存分区的大小
```
- 重启服务器