一、安装前对操作系统的配置
(1)硬件需求
1),内存大小:最低1G,推荐大于等于2G
确定系统内存的大小:
grep MemTotal /proc/meminfo
确定交换空间的大小:
grep SwapTotal /proc/meminfo
注意:配置交换空间的大小与内存有一定的关系,当内存的大小在1G和2G之间,推荐配置swap的大小为内存的1.5倍;当内存的大小在2G和16G之间,推荐配置swap的大小与内存相等;当内存的大小超过16G时,推荐配置swap=16G。需要注意的是,在linux中,大页特性会使用内存映射文件为大页表分配不可以交换内存,所以在启用大页的情况下,在计算swap大小之前,可用内存总量中应先减去为大页分配的内存,然后据此来配置swap大小。
确定可用的内存和swap空间大小:
free -h
共享内存:自oracle11g开始,自动内存管理(Automatic Memory Management)的特性需要更多的共享内存(/dev/shm)和文件描述符,
共享内存的大小>=max(MEMORY_TARGET,MEMORY_MAX_TARGET),如果这两个参数或这其中一个设置了非零值,并且共享内存的大小分配不正确,会导致在数据库启动时报ORA-00845错误。
注意:当LOCK_SGA参数启用或者linux启用了HugePapes,上述两个参数不能被使用。
每个数据库实例的文件描述符个数>=512*PROCESSES,如果文件描述符大小不正确,会报ORA-27123错误。
确定可用的共享内存的大小:
df -h /dev/shm
如果你比较倒霉,遇到了ORA-00845错误,不妨增加/dev/shm挂载点的大小:
mount -t tmpfs shmfs -o size=7g /dev/shm
# 如果需要永久保留上述改变,可以在/etc/fstab文件中增加如下条目
shmfs /dev/shm tmpfs size=7g 0 0
2),确定系统架构
uname -a
3),磁盘空间需求
/tmp目录大小至少1G,确定/tmp目录可用空间量:
df -h /tmp
确定系统上的空闲磁盘空间量:
df -h
在linux x86-64的系统上,对于企业版安装,软件文件需要的磁盘空间量为4.7G,数据文件需要的磁盘空间量为1.7G(总计6.4G);对于标准版安装,软件文件需要的磁盘空间量为4.6G,数据文件需要的磁盘空间量为1.5G(6.1G);如果在安装时配置了自动备份,那么需要在文件系统或者Oracle ASM(Automatic Storage Management)磁盘组中为快速恢复区域(fast recovery area)提供额外的磁盘空间。
(2)检查软件需求
1),确定已安装的linux的发行版和内核版本
cat /proc/version
2),内核要求
对于linux x86-64架构,红帽linux7的内核版本不低于3.10.0-54.0.1.el7.x86_64,确定已安装的内核版本是不是所需要的:
uname -r
3),软件包要求
在linux x86-64 红帽linux7操作系统上安装Oracle 11g Release 2之前需要安装下述软件包:
yum install -y binutils compat-libcap1 compat-libstdc++ compat-libstdc++ gcc gcc-c++ glibc glibc glibc-devel glibc-devel ksh libaio libaio libaio-devel libaio-devel libgcc libgcc libstdc++ libstdc++ libstdc++-devel libstdc++-devel libXi libXi libXtst libXtst make sysstat
4),安装时生成修复脚本
脚本名:runfixup.sh,执行该脚本检查内核参数,并将其设置为成功安装oracle所需的值,包括:共享内存参数,打开的文件描述符个数,以及UDP发送和接收相关参数。
5),验证TCP和UDP内核参数
设置TCP/IP临时端口范围参数,为预期的服务器工作负载提供足够的临时端口,设置临时端口范围,较低边界值应该不低于9000,使用IPV4,查看临时端口的范围:
cat /proc/sys/net/ipv4/ip_local_port_range
// 如果不满足,可以像下面这样设置临时端口的范围
echo 9000 65500 > /proc/sys/net/ipv4/ip_local_port_range
//不过oracle推荐你永久设置该项:
vim /etc/sysctl.conf
net.ipv4.ip_local_port_range= 9000 65500
//然后重启网络服务
/etc/rc.d/init.d/network restart
systemctl restart network
6),配置主机解析文件/etc/hosts
vim /etc/hosts
10.0.0.80 oracle1
7),禁用透明大页
从红帽linux6开始,透明大页在系统运行时就已经启用,透明大页可能会导致内存分配延迟,因为内存是动态分配得,因此,建议你禁用透明大页以避免带来得性能问题。
虽然透明大页与HugePages类似,但它们是由内核中的khugepage线程在运行时动态设置的,而标准的HugePages是在启动时预先分配的,因此建议你使用标准大页来增强性能:
// 临时关闭,重启之后还是启用
echo never > /sys/kernel/mm/transparent_hugepage/enabled
//永久关闭,在内核引导行上最后添加如下条目/etc/grub2.cfg(centos7.6)
vim /etc/grub2.cfg
linux16 /vmlinuz-3.10.0-957.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rhgb quiet LANG=en_US.UTF-8 transparent_hugepage=never
initrd16 /initramfs-3.10.0-957.el7.x86_64.img
//重启系统,使更改永久生效
8),创建需要的操作系统用户和用户组
groupadd oinstall # 创建oracle安装目录组:
groupadd -g 502 dba # 为Oracle数据库安装创建OSDBA用户组:该组标识具有数据库管理权限(SYSDBA权限)的操作系统用户帐户。
groupadd -g 503 oper # 为Oracle数据库安装创建OSOPER用户组:标识一组具有有限数据库管理权限(SYSOPER操作员权限)的操作系统用户
groupadd -g 504 asmadmin # 为Oracle自动存储管理(ASM)创建OSASM用户组
groupadd -g 506 asmdba # 为oracle自动存储管理创建ASMDBA用户组
groupadd -g 505 asmoper # 为oracle自动存储管理创建OSOPER用户组
useradd -u 502 -g oinstall -G dba,asmdba oracle # 创建oracle软件属主用户
echo oracle123 | passwd --stdin oracle
9),检查oracle软件安装用户的资源限制情况
相关资源限制范围推荐如下:
打开的文件描述符个数(nofile):软限制至少1024,硬限制至少65536
用户可用的进程数(nproc):软限制至少2047,硬限制至少16384
进程的堆栈段大小(stack):软限制至少10240KB,硬限制10240KB,至多32768KB
以安装用户登录(这里为oracle),确定相关资源限制在推荐的范围内:
# 查看当前用户打开文件描述符的软限制和硬限制
ulimit -Sn
ulimit -Hn
# 查看当前用户可用进程数的软硬限制
ulimit -Su
ulimit -Hu
# 查看栈段大小的软硬限制
ulimit -Ss
ulimit -Hs
# 上述步骤需要在每一个Oracle软件安装用户下执行检查
# 如果设置的值没在推荐的范围之内,那么可以通过root用户在/etc/security/limits.conf文件中添加如下条目:
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 10240
10),配置linux内核参数
在安装Oracle数据库过程中,您可以生成并运行修复脚本,检查并设置数据库成功安装所需的内核参数值。如果不适用修复脚本,可以手动设置相关参数:
vim /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
# shmmax参数,最小值为512MB(536870912),对于32为的linux系统,可以设置的最大值为
# 4G-1byte;对于64为的linux系统,最大值可以设置为比物理内存少一个字节。推荐该参数
# 设置的值大于物理内存的一半,例如4G的物理内存设置为(2.5G=2684354560B)
kernel.shmmax = 2684354560
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
# 保存退出,然后执行如下命令使内核参数修改生效(或者重启系统)
sysctl -p
11),创建oracle软件需要的目录
#创建oracle根目录(推荐格式:/mount_point/app/software_owner)
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle
chmod -R 755 /u01/app/oracle
# 创建数据库文件目录
mkdir /u01/app/oracle/oradata
chown oracle.oinstall /u01/app/oracle/oradata
chmod 755 /u01/app/oracle/oradata
# 创建恢复文件目录(快速恢复区域)
mkdir /u01/app/oracle/fast_recovery_area
chown oracle.oinstall /u01/app/oracle/fast_recovery_area
chmod 755 /u01/app/oracle/fast_recovery_area
# 创建oracle Inventory目录,推荐该目录不要放在oracle根目录下。
mkdir /u01/app/oraInventory
chown oracle.oinstall /u01/app/oraInventory
oracle家目录的创建不是必要的,强烈推荐oracle家目录为oracle根目录下的一个子目录
oracle数据库文件包括数据文件,控制文件,redo日志文件和服务器参数文件。
12),配置Oracle软件所有者环境变量
su - oracle
# 确定oracle用户的默认shell
echo $SHELL
vim .bash_profile
umask 022
#如果不是在本地计算机上安装软件,请在远程计算机上运行以下命令设置DISPLAY变量
export DISPLAY=10.0.0.1:0.0
source .bash_profile
# 允许执行安装的远程主机可以访问本地的X服务器,宿主机的名称为WIN-2PUUADA00J7
xhost + WIN-2PUUADA00J7
# 要验证X应用程序显示是否设置正确,请运行操作系统(如xclock)附带的基于x11的程序。
yum provides xclock
yum isntall -y xorg-x11-apps
xclock
#如果正确设置了DISPLAY环境变量,那么您可以在计算机屏幕上看到xclock
二、安装oracle数据库
(1)选择数据库字符集
推荐使用Unicode AL32UTF8作为数据库的字符集,是一种多字节的字符集,与单字节的数据库字符集相比,对于字符数据的数据库操作可能稍慢些。与支持该语言的传统字符集相比,AL32UTF8对大多数语言中使用ASCII表以外字符的文本的存储空间要求更高。存储空间的增加只涉及字符数据和非英语数据。Unicode的通用性和灵活性通常超过了这些额外的成本。
(2)下载安装包,并解压
mkdir /OraDB11g
cd /OraDB11g
unzip V17530-01_1of2.zip
unzip V17530-01_2of2.zip
# 解压后会在当前目录下生成一个名为database的子目录
(3)运行oracle通用安装程序
su - oracle
cd /OraDB11g/database/
./runInstaller
执行完之后,会先检查temp空间和swap空间大小以及monitor,然后会打开一个oracle数据库安装的图形引导界面。
在数据库安装过程中,当Oracle Universal Installer提示您使用root权限运行脚本时,请在以root用户登录的终端中执行脚本,然后单击“确定”。
1)配置安全更新
这一步可以不做,点击Next;会弹出一个错误框,点击Yes:
2)选择安装选项
选择“Create and cinfigure a database”(该选项会创建一个拥有示例模式的新数据库),然后点击Next:
3)选择安装数据库的系统类型
按需选择,这里悬着Server Class(该选项提供了更多高级的配置选项,使用该选项可用的高级配置选项包括Oracle RAC、Oracle ASM、备份和恢复配置、与Oracle Enterprise Manager Grid Control的集成,以及更细粒度的内存调优等),然后点击Next:
4)Grid选项
选择想要执行的数据库安装类型,这里选择Single instance database installation该选项会安装数据库和监听器),然后点击Next:
5)选择安装类型
选择高级安装,点击Next:
6)选择语言
选择English,点击Next:
7)选择数据库版本
选择standard edition,点击Next:
8)指定安装路径
需要指定oracle base(oracle软件安装的顶级目录)和software location(存储oracle软件文件)保持默认,点击Next:
9)创建oracle Inventory:
该步中需要指定Inventory目录(存放安装文件),并指定具有该目录写权限的操作系统用户组,保持默认,点击Next:
10)选择配置类型:
选择General Purpose,然后点击Next:
11)指定数据库标识符
需要指定global database name (支持字母数字、下划线、$、#的组合)和Oracle service identifier(SID)(只能是字母数字),这里保持默认,点击Next:
12)指定配置选项:
内存:勾选启用自动内存管理,保持默认值
字符集:AL32UTF8
安全:勾选“Assert all new security settings”,保持默认,该选项启用审计和使用新的密码文件
示例模式:勾选上,可以创建带有示例模式的初始数据库
然后点击Next:
13)指定管理选项
配置如下所示,点击Next:
14)指定数据库存储选项
选择文件系统,并指定路径,保持默认,点击Next:
15)指定恢复选项
选择“Enable automated backups”,启用自动备份,并指定执行备份任务的操作系统用户认证信息,点击Next:
16)指定模式(账户)密码
选择“use the same password for all accounts”,然后输入密码,并确认密码(当输入的密码太简单会弹出一个警告框,不管他,点击Yes),点击Next:
17)授权操作系统用户组
需指定OSDBA组和OSPER组,保持默认,点击Next:
18)执行先决条件检查
如下所示:
点击Fix&Check Again:
提示我们安装程序已经生成一个修复脚本,请以root用户执行,执行之后返回该窗口点击OK,还是一样的,所以我们选择Ignore All(需要的包都是安装了的,只是版本不一样而已,交换空间给小了,我们可以通过如下方式增加swap大小:
dd if=/dev/zero of=swapfile bs=1M count=2048
mkswap swapfile
swapon swapfile
),点击Next:
19)总结
可以保存一下响应文件,然后点击finish:
20)安装产品:
期间也是出现了两三个错误,直接跳过了,最后以root用户执行如下脚本:
[root@oracle1 /u01/app/oraInventory]$ sh orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@oracle1 /u01/app/oracle/product/11.2.0/dbhome_1]$ sh root.sh
Running Oracle 11g root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/11.2.0/dbhome_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
21)finish
点击close。
到此Oracle 11g数据库的单实例安装部署到此结束。




