Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17193
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-01 23:59
文章分类
文章存档

2015年(6)

我的朋友

分类: Oracle

2015-04-24 10:52:00

一、版本说明
发现网上相关文章很多但是不是很专,因此细化版本为了使文章更加实用。
这次搭建的是Oracle 11g R2 11.2.0.4的RAC环境,使用的操作系统版本为Oracle Linux 6.4

点击(此处)折叠或打开

  1. [root@node1 ~]# lsb_release -a
  2. LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
  3. Distributor ID: OracleServer
  4. Description: Oracle Linux Server release 6.4
  5. Release: 6.4
  6. Codename: n/a
内核版本:

点击(此处)折叠或打开

  1. [root@node1 ~]# uname -r
  2. 2.6.39-400.17.1.el6uek.x86_64
UEK代表Unbreakable Enterprise Kernel,是Oracle专门为Oracle Linux定制的内核,可以提供在线支持和对数据库的支持,算是OracleLinux的卖点之一。(本文中一些配置过程会因实用UEK版本而得到简化)

二、Oracle 11g R2 RAC安装整体步骤
1.服务器准备 (system, storage, and network administration):
  • 安装操作系统并升级到满足Oracle安装要求的版本。
  • 创建安装所需要的组、用户以及软件的家目录。
  • 设置GNS域名如果您打算部署GNS,并且完成网络地址在DNS和服务器上的配置。
  • 设置所要求的存储。
  • 将所有安装文件拷贝到一个节点上。
2.安装Oracle Grid集群基础架构, 包括Oracle Clusterware和Oracle ASM (system and storage administration):
  • 为集群安装Oracle Grid 基础架构软件。在安装过程中,Fixup脚本进行操作系统参数、SSH和用户环境变量等参数的附加调整。
  • 升级Oracle Clusterware和Oracle ASM到最新补丁。
3.安装Oracle RAC (database administration):
  •     安装Oracle RAC
  •     打补丁到最新版本
  •     完成安装后的调试

三、详细安装过程及说明(参考官方文档)

1.通过SecureCRT或TerminalX建立命令行连接。

2.在每一个节点上添加安装Oracle Grid的用户、组和家目录,并设置权限。

点击(此处)折叠或打开

  1. # /usr/sbin/groupadd -g 1000 oinstall
  2. # /usr/sbin/groupadd -g 1020 asmadmin
  3. # /usr/sbin/groupadd -g 1021 asmdba
  4. # /usr/sbin/groupadd -g 1022 asmoper
  5. # /usr/sbin/groupadd -g 1031 dba
  6. # /usr/sbin/groupadd -g 1032 oper
  7. # useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
  8. # useradd -u 1101 -g oinstall -G dba,asmdba,oper oracle
  9. # mkdir -p /u01/app/11.2.0/grid
  10. # mkdir -p /u01/app/grid
  11. # chown -R grid:oinstall /u01
  12. # mkdir /u01/app/oracle
  13. # chown oracle:oinstall /u01/app/oracle
  14. # chmod -R 775 /u01/
参照官方文档,采用GI与DB分开安装和权限的策略,对于多实例管理有利。

3.检查服务器各个节点的配置是否符合安装要求

I.服务器硬盘空间要求
/tmp目录大小至少:1GB
安装Grid Infrastracture所需空间:6.6GB
安装Oracle Database所需空间:4GB
此外安装过程中分析、收集、跟踪文件所需空间:10GB
建议总共至少30GB,放心!(此处不包含ASM或NFS的空间需求)

II.服务器内存要求

内存大小:至少2.5GB
Swap大小:
当内存为2.5GB-16GB时,Swap需要大于等于系统内存。
当内存大于16GB时,Swap等于16GB即可。


III
.检查和调试代码
  • 查看内存及Swap大小的命令如下。

点击(此处)折叠或打开

  1. # grep MemTotal /proc/meminfo
  2. # grep SwapTotal /proc/meminfo

  • 查看/tmp目录以及配置单独lv的命令如下。


点击(此处)折叠或打开

  1. # df -h /tmp
  2. # lvcreate -L 2G -n lv_tmp vg_temp
  3. # mount /dev/vg_temp/lv_tmp /tmp
  4. # df -h /tmp

4.设置操作系统相关参数

    这一项在非Oracle Linux的操作系统中算是一项比较繁琐的工作,然而我们这次安装的版本是Oracle Linux 6.4 with Unbreakable Enterprise Kernel,因此我们有了更简单的办法,就是通过安装Oracle Preinstallation RPM来实现相关操作系统参数的调整和软件包的安装。
