共计 11053 个字符,预计需要花费 28 分钟才能阅读完成。
这是第一次安装 RAC,参考了国外一位大神的安装文档,在安装过程中,也遇到了一些问题,从网上查了相关问题的解决方法,在此感谢。
操作系统是 Oracle Enterprise Linux 5,两个节点 rac1 和 rac2,网卡 eth0 作为 public,eth1 作为 private,假设之前已添加一块 20G 容量的共享磁盘。
关于 Oracle Enterprise Linux 下载,可以在 https://edelivery.oracle.com/osdc/faces/Home.jspx 登陆后下载。
主机配置
所有命令在 root 用户下执行。
配置共享存储。共享存储可视为 /dev/sdb 设备。将使用 fdisk 命令创建两个 10G 大小的两个分区。两个新的分区将用于 ASM。
--list devices | |
ls /dev/sd* | |
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb |
--add two partitions | |
fdisk /dev/sdb | |
The number of cylinders for this disk is set to 2610. | |
There is nothing wrong with that, but this is larger than 1024, | |
and could in certain setups cause problems with: | |
1) software that runs at boot time (e.g., old versions of LILO) | |
2) booting and partitioning software from other OSs | |
(e.g., DOS FDISK, OS/2 FDISK) | |
Command (m for help): n | |
Command action | |
e extended | |
p primary partition (1-4) | |
p | |
Partition number (1-4): 1 | |
First cylinder (1-2610, default 1): | |
Using default value 1 | |
Last cylinder or +size or +sizeM | |
or +sizeK (1-2610, default 2610): +10240M | |
Command (m for help): n | |
Command action | |
e extended | |
p primary partition (1-4) | |
p | |
Partition number (1-4): 2 | |
First cylinder (1247-2610, default 1247): | |
Using default value 1247 | |
Last cylinder or +size or +sizeM or +sizeK (1247-2610, default 2610): | |
Using default value 2610 | |
Command (m for help): w | |
The partition table has been altered! | |
Calling ioctl() to re-read partition table. | |
Syncing disks. |
--list new partitions | |
fdisk -l /dev/sdb | |
Disk /dev/sdb: 21.4 GB, 21474836480 bytes | |
255 heads, 63 sectors/track, 2610 cylinders | |
Units = cylinders of 16065 * 512 = 8225280 bytes | |
Device Boot Start End Blocks Id System | |
/dev/sdb1 1 1246 10008463+ 83 Linux | |
/dev/sdb2 1247 2610 10956330 83 Linux |
添加组
--required groups | |
/usr/sbin/groupadd -g 501 oinstall | |
/usr/sbin/groupadd -g 502 dba | |
/usr/sbin/groupadd -g 503 oper |
添加 Oracle 用户
/usr/sbin/useradd -u 502 -g oinstall -G dba oracle
修改 Oracle 用户密码
passwd oracle
在 /etc/sysctl.conf 下添加内核参数
#kernel parameters for 11g installation | |
kernel.shmmni = 4096 | |
kernel.shmmax = 4398046511104 | |
kernel.shmall = 1073741824 | |
kernel.sem = 250 32000 100 128 | |
fs.aio-max-nr = 1048576 | |
fs.file-max = 6815744 | |
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 |
应用内核参数
/sbin/sysctl -p
为用户 Oracle 在 /etc/security/limits.conf 文件中添加以下行以设置 shell 限制
--shell limits for users oracle 11gR2 | |
oracle soft nproc 131072 | |
oracle hard nproc 131072 | |
oracle soft nofile 131072 | |
oracle hard nofile 131072 | |
oracle soft core unlimited | |
oracle hard core unlimited | |
oracle soft memlock 50000000 | |
oracle hard memlock 50000000 |
“/ etc / hosts”文件必须包含服务器的完全限定名称。
<IP-address> <fully-qualified-machine-name> <machine-name>
“/ etc / hosts”下输入以下数据
127.0.0.1 localhost.localdomain localhost | |
#public | |
192.168.0.50 rac1.dbaora.com rac1 | |
192.168.0.51 rac2.dbaora.com rac2 | |
#private | |
192.168.1.60 rac1-priv.dbaora.com rac1-priv | |
192.168.1.61 rac2-priv.dbaora.com rac2-priv | |
#virtual | |
192.168.0.70 rac1-vip.dbaora.com rac1-vip | |
192.168.0.71 rac2-vip.dbaora.com rac2-vip | |
#scan | |
192.168.0.20 rac-scan.dbaora.com rac-scan |
验证 rac1.dbaora.com 上的 th0 和 eth1 的网络响应
[root@rac1 ~]# ping rac1 -c 1 | |
PING rac1.dbaora.com (192.168.0.50) 56(84) bytes of data. | |
64 bytes from rac1.dbaora.com (192.168.0.50): | |
icmp_seq=1 ttl=64 time=0.032 ms | |
--- rac1.dbaora.com ping statistics --- | |
1 packets transmitted, 1 received, 0% packet loss, time 0ms | |
rtt min/avg/max/mdev = 0.032/0.032/0.032/0.000 ms | |
[root@rac1 ~]# ping rac1-priv -c 1 | |
PING rac1-priv.dbaora.com (192.168.1.60) 56(84) bytes of data. | |
64 bytes from rac1-priv.dbaora.com (192.168.1.60): | |
icmp_seq=1 ttl=64 time=0.036 ms | |
--- rac1-priv.dbaora.com ping statistics --- | |
1 packets transmitted, 1 received, 0% packet loss, time 0ms | |
rtt min/avg/max/mdev = 0.036/0.036/0.036/0.000 ms |
检查哪些软件包已安装,哪些软件包缺失
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' binutils \ | |
compat-libstdc++-33 \ | |
elfutils-libelf \ | |
elfutils-libelf-devel \ | |
gcc \ | |
gcc-c++ \ | |
glibc \ | |
glibc-common \ | |
glibc-devel \ | |
glibc-headers \ | |
ksh \ | |
libaio \ | |
libaio-devel \ | |
libgcc \ | |
libstdc++ \ | |
libstdc++-devel \ | |
make \ | |
sysstat \ | |
unixODBC \ | |
unixODBC-devel |
安装缺失的包。这只是一个例子:
#directory with mounted Oracle Enterprise Linux 5 install disk | |
cd <path with Oracle Enterprise Linux 5>/Server/Packages | |
#install missed packages (example for package unixODBC*) | |
rpm -Uvh unixODBC* |
禁用 Secure Linux
要禁用 Secure Linux 编辑“/etc/selinux/config”文件,确保 SELINUX 设置如下,它需要重启才能有效。
SELINUX=disabled
禁用 Firewall
可以在图形模式下或手动禁用防火墙。
执行下面的命令手动禁用
service iptables stop | |
chkconfig iptables off |
更改 NTP
需要禁用 NTP(Network Time Protocol)或修改其设置,以便 Oracle Cluster Time Synchronization Service(ctssd)可以同步 RAC 节点的时间。
选项 1 – 禁用 NTP
service ntpd stop | |
Shutting down ntpd: [OK] | |
chkconfig ntpd off | |
mv /etc/ntp.conf /etc/ntp.conf.orig | |
rm /var/run/ntpd.pid |
选项 2 – 更改 NTP
如果要保留 NTP,请在“/etc/sysconfig/ntpd”文件中添加“-x”选项。
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"
并重新启动 NTP
# service ntpd restart
在操作系统安装过程中,可以禁用 SElinux、Firewall,不启动 NTP,这样在主机配置中可省略。
目录
创建 ORACLE_BASE
mkdir -p /ora01/app/oracle
为 grid 和 database 软件创建 ORACLE_HOME
mkdir -p /ora01/app/oracle/product/11.2.0/db_1 | |
mkdir -p /ora01/app/grid/product/11.2.0/grid | |
chown oracle:oinstall -R /ora01 | |
chmod 775 /ora01/app/oracle |
Oracle 用户新的配置文件
修改 Oracle 配置文件 /home/oracle/.bash_profile
# .bash_profile | |
# Get the aliases and functions | |
if [-f ~/.bashrc]; then | |
. ~/.bashrc | |
fi | |
# User specific environment and startup programs | |
PATH=$PATH:$HOME/bin | |
export PATH | |
alias genv='. /home/oracle/.bash_profile_grid;envo' | |
alias denv='. /home/oracle/.bash_profile_database;envo' | |
. /home/oracle/.bash_profile_database | |
envo |
这里添加了两个别名:genv 和 denv,这样可以方便地切换 grid 和 database 软件环境。
为 Oracle 用户添加新的配置文件 /home/oracle/.bash_profile_grid。此配置文件将用于 grid 软件。
# Oracle Settings | |
export TMP=/tmp | |
export ORACLE_HOSTNAME=rac1.dbaora.com | |
export ORACLE_UNQNAME=+ASM | |
export ORACLE_BASE=/ora01/app/oracle | |
export ORACLE_HOME=/ora01/app/grid/product/11.2.0/grid | |
export ORACLE_SID=+ASM1 | |
PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin | |
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; | |
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; | |
alias cdob='cd $ORACLE_BASE' | |
alias cdoh='cd $ORACLE_HOME' | |
alias tns='cd $ORACLE_HOME/network/admin' | |
alias envo='env | grep ORACLE' |
为 Oracle 用户添加新的参数文件 /home/oracle/.bash_profile_database. 此配置文件将用于 database 软件。
# Oracle Settings | |
export TMP=/tmp | |
export ORACLE_HOSTNAME=rac1.dbaora.com | |
export ORACLE_UNQNAME=ORA11G | |
export ORACLE_BASE=/ora01/app/oracle | |
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 | |
export ORACLE_SID=ORA11G1 | |
PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin | |
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; | |
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; | |
alias cdob='cd $ORACLE_BASE' | |
alias cdoh='cd $ORACLE_HOME' | |
alias tns='cd $ORACLE_HOME/network/admin' | |
alias envo='env | grep ORACLE' | |
umask 022 |
在 rac2 中,将两个参数文件的 ORACLE_HOSTNAME 和 ORACLE_SID 更改为本服务器的参数值。
记住修改所有配置文件的所有者
chown oracle:oinstall /home/oracle/.bash* | |
chmod 750 oracle:oinstall /home/oracle/.bash* |
作为 oracle 用户解压 database 和 grid 软件。创建 2 个目录:
- database – database software
- grid – grid software
切换到 grid 软件环境,以 root 用户身份安装软件包 cvuqdisk-1.0.9-1.rpm
cd <install grid software>/rpm | |
[ | ]|
Preparing... | |
Using default group oinstall to install package | |
1:cvuqdisk |
配置 ASM 设备
要配置 ASMlib,首先需要从 OTN 下载 ASMLib rpms。如果使用的是 UEK 内核,则所有必需的 rpms 都已安装。
- oracleasm-support-2.1.8-1.el5.i386.rpm
- oracleasmlib-2.0.4-1.el5.i386.rpm
- oracleasm-[your-kernel-version].rpm
关于 oracleasm-supper 和 orcleasmlib 软件包版本,可以根据操作系统版本从 http://www.oracle.com/technetwork/server-storage/linux/asmlib/index-101839.html 下载软件包。
而 oracleasm 软件包要根据操作系统内核参数来决定:
name -a
这里是 Oracle 通过配置 YUM 来安装 oracleasm 软件包的链接:
http://www.oracle.com/technetwork/server-storage/linux/downloads/rhel5-084877.html
使用以下命令安装软件包
rpm -Uvh oracleasm*.rpm
安装完成后可以通过 rpm -qa | grep oracleasm 命令验证。
配置 SMlib
[root@rac1 ~]# /usr/sbin/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 []: oracle | |
Default group to own the driver interface []: dba | |
Start Oracle ASM library driver on boot (y/n) [n]: y | |
Scan for Oracle ASM disks on boot (y/n) [y]: | |
Writing Oracle ASM library driver configuration: done |
加载 asm 内核模块
[root@rac1 ~]# /usr/sbin/oracleasm init | |
Loading module "oracleasm": oracleasm | |
Mounting ASMlib driver filesystem: /dev/oracleasm |
添加 ASM 磁盘
[root@rac1 ~]# /usr/sbin/oracleasm createdisk DISK1 /dev/sdb1 | |
Writing disk header: done | |
Instantiating disk: done | |
[root@rac1 ~]# /usr/sbin/oracleasm createdisk DISK2 /dev/sdb2 | |
Writing disk header: done | |
Instantiating disk: done |
扫描 ASM 磁盘
[root@rac1 ~]# /usr/sbin/oracleasm scandisks | |
Reloading disk partitions: done | |
Cleaning any stale ASM disks... | |
Scanning system for ASM disks... |
列出 ASM 磁盘
[ | ]|
DISK1 | |
DISK2 |
这里是使用 oracleasm 配置 ASM 磁盘,也可以同过 udev 来配置,在使用 oracleasm 时遇到一些 bug,推荐使用 udev。
现在在每个节点上运行下面命令验证网络:rac1.dbaora.com 和 rac2.dbaora.com
hostname | |
ping rac1 -c 1 | |
ping rac2 -c 1 | |
ping rac1-priv -c 1 | |
ping rac2-priv -c 1 |
安装 grid 软件
以用户 oracle 启动 grid 软件安装,在此之前以 root 身份运行命令 xhost +。
xhost + | |
access control disabled, clients can connect from any host |
设置 grid 环境并运行 grid 安装软件
su - oracle | |
[oracle@rac1 ~]$ genv | |
ORACLE_UNQNAME=+ASM | |
ORACLE_SID=+ASM1 | |
ORACLE_BASE=/ora01/app/oracle | |
ORACLE_HOSTNAME=rac1.dbaora.com | |
ORACLE_HOME=/ora01/app/grid/product/11.2.0/grid | |
--run installation | |
cd <install grid software> | |
./runInstall |
关于安装过程,可以根据实际需要选择,这里省略。
这里如果是使用 linux 6 以上版本,在最后执行 root.sh 脚本时,会用一个 BUG,具体解决方法如下
1. 删除配置:
/ora01/app/grid/product/11.2.0/gridl/roothas.pl -deconfig -force-verbose
路径是 grid 环境的 ORACLE_HOME。
出现 Adding daemon to inittab 这条信息的时候执行 dd 命令
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
如果是安装 11.2.0.1 的话,还是建议 使用 linux 5 的版本。
ASM configuration assistant
到目前为止,只创建了一个 ASM 组 DATA。下面展示如何快速添加额外的组到 ASM 实例。
在以 Oracle 用户启动 ASMCA 之前,切换到 root 用户执行 xhost + 命令。
ASMCA – ASM configuration assistant 是 grid 软件的一部分,因此必须设置正确的环境
su - oracle | |
[oracle | ~]$ genv|
ORACLE_UNQNAME=+ASM | |
ORACLE_SID=+ASM1 | |
ORACLE_BASE=/ora01/app/oracle | |
ORACLE_HOSTNAME=rac1.dbaora.com | |
ORACLE_HOME=/ora01/app/grid/product/11.2.0/grid | |
[oracle | ~]$ asmca
根据需要一步步执行就可以了,安装步骤省略。
在你可以在 sqlplus 中验证你有 2 个 ASM 组。
[oracle@rac1 ~]$ sqlplus | |
SQL*Plus: Release 11.2.0.3.0 Production on Sun Jun 16 22:39:11 2013 | |
Copyright (c) 1982, 2011, Oracle. All rights reserved. | |
Enter user-name: / as sysasm | |
Connected to: | |
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit | |
Production With the Automatic Storage Management option | |
SQL> select name from v$asm_diskgroup; | |
NAME | |
------------------------------ | |
DATA | |
BACKUP |
安装 Database 软件
作为 Oracle 用户开始 database 软件安装。设置 database 软件爱你环境
su - oracle | |
[oracle@rac1 ~]$ denv | |
ORACLE_UNQNAME=ORA11G | |
ORACLE_SID=ORA11G1 | |
ORACLE_BASE=/ora01/app/oracle | |
ORACLE_HOSTNAME=rac1.dbaora.com | |
ORACLE_HOME=/ora01/app/oracle/product/11.2.0/db_1 | |
--run installation | |
cd <install database software> | |
./runInstall |
安装步骤省略。
在安装过程中,遇到一个有关监听器的问题,提示
default listener is not configured in grid infrastructure home
解决方法链接 http://www.linuxidc.com/Linux/2017-08/146057.htm
验证 RAC 安装
[root@rac1 ~]# su - oracle | |
[oracle@rac1 ~]$ genv | |
ORACLE_UNQNAME=+ASM | |
ORACLE_SID=+ASM1 | |
ORACLE_BASE=/ora01/app/oracle | |
ORACLE_HOSTNAME=rac1.dbaora.com | |
ORACLE_HOME=/ora01/app/grid/product/11.2.0/grid | |
[oracle@rac1 ~]$ srvctl config database -d ORA11G | |
Database unique name: ORA11G | |
Database name: ORA11G | |
Oracle home: /ora01/app/oracle/product/11.2.0/db_1 | |
Oracle user: oracle | |
Spfile: +DATA/ORA11G/spfileORA11G.ora | |
Domain: dbaora.com | |
Start options: open | |
Stop options: immediate | |
Database role: PRIMARY | |
Management policy: AUTOMATIC | |
Server pools: ORA11G | |
Database instances: ORA11G1,ORA11G2 | |
Disk Groups: DATA | |
Mount point paths: | |
Services: | |
Type: RAC | |
Database is administrator managed | |
[oracle@rac1 ~]$ srvctl status listener | |
Listener LISTENER is enabled | |
Listener LISTENER is running on node(s): rac2,rac1 | |
[oracle@rac1 ~]$ srvctl status asm | |
ASM is running on rac2,rac1 | |
[oracle@rac1 ~]$ srvctl status database -d ORA11G | |
Instance ORA11G1 is running on node rac1 | |
Instance ORA11G2 is running on node rac2 |
更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-08/146056.htm
