Linux6安装Oracle 11g R2 RAC(virtualbox)

渡边不斯凯
Aug 27, 2017 · 5 min read

硬件:virturlbox

软件:oracle 11.2.0.1 ---安装grid过程中有bug,已在11.2.0.3中修复

虚拟机配置如下即可:

创建oracle相关用户:

groupadd oinstall
groupadd dba
groupadd oper
groupadd asmadmin
groupadd asmoper
groupadd asmdba
useradd -g oinstall -G dba,asmdba,oper,asmadmin oracle
useradd -g oinstall -G asmadmin,asmdba,asmoper,dba grid
passwd oracle
passwd grid

创建安装目录:

mkdir -p /u01/app/oracle
mkdir -p /u01/app/grid
mkdir -p /u01/app/11.2.0/grid/

chown -R oracle.oinstall /u01
chown -R grid.oinstall /u01/app/grid

chown -R grid.oinstall /u01/app/11.2.0/
chown -R oracle.oinstall /u01/app/oracle
chmod -R 775 /u01

创建用户profile(分别在两个节点上):

su -grid
vi .bash_profile
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
umask 022

export ORACLE_SID=+ASM2
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
umask 022

su- oracle

vi .bash_profile

export ORACLE_SID=dzswl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export TMP=/tmp
export TMPDIR=$TMP
export PATH=$PATH:$ORACLE_HOME/bin
umask 022

export ORACLE_SID=dzsw2
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export TMP=/tmp
export TMPDIR=$TMP
export PATH=$PATH:$ORACLE_HOME/bin
umask 022

通过yum安装相关工具:

将cd挂载到/mnt目录下,mount /dev/sr0 /mnt

配置yum源

[dzsw1]
name=dzsw1
baseurl=file:///mnt/Server
gpgcheck=0

yum -y install binutils* compat-libcap* compat-libstdc++* compat-libstdc++* gcc* glibc* glibc* ksh* libgcc* libstdc* libaio* make* sysstat* lrzsz*

配置hosts文件(配置host需要注意检查/etc/sysconfig/network中的username是否和hosts中的一致,否则可能出现PRVF-0002:Could not retrieve local nodename,另外hosts中127.0.0.1 避免出现主机名):

# Public
192.168.1.101 dzsw1
192.168.1.102 dzsw2
# Private
18.86.2.11 dzsw1-priv
18.86.2.12 dzsw2-priv
# Virtual
192.168.1.201 dzsw1-vip
192.168.1.202 dzsw2-vip
# SCAN
192.168.1.103 dzsw-scan
192.168.1.104 dzsw-scan
192.168.1.105 dzsw-scan

修改系统参数profile:

