本文将一步步的介绍关于如何在Oracle Enterprise Linux 6的发行版上部署Oracle database 12c RAC。
由于本地资源有限,本文将部署两节点的RAC。

环境说明:
本文的存储服务器与节点服务器均通过VMware Workstation虚拟机实现。
共享存储:
vm_openfiler_status_1
Hostname:openfiler
IP:192.168.223.132

节点服务器:
vm_node_server_status_1
节点一:
Hostname: ora12c1
IP:192.168.223.133 (基本的公共网卡IP)
节点二:
Hostname: ora12c2
IP:192.168.223.134 (基本的公共网卡IP)

介质准备:
Openfiler安装盘:
Openfiler_media
Openfiler下载路径:http://openfiler.com/

Oracle Enterprise Linux 6 Update 6安装盘:
Oracle_enterprise_linux_media
OEL6U6下载路径:https://edelivery.oracle.com/EPD/Download/get_form?egroup_aru_number=18197008

Oracle Database 12C RAC安装介质:
Oracle_database_12c_Media-s_1
Database 12C介质下载路径:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/database12c-linux-download-2240591.html

操作系统版本与内核。
对于两个节点服务器来说,操作系统统一采用“Oracle Enterprise Linux 6.6”,这个版本的Linux的版本信息与内核信息如下所示:

注意:
操作系统版本务必是:64Bit。
从Oracle 12c开始,已经不再支持32位操作系统。

针对两个节点服务器的Linux通用配置。
所谓通用配置,顾名思义,即在两个节点上都需要作出的变更。
在通用配置部分所做的所有操作都需要在稍后配置的RAC节点服务器上做出更改,而本例中,该RAC的节点服务器数量为:2。

文件:/etc/hosts