这个安装包主要完成以下工作:
  • Automatically downloads and installs any additional RPM packages needed for installing Oracle Grid Infrastructure and Oracle Database, and resolves any dependencies

  • Creates an oracle user, and creates the oraInventory (oinstall) and OSDBA (dba) groups for that user

  • As needed, sets sysctl.conf settings, system startup parameters, and driver parameters to values based on recommendations from the Oracle Preinstallation RPM program

  • Sets hard and soft resource limits

  • Sets other recommended parameters, depending on your kernel version

此安装包位于操作系统安装盘的Packages目录下。

点击(此处)折叠或打开

  1. # cd /mnt/install_DVD
  2. # cd Packages
  3. # ll | grep preinstall
  4. -rw-r--r-- 1 root root 15524 Jan 16 2013 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64.rpm
  5. # rpm -ivh oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64.rpm
安装包修改/etc/sysctl.conf的内容如下:
其中标有oracle-rdbms-server-11gR2-preinstall字样注释的便是安装包所添加的参数。

点击(此处)折叠或打开

  1. # cat /etc/sysctl.conf
  2. # Kernel sysctl configuration file for Red Hat Linux
  3. #
  4. # For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
  5. # sysctl.conf(5) for more details.

  6. # Controls IP packet forwarding
  7. net.ipv4.ip_forward = 0

  8. # Controls source route verification
  9. net.ipv4.conf.default.rp_filter = 1

  10. # Do not accept source routing
  11. net.ipv4.conf.default.accept_source_route = 0

  12. # Controls the System Request debugging functionality of the kernel
  13. kernel.sysrq = 0

  14. # Controls whether core dumps will append the PID to the core filename.
  15. # Useful for debugging multi-threaded applications.
  16. kernel.core_uses_pid = 1

  17. # Controls the use of TCP syncookies
  18. net.ipv4.tcp_syncookies = 1

  19. # Disable netfilter on bridges.
  20. net.bridge.bridge-nf-call-ip6tables = 0
  21. net.bridge.bridge-nf-call-iptables = 0
  22. net.bridge.bridge-nf-call-arptables = 0

  23. # Controls the default maxmimum size of a mesage queue
  24. kernel.msgmnb = 65536

  25. # Controls the maximum size of a message, in bytes
  26. kernel.msgmax = 65536

  27. # Controls the maximum shared segment size, in bytes

  28. # Controls the maximum number of shared memory segments, in pages

  29. # oracle-rdbms-server-11gR2-preinstall setting for fs.file-max is 6815744
  30. fs.file-max = 6815744

  31. # oracle-rdbms-server-11gR2-preinstall setting for kernel.sem is '250 32000 100 128'
  32. kernel.sem = 250 32000 100 128

  33. # oracle-rdbms-server-11gR2-preinstall setting for kernel.shmmni is 4096
  34. kernel.shmmni = 4096

  35. # oracle-rdbms-server-11gR2-preinstall setting for kernel.shmall is 1073741824 on x86_64
  36. # oracle-rdbms-server-11gR2-preinstall setting for kernel.shmall is 2097152 on i386
  37. kernel.shmall = 1073741824

  38. # oracle-rdbms-server-11gR2-preinstall setting for kernel.shmmax is 4398046511104 on x86_64
  39. # oracle-rdbms-server-11gR2-preinstall setting for kernel.shmmax is 4294967295 on i386
  40. kernel.shmmax = 4398046511104

  41. # oracle-rdbms-server-11gR2-preinstall setting for net.core.rmem_default is 262144
  42. net.core.rmem_default = 262144

  43. # oracle-rdbms-server-11gR2-preinstall setting for net.core.rmem_max is 4194304
  44. net.core.rmem_max = 4194304

  45. # oracle-rdbms-server-11gR2-preinstall setting for net.core.wmem_default is 262144
  46. net.core.wmem_default = 262144

  47. # oracle-rdbms-server-11gR2-preinstall setting for net.core.wmem_max is 1048576
  48. net.core.wmem_max = 1048576

  49. # oracle-rdbms-server-11gR2-preinstall setting for fs.aio-max-nr is 1048576
  50. fs.aio-max-nr = 1048576

  51. # oracle-rdbms-server-11gR2-preinstall setting for net.ipv4.ip_local_port_range is 9000 65500
  52. net.ipv4.ip_local_port_range = 9000 65500

5.配置Oracle网络


I.硬件配置要求
  • 每个服务器节点至少需要2块网卡,一块对外网络接口,一块私有网络接口(心跳)。
  •  如果你通过OUI安装Oracle集群软件,需要保证每个节点用于外网或私网接口(网卡名)保证一致。比如,node1使用eth0作为对外接口,node2就不能使用eth1作为对外接口。

II.IP配置要求
  • 存在为集群服务的DHCP

  • DHCP能为每个节点提供足够的IP,一个虚拟IP、3个SCAN IP


III.非GNS下手动配置IP实例



6.检查操作系统软件包
首先,根据操作系统版本到官方文档中找到安装包需求列表
,如下图

可以通过mount安装盘或直接通过yum源检查和安装所需要的包:

点击(此处)折叠或打开

  1. # rpm -qa packages_name
  2. # rpm -ivh packages_name

  3. # yum list packages_name
  4. # yum install packages_name
这里还要提一下:CVUdisk这个包也可以在这个时候一起安装好,以备之后使用CVU时会用到。

点击(此处)折叠或打开

  1. # 检查是否已经安装
  2. # rpm -qi cvuqdisk
  3. # 如果已安装需要先卸载之前的版本
  4. # rpm -e cvuqdisk
  5. # 安装新版本
  6. # CVUQDISK_GRP=oinstall; export CVUQDISK_GRP
  7. # rpm -ivh cvuqdisk-1.0.9-1.rpm

7.
关闭NTP及端口范围参数修改

点击(此处)折叠或打开

  1. # Oracle建议使用Oracle Cluster Time Synchronization Service,因此关闭删除NTP
  2. # /sbin/service ntpd stop
  3. # chkconfig ntpd off
  4. # rm /etc/ntp.conf (mv /etc/ntp.conf /etc/ntp.conf.old)
  5. # rm /var/run/ntpd.pid

  6. 检查TCP/UDP端口范围
  7. # cat /proc/sys/net/ipv4/ip_local_port_range
  8. 如果已经显示9000 65500,就不用进行下面的步骤了
  9. # echo 9000 65500 > /proc/sys/net/ipv4/ip_local_port_range
  10. # vim /etc/sysctl.conf
  11. # 添加此行:
  12. # TCP/UDP port range
  13. net.ipv4.ip_local_port_range = 9000 65500
  14. # 重启网络
  15. # /etc/rc.d/init.d/network restart

8.
调整.bash_profile内容并设置显示地址

点击(此处)折叠或打开

  1. 设置参数:
  2. $ su - root
  3. # mkdir /mount_point/tmp
  4. # chmod 775 /mount_point/tmp
  5. # exit

  6. $ vi .bash_profile
  7. 加入行:
  8. TEMP=/mount_point/tmp
  9. TMPDIR=/mount_point/tmp
  10. export TEMP TMPDIR
  11. 加入行:umask 022
  12. 加入行:DISPLAY=local_IP:0.0 ; export DISPLAY
  13. local_IP为你要将安装视图所显示的桌面地址

  14. 检查设置参数
  15. $ umask
  16. $ env | more
  17. $ echo $DISPLAY
  18. $ echo $TEMP
  19. $ echo $TMPDIR

9.
配置SSH互信
这是很关键的一步,虽然官方文档中声称安装GI和RAC的时候OUI会自动配置SSH,但为了在安装之前使用CVU检查各项配置,还是手动配置互信更优。

点击(此处)折叠或打开

  1. 配置过程如下:
  2. 各节点生成Keys:
  3. [root@rac1 ~]# su - oracle
  4. [oracle@rac1 ~]$ mkdir ~/.ssh
  5. [oracle@rac1 ~]$ chmod 700 ~/.ssh
  6. [oracle@rac1 ~]$ ssh-keygen -t rsa
  7. [oracle@rac1 ~]$ ssh-keygen -t dsa
  8. [root@rac2 ~]# su - oracle
  9. [oracle@rac2 ~]$ mkdir ~/.ssh
  10. [oracle@rac2 ~]$ chmod 700 ~/.ssh
  11. [oracle@rac2 ~]$ ssh-keygen -t rsa
  12. [oracle@rac2 ~]$ ssh-keygen -t dsa

  13. 在节点1上进行互信配置:
  14. [oracle@rac1 ~]$ touch ~/.ssh/authorized_keys
  15. [oracle@rac1 ~]$ cd ~/.ssh
  16. [oracle@rac1 .ssh]$ ssh rac1 cat ~/.ssh/id_rsa.pub >> authorized_keys
  17. [oracle@rac1 .ssh]$ ssh rac2 cat ~/.ssh/id_rsa.pub >> authorized_keys
  18. [oracle@rac1 .ssh]$ ssh rac1 cat ~/.ssh/id_dsa.pub >> authorized_keys
  19. [oracle@rac1 .ssh]$ ssh rac2 cat ~/.ssh/id_dsa.pub >> authorized_keys

  20. 在rac1把存储公钥信息的验证文件传送到rac2上
  21. [oracle@rac1 .ssh]$ pwd
  22. /home/oracle/.ssh
  23. [oracle@rac1 .ssh]$ scp authorized_keys rac2:'pwd'
  24. oracle@rac2's password:
  25. authorized_keys 100% 1644 1.6KB/s 00:00

  26. 设置验证文件的权限
  27. 在每一个节点执行:
  28. $ chmod 600 ~/.ssh/authorized_keys

  29. 启用用户一致性
  30. 在你要运行OUI的节点以oracle用户运行(这里选择rac1):
  31. [oracle@rac1 .ssh]$ exec /usr/bin/ssh-agent $SHELL
  32. [oracle@rac1 .ssh]$ ssh-add
  33. Identity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)
  34. Identity added: /home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)

  35. 验证ssh配置是否正确
  36. 以oracle用户在所有节点分别执行:
  37. ssh rac1 date
  38. ssh rac2 date
  39. ssh rac1-priv date
  40. ssh rac2-priv date

  41. 如果不需要输入密码就可以输出时间,说明ssh验证配置成功。必须把以上命令在两个节点都运行,每一个命令在第一次执行的时候需要输入yes。
  42. 如果不运行这些命令,即使ssh验证已经配好,安装clusterware的时候也会出现错误:
  43. The specified nodes are not clusterable
  44. 因为,配好ssh后,还需要在第一次访问时输入yes,才算是真正的无障碍访问其他服务器。
