在Oracle Linux 7 上安装Oracle 19c - 基于ASM存储的单实例数据库
前言
记录Oracle学习过程,形成自己的知识体系。目前有部分操作还不清楚具体原理,后期随着学习的深入,逐渐完善本文档。
环境
系统:Oracle Linux 7.9 (CentOS 7 供参考)
硬盘:根目录建议40G+
环境准备阶段
配置主机名、网络等
- 配置主机名
- 方式一:临时设置主机名(立竿见影),用logout命令登出并重新登录即可生效。但不是永久生效。
#hostname oracle19c-asm - 方式二:永久设置主机名(需要重启)
先找到一个文件/etc/sysconfig/network 【主机名的配置文件】
添加/修改 HOSTNAME=oracle19c-asm 设置永久主机名 - 方式三:使用 hostnamectl 来改变主机名(推荐)
设置命令格式: hostnamectl set-hostname oracle19c-asm
该方式设置后,会自动将设置信息写入到配置文件中,无需额外编辑,属于立即生效,永久生效的,重启也会生效。
- 配置hosts文件
[root@oracle19c-asm ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
oracle19c-asm 192.168.23.133 # 新增该行
- 关闭防火墙和SELINUX
- 关闭防火墙
[root@oracle19c-asm ~]# systemctl status firewalld.service # 检查防火墙状态
[root@oracle19c-asm ~]# systemctl stop firewalld.service # 暂时关闭防火墙,下次启动时防火墙仍随系统启动而启动
[root@oracle19c-asm ~]# systemctl disable firewalld.service # 彻底永久关闭防火墙
- 关闭SELINUX防火墙
[root@oracle19c-asm ~]# getenforce # 检查selinux状态
[root@oracle19c-asm ~]# setenforce 0 # 暂时关闭selinux,下次启动时selinux仍随系统启动而启动
[root@oracle19c-asm ~]# vim /etc/selinux/config
#SELINUX=enforcing改为SELINUX=disabled 彻底永久关闭防火墙
SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。
安装ORACLE先决条件的软件包
yum install -y deltarpm
yum install -y python-deltarpm
yum install -y bc
yum install -y compat-libcap1*
yum install -y compat-libcap*
yum install -y binutils
yum install -y compat-libstdc++-33
yum install -y elfutils-libelf
yum install -y elfutils-libelf-devel
yum install -y gcc
yum install -y gcc-c++
yum install -y glibc-2.5
yum install -y glibc-common
yum install -y glibc-devel
yum install -y glibc-headers
yum install -y ksh libaio
yum install -y libaio-devel
yum install -y libgcc
yum install -y libstdc++
yum install -y libstdc++-devel
yum install -y make
yum install -y sysstat
yum install -y unixODBC
yum install -y unixODBC-devel
yum install -y binutils*
yum install -y compat-libstdc*
yum install -y elfutils-libelf*
yum install -y gcc*
yum install -y glibc*
yum install -y ksh*
yum install -y libaio*
yum install -y libgcc*
yum install -y libstdc*
yum install -y make*
yum install -y sysstat*
yum install -y libXp*
yum install -y glibc-kernheaders
yum install -y net-tools-*
yum install -y compat-libstdc*
yum install -y kmod
yum install -y kmod-libs
yum install -y cvuqdisk
在Oracle Linux 7.9 环境下,不用修改yum源,可以直接安装成功。如若为CentOS可能会提示某些软件包找不到,建议更换源再试试,不行的话直接百度下载rpm包进行安装。
可以参考我的另一篇文章在Oracle Linux 7上采用RPM方式安装Oracle19c可以尝试使用安装Oracle的预安装包“oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm”
- 下载RPM预安装包
- 上传至服务器
- 执行安装命令 yum install oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm
通过该方法,可以最便捷的方式安装绝大多数重要的软件包
修改系统参数
- 修改LINUX内核文件
[root@oracle19c-asm ~]# vim /etc/sysctl.conf
kernel.shmmax = 277495689510912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
fs.file-max = 6815744
kernel.shmall = 67747971072
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1
#net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_probes = 6
net.ipv4.tcp_keepalive_intvl = 5
net.ipv4.tcp_timestamps = 0
fs.aio-max-nr = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
参数 | 说明 |
---|---|
fs.file-max | 文件句柄数 一次可以打开文件的个数 |
kernel.shmall | 公式:内存大小102410241024/41024 |
kernel.shmmax | 表示最大共享内存大小,一般为物理内存的3/4 但是常用的就是将所有内存换算成字节后-1(单位:字节) |
kernel.shmmni = 4096 | 表示最小共享内存固定4096KB 一般是固定值 |
kernel.sem | 4个参数依次是SEMMSL:每个用户拥有信号量最大数,SEMMNS:系统信号量最大数,SEMOPM:每次semopm系统调用操作数,SEMMNI:系统辛苦量集数最大数。这4个参数为固定内容大小 |
net.ipv4.ip_local_port_range = 9000 65500 | ip_local_port_range表示端口的范围,为指定的内容 一般是固定值 |
net.core.rmem_default | 表示套接字接收缓冲区大小的缺省值 |
net.core.rmem_max | 表示套接字接收缓冲区大小的最大值。 |
net.core.wmem_default | 表示套接字发送缓冲区大小的缺省值。 |
net.core.wmem_max | 表示套接字发送缓冲区大小的最大值。 |
参数编辑完成后执行下面的命令 sysctl -p 生成系统参数
[root@oracle19c-asm ~]# sysctl -p
- 修改limits.conf文件
[root@oracle19c-asm ~]# vim /etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 16384
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
grid hard memlock 134217728
grid soft memlock 134217728
- 限制进程数
添加下列条目到/etc/pam.d/login 这两个主要是限制使用进程数可以不用了解
[root@oracle19c-asm ~]# vim /etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so
- 修改环境变量
[root@oracle19c-asm ~]# vim /etc/profile
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
刷新环境变量
[root@oracle19c-asm ~]# source /etc/profile
- 创建用户和组
[root@oracle19c-asm ~]# groupadd -g 601 oinstall
[root@oracle19c-asm ~]# groupadd -g 602 dba
[root@oracle19c-asm ~]# groupadd -g 603 oper
[root@oracle19c-asm ~]# groupadd -g 604 backupdba
[root@oracle19c-asm ~]# groupadd -g 605 dgdba
[root@oracle19c-asm ~]# groupadd -g 606 kmdba
[root@oracle19c-asm ~]# groupadd -g 607 asmdba
[root@oracle19c-asm ~]# groupadd -g 608 asmoper
[root@oracle19c-asm ~]# groupadd -g 609 asmadmin
[root@oracle19c-asm ~]# useradd -u 601 -g oinstall -G [root@oracle19c-asm ~]# asmadmin,asmdba,dba,asmoper grid
[root@oracle19c-asm ~]# useradd -u 602 -g oinstall -G dba,backupdba,dgdba,kmdba,asmadmin,oper,asmdba oracle
- 为用户设置密码
[root@oracle19c-asm ~]# passwd grid
[root@oracle19c-asm ~]# passwd oracle
- 创建Oracle Inventory目录
[root@oracle19c-asm ~]# mkdir -p /u01/app/oraInventory
[root@oracle19c-asm ~]# chown -R grid:oinstall /u01/app/oraInventory
[root@oracle19c-asm ~]# chmod -R 775 /u01/app/oraInventory
- 创建GI HOME目录
[root@oracle19c-asm ~]# mkdir -p /u01/app/grid
[root@oracle19c-asm ~]# mkdir -p /u01/app/19.3.0/grid
[root@oracle19c-asm ~]# chown -R grid:oinstall /u01/app/grid
[root@oracle19c-asm ~]# chmod -R 775 /u01/app/grid
[root@oracle19c-asm ~]# chown -R grid:oinstall /u01/app/19.3.0
[root@oracle19c-asm ~]# chmod -