Linux软件包(RPM)
安装RPM比较方便的做法是依赖YUM实用程序。关于如何在Linux中配置YUM,本博客之前的日志里有过说明(URL:http://d-prototype.com/archives/66);也可以通过百度、谷歌找到相关知识点的论述。
YUM配置文件(For OEL 6.6)

(Pre-Request)需要保证Linux上安装了下列软件包:

通过YUM安装的指令:
yum install -y binutils.x86_64 compat-libcap1.x86_64 compat-libstdc++-33.i686 compat-libstdc++-33.x86_64 gcc.x86_64 gcc-c++.x86_64 glibc.x86_64 glibc.i686 glibc-devel.x86_64 glibc-devel.i686 ksh.x86_64 libgcc.x86_64 libgcc.i686 libstdc++.i686 libstdc++.x86_64 libstdc++-devel.i686 libstdc++-devel.x86_64 libaio.x86_64 libaio.i686 libaio-devel.i686 libaio-devel.x86_64 libXext.x86_64 libXext.i686 libXtst.x86_64 libXtst.i686 libX11.x86_64 libX11.i686 libXau.x86_64 libXau.i686 libxcb.x86_64 libxcb.i686 libXi.x86_64 libXi.i686 make.x86_64 sysstat.x86_64

文件:/etc/sysctl.conf

文件:/etc/security/limits.conf

文件:/etc/sysconfig/network
在该文件中定义NOZEROCONF为:“yes”

文件:/etc/pam.d/login

创建用户和组:

其中,
用户:grid,服务于:Grid Infrastructure。
用户:oracle,服务于:Oracle Database。

创建,主Inventory(Central)路径:

创建,Grid Infrastructure路径:

创建,Oracle Database路径:

用户环境变量:
用户:grid

用户:oracle

关闭防火墙和SELINUX:

时间同步。
关于时间同步,这里有两种方式解决:1,NTP;2,Vmware Toolbox
这里使用VMWARE TOOLBOX:

ASMLib支持。
AMSLib相关的软件包需要在Oracle官方网站下载获得,具体的路径如下:
Oracle Linux的项目首页:
http://www.oracle.com/technetwork/server-storage/linux/downloads/index.html
ASMLib_Media_1
Oracle ASMLib的项目首页:
http://www.oracle.com/technetwork/server-storage/linux/asmlib/index-101839.html
ASMLib_Media_2
这里,我的环境使用的是Oracle Linux 6,故而选择“Oracle ASMLib Downloads for Oracle Linux 6”。
ASMLib_Media_3

All ASMLib installations require the oracleasmlib and oracleasm-support packages appropriate for their machine.
所有的ASMLib安装都需要匹配特定主机的oracleasmlib以及oracleasm-support软件的支持(匹配Linux内核)

The oracleasm-support package can be downloaded from the Unbreakable Linux Network (ULN) if you have an active support subscription, or from http://public-yum.oracle.com if you do not.
oracleasm-support软件包可以在ULN(Oracle的官方Linux支持网络)获得,但需要你拥有可用的授权(需要付费,类似于“My Oracle Support”的销售策略),如果你没有可用的授权,你可以在下列网站免费获取:http://public-yum.oracle.com。

The oracleasm kernel driver is built into the Unbreakable Enterprise Kernel for Oracle Linux 6 and does not need to be installed manually.
oracleasm的内核支持默认已经部署到了Oracle Linux 6的Unbreakable Enterprise Kernel(其实,就是Linux内核,加上“Unbreakable Enterprise”的修饰,仅仅因为更华丽、逼格更高。当然,Oracle也对该内核做出了针对数据库以及Orace全线产品的优化。)中,所以你不需要单独的手动安装它。

The oracleasm kernel driver for the 64-bit (x86_64) Red Hat Compatible Kernel for Oracle Linux 6 can be installed manually from ULN or http://public-yum.oracle.com using the yum tool:
# yum install kmod-oracleasm

如果你使用的是Oracle Linux 6的“Red Hat Compatible Kernel”(这种内核的选择,在Oracle Linux6启动时的引导窗口是可以看到的,并作出影响。),那么你需要手动安装oracleasm内核模块的支持。
手动安装时有两种安装介质的来源选择,(1)通过ULN,或者(2)通过“public-yum.oracle.com”;
手动安装时通过“yum”使用程序实现,命令代码为:

Oracle Enterprise Linux 6启动时的内核选择:
Switch_Kernel_1
1
Switch_Kernel_2

2
通常情况下,都会选择:Unbreakable Enterprise Kernel。

Package:oracleasm-support。

Package:oracleasm-support安装成功后,就可以使用命令“oracleasm”了:

关于如何使用共享存储的磁盘资源有集中选择:
1.OCFS2,这种方式由于缺点很明显,所以很少有人使用了。
2.RAW
3.ASMLib,通过oracleasm将磁盘资源包装成ASM Disk。

如果使用ASMLib,需要首先对ASMLib进行初始化操作。
该部分操作可以确定以下策略:
1.通过“oracleasm createdisk …”包装的磁盘设备在Linux文件系统中会被赋予什么样的用户及组?
2.ASMLib是否在Linux启动时启动?
3.是否需要在Linux启动时刷新ASM Disk磁盘列表(包含扫描与罗列两个步骤)?
具体操作如下:

此外,需要注意的是:
上述的“user”与“group”涉及到Oracle database 11g Release2的新特性:Job Role Separation,任务角色分离。
因此,这里的设置需要与稍后“Grid Infrastructure”中“Privileged Operation System Group”中的设置一致。

查看ASM Library的状态:

关于“oracleasm”命令的更多帮助信息:

(关于共享存储的具体划分及其策略,稍后单独的描述。)

配置Openfiler。
Server_status
如上,首先,通过查看服务器状态,获得Openfiler的WEB APP地址。
在本环境中,该地址为:
https://192.168.223.132:446/
Openfiler_WebApp_Login_1
Openfielr的默认登录账户是:opefiler。
如果不知道该用户的口令,可以在后台修改,如下图所示:
Openfiler_change_passwd
然后,你就可以登录了:
Openfiler_WebApp_Login_2
登陆后的画面:
Openfiler_WebAPP_After_Login

“System”添加RAC节点到“Network Access”
Openfiler_Network_Access_Configuration

划分LUN:
Openfiler_LUN_1

Openfiler_LUN_2_Before

Openfiler_LUN_3_After

Openfiler_LUN_4

Openfiler_LUN_5

Openfiler_LUN_6_Before

Openfiler_LUN_7_After

Openfiler_LUN_8

Openfiler_LUN_9

Openfiler_LUN_10

Openfiler_LUN_11_Before

Openfiler_LUN_12_After

Openfiler_LUN_13

Openfiler_LUN_14

这样,Openfile端的配置就完成了。
如上所示,我配置了一个49G的LUN:ora12c。
接下来,需要在RAC的节点服务器获取到该LUN。

从上面的命令中可以看到,Openfiler的LUN已经成功的被节点服务器识别到,并包装为:/dev/sdb。

这里,首先划分1GB的空间作为OCR和Vote Disk的磁盘存储。

命令“partprobe /dev/sdb”的操作也需要在另外一台节点上操作:

使用“oracleasm”创建ASM Disk:

另一个节点扫描:

ASM Disk的初步操作完成。
(在后期建库的时候,还会需要划分新的数据分区,这是后续话题,对于12C RAC的架构搭建来说,这里仅需要创建针对OCR与VOTE DISK的ASM Diks就足够了)

关于SSH等价性。
SSH等价性的操作在我前面的文档以及以前的部署习惯中,会在运行OUI安装GI之前操作,但事实上从11g开始OUI提供的SSH等价性连接的功能已经很完善了,不需要像以前那样通过“ssh-keygen”或者“ssh-copy-id”那样很麻烦的操作。
(关于之前的SSH等价性配置,可以查阅本站以往的RAC文档。)
这里,本文档中,SSH等价性配置会在OUI中操作。

Grid Infrastructure部分。
上传安装介质到服务器:

用操作系统用户:grid,解压安装介质:

安装CVU:
CVU的RPM包位于安装介质的目录中:

环境变量:$DISPLAY
xmanager_passive

启动OUI:

GI1

GI2
这里选择“Standard Cluster”。
对于“Flex Cluter”:
如果启用了Flex Cluster,那么整个RAC集群的节点会被分为两大类:Hub Node一起Leaf Node。
其中只有Hub Node可以与共享存储连接,Leaf Node则只能通过Hub Node访问共享存储,而不能直接访问。
Flex Cluster架构可以让整个集群的架构更宽松,并且容纳更多的节点。

GI3
选择“Advanced Installation”

GI4

GI5
在Flex Cluster中Hub Node的列表是通过GNS VIP发布的。
所以,如果你在前面的步骤里选择了Flex Cluster,那么在这里,需要对GNS做出配置。
这里不选择GNS。

GI6
如图所示,在这里可以配置SSH等效性。

当前没有配置SSH,测试(Test)肯定失败:
GI7_SSH_1_Testing
选择“Setup”,配置SSH:
GI7_SSH_2_Setup
Setup完成后,会弹窗提示:
GI7_SSH_3_Done
这时候,节点服务器之间,用户:grid的SSH等价就配置好了,可以通过命令行验证一下:
节点一:

节点二:

验证成功。

GI8
在12C中,集群的网络配置和11g的网络配置有差别的。
在12C中,除了基本的公网和私网之外,因为Flex ASM的出现,需要额外的网络专门负责节点间的ASM元数据的传输。
由于ASM Meta Data的数据量很小,所以你可以选择像上图那样让私网与ASM网公用一个网段:ASM & Private。
或者,如下图这样,将它们分而治之:
GI8-Separe
这里,我选择分而治之。

GI9
这里选择你的OCR和Voting disk的存储方式。
总的来说,你有两种选择:文件系统,或者Oracle的自动存储管理。
在11g的时候,ASM的存储选择只有“Standard ASM”,如今,在12c中,通过上面截图可以看到新增了“Flex ASM”。
通过两个选项的描述可以看到:
在Standard ASM中,ASM实例会被配置到所有的集群节点上。
而Flex ASM中,ASM实例仅会被配置在一部分的集群节点上(Hub Node)。

GI10
默认情况下OUI的发现路径为:/dev/sd*,如果用“oracleasm”,可能这里看不到任何磁盘条目。
这时候需要调整“Discovery Path”:/dev/oracleasm/disks/*,如上图所示。
GI10_error_More_space
如果遇到这个问题,说明空间不够。
按照上文划分空间的方式,再通过“oracleasm”创建几个ASM Disk。

GI10_solution
空间不够的问题解决,“下一步”。

GI11
指定ASM的口令。

GI12
禁用IPMI。

GI13
没有需要注册到的EM Cloud。

GI14
这里的Oracle ASM Administrator Group需要与前面ASMLib配置的组一致。

GI15
GI软件的安装路径选择。

GI16
Central Inventory的路径选择。

GI17
这一步是配置是否需要OUI自动执行root.sh脚本。
在12c之前是没有这个功能的,它为12c的新特性。
你可以选择开启或者禁用该功能。
如果你选择启用,那么它可以以两种方式作用:
1.提供root口令
2.授予sudu权限

这里,我选择启用自动执行,并且以第一种方式作用(如上截图所示)。

GI18
一如既往的安装前检查。

GI19
如上,可能会有一些告警或错误,但有的是可以忽略的(SKIP)。

GI20

GI21
正在安装,请等待。
2014年10月31日16:58:55

运行脚本:
GI22
脚本执行完,在OUI的安装日志中会有所体现:
GI23_Script_result_1

GI24
GI25
这个告警可以忽略,不用太在意。

GI26

GI27
这样12C RAC的GI就安装完成了。

查看下集群的状态:

Oracle 12c RAC:数据库软件部分。
上传介质:
Database_Media_Upload
用操作系统用户:oracle,执行解压:

调用OUI:

racdb1

racdb2
这里,目前只安装数据库软件。

racdb3
安装类型可以选择三种:
单实例
RAC
RAC one Node

这里选择“RAC”。

racdb4
这里全选RAC的所有节点。

用户:oracle,SSH等价性。
和安装GI的时候一样,这里通过OUI设置SSH:
racdb5_ssh_before

racdb5_ssh_Setup

racdb5_ssh_After
命令查看:
节点一:

节点二:

SSH等价,完成。

racdb6
选择需要的语言。

racdb7
选择需要安装的数据库软件的版本。
这里选择的是企业版,它需要空间:6.4 GB。

racdb8
选择数据库软件的安装路径。
这里的路径设置,对应操作系统用户:oracle,环境变量:ORACLE_BASE、ORACLE_HOME。
命令终端:

racdb9

racdb10
OUI安装前检查。

racdb11
和GI的安装一样,也许也有一些报错,但是它们或许是可以忽略的。

racdb12

racdb13
等待:2014年11月1日14:14:54。

OUI的安装日志:

命令:tail -f /u01/app/oraInventory/logs/installActions2014-11-01_01-42-04PM.log

执行脚本:
racdb14
节点一:

节点二:

racdb15
至此,12c RAC的数据库软件安装完成。

此时的磁盘空间使用情况:

为了后面建库,这里通过“ASMCA”实用程序为集群新增一个ASM DISK GROUP:+DATA01。
磁盘资源的准备:

通过“oracleasm”制作ASM DISK:
+DATA01,/dev/sdc5。

调用“asmca”:

ASMCA_view_tab1

ASMCA_view_tab2

ASMCA_view_tab3

ASMCA_view_tab4

ASMCA_add_disk_groups_1

ASMCA_add_disk_groups_2

ASMCA_add_disk_groups_3

ASMCA_add_disk_groups_4_1

RAC:建库。
通过“dbca”实用程序建库。

dbca1

dbca2

dbca3

dbca4

dbca4_1

dbca5

dbca6

dbca7

dbca8

dbca9

dbca10

dbca11_1

dbca11_2

dbca11_3

dbca11_4

dbca12

dbca13

dbca14

dbca15

dbca16
等待。
dbca17
建库完成。

EM:https://192.168.223.127:5500/em
em1
用户:sys
权限:作为sysdba
密码:DBCA建库时指定的口令

em2

表空间状态:
em3

重做日志状态:
em4

性能中心:
em5

实例:
em6

命令行终端: