最近在centos7主机上部署了Oracle19c单机版,特此记录!
操作系统准备
挂载iso镜像
mount /dev/cdrom /mnt

配置yum源
cd /etc/yum.repos.d/
mkdir old
mv *.repo old/
cat >>/etc/yum.repos.d/local.repo<<EOF
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
enabled=1
EOF
yum repolist all
安装依赖包
yum install -y bc \ binutils \ compat-libcap1 \ compat-libstdc++-33 \ elfutils-libelf \ elfutils-libelf-devel \ fontconfig-devel \ glibc \ glibc-devel \ ksh \ libaio \ libaio-devel \ libXrender \ libXrender-devel \ libX11 \ libXau \ libXi \ libXtst \ libgcc \ libstdc++ \ libstdc++-devel \ libxcb \ make \ policycoreutils \ policycoreutils-python \ smartmontools \ sysstat \ unzip \ psmisc \ xorg-x11-xauth \ net-tools \ nfs-utils \ gcc \ gcc-c++
系统安装盘里面没有compat-libstdc++-33包,需要提前下载并安装:
rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
检查依赖包安装情况
rpm -q bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libXrender-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel libxcb make policycoreutils policycoreutils-python smartmontools sysstat unzip psmisc xorg-x11-xauth net-tools nfs-utils gcc gcc-c++ | grep "not installed"
检查依赖包安装情况
rpm -q bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libXrender-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel libxcb make policycoreutils policycoreutils-python smartmontools sysstat unzip psmisc xorg-x11-xauth net-tools nfs-utils gcc gcc-c++ | grep "not installed"
/etc/hosts配置
cat >>/etc/hosts<<EOF
#Public IP
192.*.*.64 node3
检查目录大小
df -h

检查内存和SWAP大小
free -h

关闭透明大页和numa(node1 & node2)
1、查看透明大页是否关闭(always 表示启用,never 表示禁用):
cat /sys/kernel/mm/transparent_hugepage/enabled
2、修改 grub 配置文件添加"transparent_hugepage=never numa=off":
vi /etc/default/grub
在GRUB_CMDLINE_LINUX…行最后添加transparent_hugepage=never
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet transparent_hugepage=never numa=off"
GRUB_DISABLE_RECOVERY="true"
3、重新生成grub文件
当节点使用UEFI安装和启动时,使用如下命令:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
当节点使用传统BIOS安装和启动时,使用如下命令:
# grub2-mkconfig -o /boot/grub2/grub.cfg
4、重启节点生效,重启后检查透明大页和numa是否生效,使用如下命令:
cat /sys/kernel/mm/transparent_hugepage/enabled
lscpu | grep -i numa
sysctl -a | grep numa
kernel.numa_balancing = 0
关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
getenforce
检查 OS 时区
timedatectl status
# 如果时区不正确,使用下面命令修改:
# timedatectl set-timezone "Asia/Shanghai"
系统参数配置
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 >>/etc/sysctl.conf<<EOF
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
net.ipv4.conf.ens33.rp_filter = 1
net.ipv4.conf.ens36.rp_filter = 2
EOF
注意:ens33和ens36要根据实际环境替换。
参数生效:
sysctl -p
系统资源限制配置
配置limits.conf:
cat >>/etc/security/limits.conf<<EOF
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
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
grid soft nproc 2047
grid hard nproc 16384
EOF
配置pam.d/login:
cat >>/etc/pam.d/login <<EOF
session required pam_limits.so
session required /lib64/security/pam_limits.so
EOF
用户及组、目录创建
创建安装 Oracle 数据库所需的用户、组以及安装目录。
创建组:
/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 54327 asmdba /usr/sbin/groupadd -g 54328 asmoper /usr/sbin/groupadd -g 54329 asmadmin /usr/sbin/groupadd -g 54330 racdba
创建用户:
/usr/sbin/useradd -u 11012 -g oinstall -G asmadmin,asmdba,asmoper,dba,racdba,oper grid
/usr/sbin/useradd -u 54321 -g oinstall -G asmdba,dba,backupdba,dgdba,kmdba,racdba,oper oracle
##修改用户密码为oracle
echo "******" |passwd oracle --stdin
echo "******" |passwd grid --stdin
##查看用户组
id grid
id oracle
##重载udev
udevadm control --reload-rules
udevadm trigger --type=devices
ll /dev/asm*
ll /dev/dm*