cat >> /etc/profile <<EOF
if [ /$USER = “oracle” ] || [ /$USER = “grid” ]; then
if [ /$SHELL = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi

export PATH=/u01/app/11.2.0/grid/bin:$PATH:.
EOF

limit 参数:

cat >> /etc/security/limits.conf<< EOF
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
EOF

sysctl参数:

cat >> /etc/sysctl.conf<<EOF

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
# kernel.shmmax = kernel.shmall * 1024
kernel.shmmax = 2147483648
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
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=1048586
EOF

执行sysctl -p生效。

修改login:

cat >>/etc/pam.d/login<<EOF
session required pam_limit.so
EOF

其他的,关闭selinux,iptables,ntpd等。

service iptables stop chkconfig iptables off

采用ntpd同步时间(确保已安装ntp):

vi /etc/sysconfig/ntpd

# Drop root to id ‘ntp:ntp’ by default.
#OPTIONS=”-u ntp:ntp -p /var/run/ntpd.pid -g”
OPTIONS=”-x -u ntp:ntp -p /var/run/ntpd.pid”

service ntpd restart

配置裸设备,方法有udev和安装ASMlib

1、配置udev需要编辑:

/etc/udev/rules.d/99-oracle-asmdevices.rules

ACTION==”add”, KERNEL==”sdb1", RUN+=”/bin/raw /dev/raw/raw1 %N”
ACTION==”add”, KERNEL==”sdd1", RUN+=”/bin/raw /dev/raw/raw2 %N”
ACTION==”add”, KERNEL==”sdc1", RUN+=”/bin/raw /dev/raw/raw3 %N”
KERNEL==”raw[1–3]*”, OWNER=”grid”, GROUP=”asmdba”, MODE=”775"

/sbin/start_udev

2、安装ASMlib(各个节点):

oracleasmlib-2.0.12–1.el6.x86_64.rpm
oracleasm-2.0.6.rh1–2.el6.src.rpm

#oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets (‘[]’). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
[root@dzsw1 tmp]# /usr/sbin/oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module “oracleasm”: oracleasm
Configuring “oracleasm” to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm

fdisk添加的共享磁盘后,执行:

[root@dzsw1 ~]# /usr/sbin/oracleasm createdisk DISK1 /dev/sdb1
Writing disk header: done
Instantiating disk: done
[root@dzsw1 ~]# /usr/sbin/oracleasm createdisk DISK1 /dev/sdc1
Disk “DISK1” already exists
[root@dzsw1 ~]# /usr/sbin/oracleasm createdisk DISK2 /dev/sdc1
Writing disk header: done
Instantiating disk: done
[root@dzsw1 ~]# /usr/sbin/oracleasm createdisk DISK3 /dev/sdd1
Writing disk header: done
Instantiating disk: done
[root@dzsw1 ~]# /usr/sbin/oracleasm createdisk DISK4 /dev/sde1
Writing disk header: done
Instantiating disk: done
[root@dzsw1 ~]#
[root@dzsw1 ~]# /usr/sbin/oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks…
Scanning system for ASM disks…
[root@dzsw1 ~]#
[root@dzsw1 ~]# /usr/sbin/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4

对每个盘进行创建,然后sandisks,发现第二个节点可以看到共享磁盘了。

[root@dzsw2 ~]# /usr/sbin/oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks…
Scanning system for ASM disks…
Instantiating disk “DISK1”
Instantiating disk “DISK2”
Instantiating disk “DISK3”
Instantiating disk “DISK4”
[root@dzsw2 ~]# /usr/sbin/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4

安装grid

su-grid

遇到2坑,参见日志可以解决:/u01/app/11.2.0/grid/cfgtoollogs/crsconfig/rootcrs_dzsw1.log。此日志是在执行root.sh时候的安装日志

1、Adding Clusterware entries to upstart
Failed to stop service oracle-ohasd, error: Inappropriate ioctl for device

当遇到以上报错的时候,注意查看ohasd是否启动,否则日志一直在报:2017–12–03 18:39:50: Checking the status of ohasd
2017–12–03 18:39:55: Executing cmd: /u01/app/11.2.0/grid/bin/crsctl check has

执行/etc/init.d/init.ohasd run

2、节点2执行root.sh 遇到

OLR initialization — successful
CRS-2728: A resource type with the name ‘ora.daemon.type’ is already registered
CRS-4000: Command Add failed, or completed with errors.
CRS-2728: A resource type with the name ‘ora.mdns.type’ is already registered
CRS-4000: Command Add failed, or completed with errors.
Failed to register Grid Infrastructure type ora.mdns.type at /u01/app/11.2.0/grid/crs/install/crsconfig_lib.pm line 7777.
/u01/app/11.2.0/grid/perl/bin/perl -I/u01/app/11.2.0/grid/perl/lib -I/u01/app/11.2.0/grid/crs/install /u01/app/11.2.0/grid/crs/install/rootcrs.pl execution failed

需要回退./roothas.pl -deconfig -force -verbose,重新执行且执行/etc/init.d/init.ohasd run。

--------------------------

在执行/u01/app/11.2.0/grid/root.sh的时候,在“Adding daemon to inittab”打印到屏幕之后,需要开启另一个窗口执行/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1

两个节点都要执行。

接下来就是安装oracle软件和数据库了,在dbca之前需要在grid用户里通过asmca创建数据磁盘组。

--待续

)
渡边不斯凯

Written by

我可能抑郁了,

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade