阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下Oracle 11.2.0.1 RAC安装笔记

120次阅读
没有评论

共计 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
[root@rac1 rpm]# rpm -Uvh cvuqdisk-1.0.9-1.rpm
Preparing...                ############################## [100%]
Using default group oinstall to install package
   1:cvuqdisk               ############################## [100%]

配置 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 磁盘

[root@rac1 ~]# /usr/sbin/oracleasm listdisks
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@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 ~]$ 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

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计11053字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中