前言
有的环境不允许图形化安装oracle数据库,这个时候就可以通过静默安装的方式安装。本文是静默安装19c数据库的过程,过程中如有什么需要改进和错误的地方,还请大家帮忙指出。
本次环境配置如下:
IP地址 | 主机名称 | 实例名称 | oracle版本 | 操作系统版本 |
---|---|---|---|---|
192.168.40.16 | test16 | testdb | 19c | oraclelinux 7.6 |
一、配置操作系统环境
注意:安装文件放置位置在/soft目录下
[root@test16:/root]# ls /soft
compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
LINUX.X64_193000_db_home.zip
0.环境变量设置
#设置ORACLE_HOME目录
ORACLE_HOME=/u01/app/oracle/product/19.3.0/db
#设置ORACLE_BASE目录
ORACLE_BASE=/u01/app/oracle
#设置oraInventory目录
oraInventory_HOME=/u01/app/oraInventory
#设置数据文件存放目录
DATA_HOME=/oradata
#设置归档存放目录
ARCH_HOME=/oradata/archivelog
#设置实例名
ORACLE_SID=testdb
#设置实例字符集
INSTANCE_CHARACTERSET=AL32UTF8
#设置实际国家字符集
INSTANCE_NCHARACTERSET=AL16UTF16
#设置是否CDB模式(TRUE/FALSE)
ISCDB=FALSE
1.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
2.关闭 Selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
cat /etc/selinux/config
3.挂载光驱
mount /dev/sr0 /mnt
4.配置本地yum文件
mkdir /etc/yum.repos.d/bak -p
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
cat<<EOF>/etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
EOF
#更新
yum repolist all
5.安装依赖包
yum install -y bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
gcc \
gcc-c++ \
elfutils-libelf \
elfutils-libelf-devel \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
make \
net-tools \
nfs-utils \
smartmontools \
sysstat \
e2fsprogs \
e2fsprogs-libs \
fontconfig-devel \
expect \
unzip \
openssh-clients \
readline* \
psmisc --skip-broken
#注意:RHEL 7 需要手动安装 compat-libstdc++ 依赖包:
rpm -ivh /soft/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
6.配置host
cat <<EOF >>/etc/hosts
${HOST_IP} ${HOSTNAME}
EOF
cat /etc/hosts
7.创建用户和组
#创建 oinstall dba oper 组
/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54330 racdba
# 创建 oracle 用户
/usr/sbin/useradd -u 54321 -g oinstall -G dba,backupdba,dgdba,kmdba,racdba,oper oracle
# 修改 oracle 用户密码为 oracle
echo oracle | passwd --stdin oracle
# 检查 oracle 用户
id oracle
8.创建安装目录
mkdir -p ${ORACLE_HOME}
mkdir -p ${oraInventory_HOME}
mkdir -p ${DATA_HOME}
mkdir -p ${ARCH_HOME}
chown -R oracle:oinstall ${DATA_HOME}
chown -R oracle:oinstall ${ARCH_HOME}
chown -R oracle:oinstall ${oraInventory_HOME}
chown -R oracle:oinstall ${ORACLE_BASE}
chmod -R 775 ${oraInventory_HOME}
chmod -R 775 ${ORACLE_BASE}
9.配置 avahi-deamon
systemctl stop avahi-daemon.socket
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service
systemctl disable avahi-daemon.socket
#关闭 NOZEROCONF
cat <<EOF >>/etc/sysconfig/network
NOZEROCONF=yes
EOF
cat /etc/sysconfig/network
10.关闭透明大页和 numa
sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
11.配置系统参数文件(这里参数按照8G内存配置)
DAYTIME=$(date +%Y%m%d)
mv /etc/sysctl.conf /etc/sysctl.conf.${DAYTIME}
memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
totalMemory=$((memTotal / 2048))
shmall=$((memTotal / 4))
if [ $shmall -lt 2097152 ]; then
shmall=2097152
fi
shmmax=$((memTotal * 1024 - 1))
if [ "$shmmax" -lt 4294967295 ]; then
shmmax=4294967295
fi
cat <<EOF >/etc/sysctl.conf
##shmmal's Calculation formula: physical memory 8G:(8*1024*1024*1024)/4096=2097152
##shmmax's Calculation formula: physical memory 8G:(8/2)*1024*1024*1024 -1=4294967295
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = $shmall
kernel.shmmax = $shmmax
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
EOF
##使之生效
sysctl -p
12.配置系统资源限制
cat <<EOF >>/etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
oracle hard memlock 134217728
oracle soft memlock 134217728
EOF
13.配置 pam.d
cat <<EOF >>/etc/pam.d/login
session required pam_limits.so
session required /lib64/security/pam_limits.so
EOF
14.配置 /dev/shm
cp /etc/fstab /tmp/fstab
memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
shmTotal=$(df -k /dev/shm | awk '{print $2}' | head -n 2 | tail -n 1)
if [ "$(grep -E -c "/dev/shm" /etc/fstab)" -eq 0 ]; then
cat <<EOF >>/etc/fstab
tmpfs /dev/shm tmpfs size=${memTotal}k 0 0
EOF
mount -o remount /dev/shm
else
if [ "$shmTotal" -lt "$memTotal" ]; then
shmTotal=$memTotal
line=$(grep -n "/dev/shm" /etc/fstab | awk -F ":" '{print $1}')
sed -i "${line} d" /etc/fstab
cat <<EOF >>/etc/fstab
tmpfs /dev/shm tmpfs size=${memTotal}k 0 0
EOF
fi
mount -o remount /dev/shm
fi
15.配置用户环境变量
15.1.配置 root 用户
cat <<EOF >>/root/.bash_profile
alias so='su - oracle'
export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]# '
EOF
15.2.配置 oracle 用户
cat <<EOF >>/home/oracle/.bash_profile
umask 022
export TMP=/tmp
export TMPDIR=\$TMP
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE=${ORACLE_BASE}
export ORACLE_HOME=\$ORACLE_BASE/product/19.3.0/db
export ORACLE_HOSTNAME=${HOSTNAME}
export ORACLE_TERM=xterm
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=${ORACLE_SID}
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
alias sas='sqlplus / as sysdba'
export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]\$ '
export INVENTORY_LOCATION=${oraInventory_HOME}
export ORADATADIR=${DATA_HOME}
export ARCHIVEDIR=${ARCH_HOME}
export CHARACTERSET=${INSTANCE_CHARACTERSET}
export NCHARACTERSET=${INSTANCE_NCHARACTERSET}
export ISCDB=${ISCDB}
EOF
cat /home/oracle/.bash_profile
17.重启
#重启系统,让前面的配置生效
reboot
18.验证
cat /etc/selinux/config
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /proc/cmdline
rpm -q bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline psmisc
二、配置响应文件
1.首先需要授予 /soft 目录权限
chown -R oracle.oinstall /soft
2.连接 oracle 用户
su - oracle
cd /soft
3.创建响应文件
cat <<EOF >>/soft/db.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=${INVENTORY_LOCATION}
ORACLE_BASE=${ORACLE_BASE}
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba
oracle.install.db.rootconfig.executeRootScript=false
oracle.install.db.rootconfig.configMethod=
EOF
三、静默安装数据库软件
进入ORACLE_HOME目录解压安装文件并执行静默安装
#静默安装
cd $ORACLE_HOME
#解压安装文件
unzip /soft/LINUX.X64_193000_db_home.zip
#运行静默安装
./runInstaller -silent -force -responseFile /soft/db.rsp -ignorePrereq -waitForCompletion
安装结束需要以root身份执行两个root脚本
#安装结束需要以root身份执行两个root脚本
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/19.3.0/db/root.sh
四、安装监听
su - oracle
netca -silent -responsefile $ORACLE_HOME/assistants/netca/netca.rsp
lsnrctl status
五、静默安装实例
#数据库内存这里取物理内存的 50%
memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
totalMemory=$((memTotal / 2048))
##执行安装命令
dbca -silent -createDatabase \
-ignorePrereqFailure \
-templateName General_Purpose.dbc \
-responseFile NO_VALUE \
-gdbName ${ORACLE_SID} \
-sid ${ORACLE_SID} \
-sysPassword oracle \
-systemPassword oracle \
-redoLogFileSize 1024 \
-storageType FS \
-databaseConfigType SINGLE \
-datafileDestination ${ORADATADIR} \
-enableArchive true \
-archiveLogDest ${ARCHIVEDIR} \
-characterset ${CHARACTERSET} \
-nationalCharacterSet ${NCHARACTERSET} \
-emConfiguration NONE \
-automaticMemoryManagement false \
-totalMemory ${totalMemory} \
-databaseType OLTP \
-createAsContainerDatabase ${ISCDB}
六、登录数据库
sqlplus / as sysdba
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
总结
以上就是今天要讲的内容,本文仅仅简单介绍了19c的静默安装方法。