请谨记,SSH互信需要实现的就是各个节点之间可以无密码进行SSH访问。

10.为Grid集群基础软件配置存储(使用ASM)
Oracle所允许的存储主要有ASM、NFS和ACFS等,这里仅介绍ASM的配置过程。
(1)安装ASM配置软件

点击(此处)折叠或打开

  1. 依然是可以通过yum或者系统DVD光盘安装
  2. # cd /mnt/install_DVD/Packages
  3. # rpm -qi oracleasm
  4. # rpm -qi oracleasm-support
  5. # rpm -qi oracleasm-support-2.1.8-1.el6.x86_64.rpm
  6. //我们是Oracle Linux系统,此版本已经集成了oracleasm和oracleasmlib,所以就不用再安装了~
(2)规划ASM磁盘组
官方文档中规定了不同冗余策略下OCR、Voting Disk、Database和Recovery所需求的大小。


找到存储管理员,把规划好的磁盘都让他给你配置好~

(3)配置ASM

点击(此处)折叠或打开

  1. 格式化每个磁盘
  2. [root@rac1 ~]# fdisk /dev/sdb

  3. 完成后我们通过fdisk -l查看一下
  4. [root@rac1 ~]# fdisk -l

  5. [root@rac1 ~]# /usr/sbin/oracleasm configure -i
  6. Default user to own the driver interface []: grid
  7. Default group to own the driver interface []: asmadmin
  8. Start Oracle ASM library driver on boot (y/n) [n]: y
  9. Scan for Oracle ASM disks on boot (y/n) [y]: y

  10. [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
  11. [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc1
  12. [root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL3 /dev/sdd1

  13. 以下操作在另一个节点上进行,RAC2上操作
  14. [root@rac2 ~]# oracleasm scandisks
  15. 这里用到的是asmlib来做磁盘设备管理的,这里大家也可以使用UDEV来管理,在RHEL6中asmlib已经被废弃了,以后就是UDEV的天下

11.使用CVU检查各个节点的配置工作

千辛万苦终于到了安装前的最后一步~

点击(此处)折叠或打开

  1. [root@node1 ~]# su - grid
  2. [grid@node1 ~]$ cd grid_sw
  3. [grid@node1 grid_sw]$ ./runcluvfy.sh stage -pre crsinst -n node1,node2 -fixup -verbose
  4. 其中“grid_sw”为安装包解压出来的grid安装文件。
这一步的重点在于遇到报错怎样处理:
我这次安装遇到了PRVF-5636,此问题是由于没有DNS以及/etc/resolv.conf 的设置引起的,因为脚本要用nslookup命令去检测两个节点的连通性。

12.安装GI和RAC
(1)安装
Oracle Grid Infrastructure

安装过程中遇到了udev的报错,由于我们使用的oracleasmlib,所以直接无视~

(2)安装Oracle Database 11g with Oracle Real Application Clusters

安装Grid是难点,RAC只要Grid安装顺利基本不是问题,安装过程中也请先使用CVU进行安装前检测,本次安装过程中遇到了一些文件权限的问题,大家安装时也请多注意。尤其是ASM的权限和安装用户的家目录权限。

13.使用ASMCA和DBCA管理数据库
关于这两个管理软件网上文章很多,这里不再赘述。

鸣谢:
本文参考了众多高手的博客和文章,特此说明,以表敬意!
http://blog.itpub.net/28883355/viewspace-1125122/
http://blog.itpub.net/20674423/viewspace-1130320/

阅读(1330) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~