可以看到,绑盘权限已经变成 grid 了!
创建软件目录:
mkdir -p /data/app/19.3.0/grid mkdir -p /data/app/grid mkdir -p /data/app/oracle/product/19.3.0/db mkdir -p /data/app/oraInventory mkdir -p /backup mkdir -p /home/oracle/scripts chown -R oracle:oinstall /backup chown -R oracle:oinstall /home/oracle/scripts chown -R grid:oinstall /data chown -R grid:oinstall /data/app/grid chown -R grid:oinstall /data/app/19.3.0/grid chown -R grid:oinstall /data/app/oraInventory chown -R oracle:oinstall /data/app/oracle chmod -R 775 /data
cvuqdisk安装
cd /data/app/19.3.0/grid/cv/rpm
rpm -ivh cvuqdisk-1.0.10-1.rpm
UDEV绑定磁盘
[root@node3 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 20G 0 part /boot
└─sda2 8:2 0 385G 0 part
├─centos_node1-root 253:0 0 120G 0 lvm /
├─centos_node1-swap 253:1 0 20G 0 lvm [SWAP]
├─centos_node1-data 253:2 0 300G 0 lvm /data
├─centos_node1-opt 253:3 0 20G 0 lvm /opt
├─centos_node1-var 253:4 0 10G 0 lvm /var
├─centos_node1-tmp 253:5 0 10G 0 lvm /tmp
└─centos_node1-home 253:6 0 5G 0 lvm /home
sdb 8:16 0 100G 0 disk
└─centos_node1-root 253:0 0 120G 0 lvm /
sdc 8:32 0 20G 0 disk ##############这块磁盘用于存放数据
sr0 11:0 1 4.4G 0 rom
#不使用多路径
for i in c ;
do
echo "KERNEL==\"sd$i\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d /dev/\$name\", RESULT==\"`/usr/lib/udev/scsi_id -g -u -d /dev/sd\$i`\", SYMLINK+=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done
[root@node3 ~]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sdc", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c29f45384e253ca28b7ede649a0f", SYMLINK+="asm-diskc", OWNER="grid", GROUP="asmadmin", MODE="0660"
[root@node3 ~]# udevadm control --reload-rules
[root@node3 ~]# udevadm trigger
[root@node3 ~]#
[root@node3 ~]# ll /dev/asm* /dev/sdc
lrwxrwxrwx 1 root root 3 May 13 17:13 /dev/asm-diskc -> sdc
brw-rw---- 1 grid asmadmin 8, 32 May 13 17:13 /dev/sdc
[root@node3 ~]#
[root@node3 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 20G 0 part /boot
└─sda2 8:2 0 385G 0 part
├─centos_node1-root 253:0 0 120G 0 lvm /
├─centos_node1-swap 253:1 0 20G 0 lvm [SWAP]
├─centos_node1-data 253:2 0 300G 0 lvm /data
├─centos_node1-opt 253:3 0 20G 0 lvm /opt
├─centos_node1-var 253:4 0 10G 0 lvm /var
├─centos_node1-tmp 253:5 0 10G 0 lvm /tmp
└─centos_node1-home 253:6 0 5G 0 lvm /home
sdb 8:16 0 100G 0 disk
└─centos_node1-root 253:0 0 120G 0 lvm /
sdc 8:32 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom
[root@node3 ~]#
参考文章:
https://www.cnblogs.com/wfkfytmy/p/16216400.html
在做配置的时候,发现第二个节点配置时需要读取一下磁盘的分区信息才能成功绑定
https://blog.csdn.net/congsong2560/article/details/100422666
https://www.xifenfei.com/2016/08/linux-7-udev.html
grid用户环境变量:
cat >>/home/grid/.bash_profile<<EOF
umask 022
export TMP=/tmp
export TMPDIR=\$TMP
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE=/data/app/grid
export ORACLE_HOME=/data/app/19.3.0/grid
export ORACLE_TERM=xterm
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=+ASM
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
alias sas='sqlplus / as sysasm'
export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]\$ '
EOF
oracle用户环境变量
cat >>/home/oracle/.bash_profile<<EOF
umask 022
export TMP=/tmp
export TMPDIR=\$TMP
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/19.3.0/db
export ORACLE_HOSTNAME=node3
export ORACLE_TERM=xterm
#export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=orcl
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
alias sas='sqlplus / as sysdba'
export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]\$ '
EOF
安装grid软件+RU
su - grid
#检查opatch版本
opatch version
export DISPLAY=192.*.*.15:0.0 #这个根据本地实际情况进行配置
cd $ORACLE_HOME
./gridSetup.sh -applyRU /soft/37257886
选择Configure Oracle Grid Infrastructure for a Standalone Server(Oracle Restart)

创建asm磁盘组:选择绑定的asm磁盘

指定ASM密码

指定管理选项:不使用EM


自动选择ORACLE BASE目录

自动选择inventory目录

不自动运行配置脚本

预安装检查

安装产品

另外开窗口,使用root用户执行两个脚本:

netca失败

经查日志,实际上监听已经启动了,忽略!

创建磁盘组
asmca


安装数据库软件+RU
chown -R oracle:oinstall /soft
#root用户下切换到oracle用户
su - oracle
export DISPLAY=192.*.*.15:0.0
#进入ORACLE_HOME目录
cd $ORACLE_HOME
#检查opatch版本
opatch version
##执行安装程序开始安装
./runInstaller -applyRU /soft/37257886/










建库
dbca












至此,数据库安装完毕!
关于作者:
网名:飞天,墨天轮2024年度优秀原创作者,拥有 Oracle 10g OCM 认证、PGCE认证、MySQL 8.0 OCP认证以及OBCA、KCP、KCSM、ACP、磐维等众多国产数据库认证证书,目前从事Oracle、Mysql、PostgresSQL、磐维数据库管理运维工作,喜欢结交更多志同道合的朋友,热衷于研究、分享数据库技术。
微信公众号:飞天online
墨天轮:https://www.modb.pro/u/15197
如有任何疑问,欢迎大家留言,共同探讨~~~
最后修改时间:2025-06-26 14:46:03
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




