这个教程想写很久了,而且Oracle让人头疼的地方比较多,因此,在此篇能够十分详细的记录一下!便于自己以后查阅。
绝对是最详细的,适合毫无经验的人查看!
安装这个内容比较多就分成几篇来描写。
第二部分链接如下:
《centos 7.6 安装Oracle 11g r2之二-oracle软件安装》
前期准备工作
1、准备文件
安装是在vm虚拟机上安装的centos7.6 1908版本。系统采用的最小安装,没有图形化!本地可联网。
Oracle11gr2 下载页面:
https://www.oracle.com/database/technologies/112010-linx8664soft.html
linux.x64_11gR2_database_1of2.zip (1,239,269,270 bytes) (cksum - 3152418844)
linux.x64_11gR2_database_2of2.zip (1,111,416,131 bytes) (cksum - 3669256139)
需要登录,没有的注册一个Oracle账户就可以了。
2、硬件条件
2.1、centos7上面硬件
内存2G 硬盘40G CPU4核。
2.2、Oracle11g硬件安装条件
2.2.1、内存
最小1G
2.2.2、swap
swap 分区通常被称为交换分区,这是一块特殊的硬盘空间,即当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。
也就是说,当内存不够用时,我们使用 swap 分区来临时顶替。这种“拆东墙,补西墙”的方式应用于几乎所有的操作系统中。
RAW | Swap |
---|---|
1G至2G | 1.5倍 |
2G至16G | 同RAW相等 |
16G以上 | 16G |
要是想查看你记得系统能否匹配,可以使用下面命令:
grep MemTotal /proc/meminfo #查看内存
grep SwapTotal /proc/meminfo #查看swap
free #查看内存及swap 还有利用率
从上面看,我的系统内存2G swap就需要3G,因此需要调整一下。
为了不麻烦我们此次添加2G空间
2.2.2.1、查看内存以及交换空间
free -h
2.2.2.2、创建2G大小的文件
dd if=/dev/zero of=/var/swapfile bs=1G count=2
- if(即输入文件,input file),dev/zero 是Linux的一种特殊字符输入设备,用来创建一个指定长度用于初始化的空文件。
- of(即输出文件,output file)。 /data/swapfile 是 swap 文件地址。
- bs=1024 :单位数据块同时读写块字节大小为1024个字节即。
- count=2 :数据块数量为2*1024。
- 计算出swap分区的容量为:1KB21024=2G。
2.2.2.3、设置为swap虚拟交换文件
转换为swap分区
mkswap /var/swapfile
2.2.2.4、激活并使用此交换文件
挂载并激活分区
swapon /var/swapfile
2.2.2.5、设置权限为root可操作
chmod -R 0600 /var/swapfile
2.2.2.6、设置系统启动自动激活虚拟交换文件
vim /etc/fstab
/var/swapfile swap swap defaults 0 0 #手动添加
2.2.2.7、再次查看
2.2.3、硬盘要求
这个硬盘基本可以忽略了,目前,实际使用硬盘基本都是1T开始了,我就是测试用了40G也是够用的!
数据库软件硬盘
版本 | 空间 |
---|---|
企业版 | 3.95G |
标准版 | 3.88G |
数据文件要求
版本 | 空间 |
---|---|
企业版 | 1.7G |
标准版 | 1.5G |
3、配置centos7 环境
3.1、更新系统
yum -y update #更新centos系统
3.2、修改设备名称,应经习惯了部署啥,就叫啥名字!
hostnamectl set-hostname oracle #oracle是我修改的名称
!
需要重启生效
还有:
vim /etc/hosts
添加
127.0.0.1 Oracle
::1 Oracle
修改网络主机名
3.3、修改时区,这个一般在安装的时候就要设置好!
timedatectl #查看时区
查看时区
如果,不对的话可以使用下面命令更改过来。
timedatectl set-timezone Asia/Shanghai #设置系统时区为上海
3.4、关闭防火墙
systemctl disable firewalld.service #禁止firewall开机启动
关闭防火墙
firewall-cmd --state #查看默认防火墙状态,关闭后显示not running,开启后显示running
3.5、关闭selinux
这个常会引起一些麻烦,当出现问题你不知道怎么解决的话,都可以试着关闭它。
vi /etc/selinux/config #将SELINUX=enforcing改为SELINUX=disabled 设置后需要重启才能生效
关闭selinux
getenforce #检测selinux是否关闭,Disabled 为关闭
4、安装Oracle依赖
注意:从Oracle 11g 11.2.0.2版本开始,在Linux x86_64上安装时,只需要安装64位的软件包,但是,对于11.2.0.2之前的任何Oracle database 11g,下表中列出的32位和64位的安装包都必须安装
需要安装的依赖包(版本号只能大于规定的版本,不能小于)
binutils-2.27-41.base.el7_7.1.x86_64
compat-libcap1-1.10-7.el7.x86_64
compat-libstdc++-33-3.2.3-72.el7.x86_64
compat-libstdc++-33-3.2.3-72.el7.i686
gcc-4.8.5-39.el7.x86_64
gcc-c++-4.8.5-39.el7.x86_64
glibc-2.17-292.el7.x86_64
glibc-2.17-292.el7.i686
glibc-devel-2.17-292.el7.x86_64
glibc-devel-2.17-292.el7.i686
ksh-20120801-139.el7.x86_64
libaio-0.3.109-13.el7.x86_64
libaio-0.3.109-13.el7.i686
libaio-devel-0.3.109-13.el7.x86_64
libaio-devel-0.3.109-13.el7.i686
libgcc-4.8.5-39.el7.x86_64
libgcc-4.8.5-39.el7.i686
libstdc++-4.8.5-39.el7.x86_64
libstdc++-4.8.5-39.el7.i686
libstdc++-devel-4.8.5-39.el7.x86_64
libstdc++-devel-4.8.5-39.el7.i686
libXi-1.7.9-1.el7.x86_64
libXi-1.7.9-1.el7.i686
libXtst-1.2.3-1.el7.x86_64
libXtst-1.2.3-1.el7.i686
make-3.82-24.el7.x86_64
sysstat-10.1.5-18.el7.x86_64
unixODBC-2.3.1-14.el7.x86_64
unixODBC-2.3.1-14.el7.i686
unixODBC-devel-2.3.1-14.el7.x86_64
unixODBC-devel-2.3.1-14.el7.i686
安装命令
yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686
检查安装命令
rpm -q 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 | grep "not installed"
5、建立Oracle用户
安装Oracle数据库,则需要以下本地操作系统组和用户:
- Oracle inventory组(通常为 oinstall)
- OSDBA组 (通常为 dba)
- OSOPER组 (通常为 oper)
- Oracle软件所有者(通常为 oracle)
添加命令:
#创建用户组oinstall、dba、oper。
[root@oracle ~]# groupadd oinstall
[root@oracle ~]# groupadd dba
[root@oracle ~]# groupadd oper
#将用户Oracle 添加到oinstall、dba组里面。
[root@oracle ~]#usermod -g oinstall -G dba -d /home/Oracle Oracle
#给Oracle用户添加密码
[root@oracle ~]# passwd oracle
更改用户 oracle 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符 #输入密码不符合密码策略,确认后依然可以通过
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
#查看Oracle添加结果
[root@oracle ~]# id oracle
uid=1002(oracle) gid=1000(oinstall) 组=1000(oinstall),1001(dba)
6、修改系统内核参数和资源限制
6.1、在/etc/sysctl.conf添加参数
如果系统中某个参数高于下面的参数的值 ,保留较大的值,下面的数值只是官方要求的最小值,可以根据系统调整数值,以优化系统性能
打开配置文件
vim /etc/sysctl.conf
文件打开里面是没有任何参数的,需要把下面的直接添加进入。
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
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
6.1.1、sysctl.conf参数注释
fs.aio-max-nr
- 该参数表示最大并发异步I/O请求数量,当系统中存在非常高的I/O请求时,如果该参数配置过低,可能导致数据库报ORA-27090 - Unable to Reserve Kernel Resources for Asynchronous Disk I/O错误,遇到该问题需将fs.aio-max-nr调整为Oracle建议值3145728。
fs.file-max
- 该参数表示系统级别最大可以打开文件句柄的数量,文件句柄代表系统中可以打开文件的数量。
kernel.shmall
- shmall表示共享内存总量,以页为单位, 而shmall默认为4294967296 已经足够大了,一般不需要调整,shmall不能低于SGA大小,若shmall低于SGA大小,实例启动时会报:ORA-27123: unable to attach to shared memory segment错误,且无法启动实例。
kernel.shmmax
- shmmax参数用来定义单个共享内存段的最大值,该值应该配置足够大,能够在一个共享内存段中容下整个的SGA ,如果配置过低可能导致需要创建多个共享内存段,这样可能会导致系统性能下降。
- 269838450688/1024/1024/1024=252GB。
- shmmax的单位为Byte(字节)。
kernel.shmmni
- 该参数为共享内存段的最大数量,缺省值为4096 ,一般情况下无需调整。
kernel.sem
- sem是semaphores的缩写,进程间通信--信号量,kernel.sem中4个参数分别对应SEMMSL SEMMNS SEMOPM SEMMNI
- SEMMSL: 每个信号集的最大信号数量 ,一般该参数配置为数据库中最大 PROCESS 参数的设置值加上 10,Oracle 建议 SEMMSL 不低于100。
- SEMMNS:控制整个系统中信号量的最大数量,使用以下计算公式来确定系统中需要配置的信号的最大数量,(SEMMSL * SEMMNI)=SEMMNS。4096*128=524288。
- SEMOPM: 该参数表示在一个 semop call中,每个信号量所允许的最大操作数量,一个信号集可以拥有每个信号集当中的最大数量SEMMSL 信号,建议 SEMOPM 等于SEMMSL 。 Oracle 建议SEMOPM的值不低于 100 。
- SEMMNI:该参数用于控制整个系统中信号集的最大数量。Oracle 建议SEMMNI 的值不低于 100 。
net.ipv4.ip_local_port_range
- 该参数配置向外连接端口范围,缺省为1024到4999。
net.core.rmem_*
- net.core.rmem_default默认数据接收窗口大小。
- net.core.rmem_max最大数据接收窗口大小。
- net.core.wmem_default默认数据发送窗口大小。
- net.core.wmem_max最大数据发送窗口大小。
- 单位均为字节。
保存以后,使用下面命令使其生效!
sysctl -p
6.2、在/etc/security/limits.conf中添加如下参数
之所以对oracle用户做资源的限制,其实主要是出于性能上的考虑,防止oracle用户过渡消耗有限资源,使其系统变得臃肿缓慢。
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240
注释:
- oracle:用户名
- soft和hard:其实有三种,有 soft,hard 和“-”,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比hard限制高。用“-”就表明同时设置了soft 和 hard 的值。
- nofile:打开文件的最大数目
- stack:最大栈大小
- noproc:进程的最大数目
6.3、在/etc/pam.d/login文件中,添加下面内容
session required /lib64/security/pam_limits.so
session required pam_limits.so
注释:
- 在/etc/pam.d/login 文件中添加session required /lib64/security/pam_limits.so一行内容来实现/etc/security/limits.conf中定义的各项限制。
注意路径:
- 32位系统 session required /lib/security/pam_limits.so
- 64位系统 session required /lib64/security/pam_limits.so
6.4、/etc/profile 文件中添加如下内容
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
使用/etc/profile文件生效
source /etc/profile
7.禁用使用Transparent HugePages
(启用Transparent HugePages,可能会导致造成内存在运行时的延迟分配,Oracle官方建议使用标准的HugePages)
查看是否启用 如果显示 [always]说明启用了
cat /sys/kernel/mm/transparent_hugepage/enabled
禁用Transparent HugePages,关闭方法有两种,一种为临时关闭,一种为永久关闭:
7.1、临时关闭
[root@oracle ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@oracle ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
7.2、永久关闭
vim /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
授予执行权限
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
重新启动系统以使更改成为永久更改
评论区