安装过程中遇到的问题:
1.创建oracle用户时,最好指定家目录,常规的为/opt/oracle,默认的/home/oracle也是可以的。
2.在"添加主机名与IP地址对应"一步中,一定要配置对IP,不然安装过程中会出现"Oracle Net Configuration Assisant failed"的错误
RHEL6.5安装部署Oracle 11g R2数据库
- 实验环境
虚拟机版本 |
VM12 pro |
操作系统 |
RedHat-6.5-x86_64 |
主机名 |
oracledb |
内存 |
4G官方建议最低1G |
硬盘 |
30G依据自己的实际需求及配置而定 |
Oracle数据文件 |
linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip |
- 系统调整步骤
步骤1-修改主机名
[[email protected] ~]# sed -i "s/HOSTNAME=xuegod64/HOSTNAME=oracledb/" /etc/sysconfig/network
[[email protected] ~]# hostname oracledb
[[email protected] ~]# cat /etc/sysconfig/network
步骤2-添加主机名与IP对应记录
[[email protected] ~]# vim /etc/hosts
[[email protected] ~]# more /etc/hosts
步骤3-安装依赖包
[[email protected] ~]# yum -y install gcc gcc-c++ make binutilscompat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-commonglibc-devel libaio libaio-devel libgcclibstdc++ libstdc++-devel unixODBC unixODBC-devel
步骤4-创建用户和组
[[email protected] ~]# groupadd -g 251 oinstall
[[email protected] ~]# groupadd -g 252 dba
[[email protected] ~]# useradd -u 256 -g oinstall -G dba -d /opt/oracle -s /bin/bash -m
[[email protected] ~]# echo oracle | passwd --stdin oracle
参数解释:
-g:指定用户所属的组
-G:指定用户所属的附加组
-u:指定用户ID
-d:指定用户主目录
-s:指定用户登录shell
-m:若用户主目录不存在,则自动创建。
步骤 5 修改内核参数
[[email protected] ~]# vim /etc/sysctl.conf
参数解释:
kernel.msgmax = 65536 #从一个进程发送到另一个进程的消息的最大长度。进程间的消息传递是在内核的内存中进行,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。缺省设置:8192
net.ipv4.ip_local_port_range= 9000 65500 #表示应用程序可使用的IPv4端口范围。
fs.file-max = 6815744 # 该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。
kernel.shmmni = 4096 #该参数是共享内存段的最大数量。shmmni缺省值4096.
net.core.rmem_default=262144 # 表示套接字接收缓冲区大小的缺省值。
net.core.wmem_default=262144 #表示套接字发送缓冲区大小的缺省值。
net.core.rmem_max=4194304 #表示套接字接收缓冲区大小的最大值。
net.core.wmem_max=1048576 #表示套接字发送缓冲区大小的最大值。
fs.aio-max-nr = 1048576 # 此参数限制并发未完成的请求,应该设置避免I/O子系统故障。
kernel.shmall = 10523004
#kernel.shmall:
该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求(几乎是原来设置2097152的两倍)。这时可以将shmmax参数调整到16G了,同时可以修改SGA_MAX_SIZE和SGA_TARGET为12G(您想设置的SGA最大大小,当然也可以是2G~14G等,还要协调PGA参数及OS等其他内存使用,不能设置太满,比如16G)
kernel.shmmax = 6465333657
# 用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。官方建议值:
32位linux系统:可取最大值为4GB(4294967296bytes)-1byte,即4294967295。建议值为多于内存的一半,所以如果是32为系统,一般可取值为4294967295。32位系统对SGA大小有限制,所以SGA肯定可以包含在单个共享内存段中。
64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理内存-1byte。例如,如果为12GB物理内存,可取12*1024*1024*1024-1=12884901887,SGA肯定会包含在单个共享内存段中。
kernel.sem = 250 32000 100 128
#以kernel.sem = 250 32000 100 128为例:
250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。
32000是参数semmns的值,表示系统内可允许的信号量最大数目。
100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。
128是参数semmni的值,表示系统信号量集合总数。
[[email protected] ~]# sysctl -p #立即生效
########################################################################
内核参数:
shmmax:
共享内存段的最大字节数,建议设大点,甚至可以大过物理内存的字节数。该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。
shmmin:
共享内存段的最小尺寸。这个参数的设置一般不会出问题。
shmmni:
共享内存段的最大数目。这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是4096 。通常不需要更改。
shmseg:
每个进程可分配的最大共享内存段数目
shmall:
最大的并发共享内存段数目,比SGA还要大。该参数表示系统一次可以使用的共享内存总量(以页为单位,一个页大小为4KB)。缺省值就是2097152,通常不需要修改。
sem:
是semaphores的缩写,该参数表示设置的信号量。它包含四个值:semmsl、semmns、semopm、semmni。
# sysctl -a|grep sem kernel.sem = 250 32000 100 128 |
semmns:
信号灯的最大数量,跟ORACLE的PROCESS数有关。SEMMSL * SEMMNI
semopm:
系统调用允许的信号量最大个数。至少100;或者等于SEMMSL
semmni:
系统信号量set最大个数。最少128
semmsl:
每个信号灯集合中最多的信号灯数目。最小250;对于processes参数设置较大的系统建议设置为processes+10。
msgmni:
指定消息队列标识的最大数目。缺省设置:16
msgmax:
从一个进程发送到另一个进程的消息的最大长度。进程间的消息传递是在内核的内存中进行,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。缺省设置:8192
msgmnb:
一个消息队列中最大的字节数。缺省设置:16384
optmem_max:每个socket的最大缓存大小
rmem_default:接收socket的缺省缓存大小(字节)
rmem_max:接收socket的最大缓存大小(字节)
wmem_default:发送的socket缺省缓存大小(字节)
wmem_max:发送的socket最大缓存大小(字节)
p_local_port_range:表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为10000到65000。(注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口!
file-max:表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。如果设置过小,Oracle将无法启动,或运行不正常。
########################################################################
步骤 5 -修改系统资源限制
[[email protected] ~]# vim /etc/security/limits.conf
参数解释:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
[[email protected] ~]# vim /etc/pam.d/login
参数解释:
session required pam_namespace.so
session required pam_limits.so
步骤 6 -创建安装目录及设置权限
[[email protected] ~]# mkdir -p /opt/oracle/app/
[[email protected] ~]# mkdir -p /opt/oracle/oradata
[[email protected] ~]# chmod 755 /opt/oracle/app/
[[email protected] ~]# chmod 755 /opt/oracle/
[[email protected] ~]# chown oracle:oinstall -R /opt/oracle/
步骤 7-设置oracle环境变量
su – oracle 切换到oracle用户
[[email protected] ~]$ vim .bash_profile
参数解释:
export ORACLE_BASE=/opt/oracle/app
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=orcl
[[email protected] ~]$ source ./.bash_profile #立即生效
步骤 8 -关闭Selinux
[[email protected] ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
[[email protected] ~]# setenforce 0
[[email protected] ~]# getenforce
步骤9- 关闭防火墙
[[email protected] ~]# service iptables stop
[[email protected] ~]# chkconfig iptables off
- 安装Oracle
安装步骤
(1) 上传Oracle安装包
首先linux.x64_11gR2_database_1of2.zip、linux.x64_11gR2_database_2of2.zip上传至Oracle家目录/opt/oracle
(2) 利用Oracle用户登录并解压安装包
利用oracle用户登录图形界面,解压文件,并执行安装(如果不用oracle用户登录安装,例如从root用户切换到oracle,可能会出现一些异常)
解压
[[email protected]~]# unzip /opt/oracle/linux_64_11gR2/linux.x64_11gR2_database_1of2.zip
[[email protected]~]# unzip /opt/oracle/linux_64_11gR2/linux.x64_11gR2_database_2of2.zip
[[email protected] ~]# mv database/ /opt/oracle/
[[email protected] ~]#xhost+
[[email protected] ~]#su – oracle
[[email protected] ~]$ ./database/runInstaller
开始安装
安装完成后,会提示执行下面两个脚本
利用root用户登录,到下面的两个目录下执行脚本即可
执行脚本
/opt/oracle/oraInventory/orainstRoot.sh
/opt/oracle/app/product/11.2.0/dbhome_1/root.sh
验证