发布于 

Windows7 下安装 Oracle RAC11gR2

本文介绍了如何在 Window7 环境下安装 Oracle RAC11gR2 的方法以及安装过程中遇到的一些问题的解决方法

资源

  • win64_11gR2_grid
  • win64_11gR2_database_1of2
  • win64_11gR2_database_2of2

以上资源可在官网下载


安装文档以 Rac11gR2OnWindows.pdf 为准,由于文档上面有很多步骤比较省略,且更接近真实环境下的配置方案,因此找了 一篇安装步骤非常接近官方文档的博客1作为参考,同时结合其他博客进行安装

首先给出网络拓扑结构如下,后面遇到问题可以返回来作为参照

总体网络拓扑

正式开始配置


配置步骤

虚拟机准备

  1. 创建一个 Windows7 虚拟机(使用 VMware® Workstation 15 pro)
  2. 安装 jdk (版本应在 1.5 及以上)
  3. 为虚拟机添加一块网卡
  4. 克隆虚拟机

✴︎节点名称配置

修改主机名、统一用户名密码,分别更改两台服务器的主机名为 cluster1 和 cluster2,需要重启后生效,两台服务器统一使用 administrator 用户,并且保持密码一致。

修改主机名在“资源管理器->右键(计算机)->属性->更改设置(计算机名称、与和工作组)->更改“,保存后重启即可

用户必须使用 administrator 用户,需要在“资源管理器->右键(计算机)->管理->本地用户和组“中开启并设置密码

对所有节点执行上述操作,保证各节点 administrator 账户的密码相同,后续操作同样需要在 administrator 账户下进行,重启后注意切换用户

配置本地安全策略

  1. 运行 secpol.msc ,配置”安全设置->本地策略->安全选项->用户帐户控制:管理员批准模式中管理员的提升权限提示的行为”为”不提示,直接提升”。
  2. 确认”安全设置->本地策略->用户权限分配->管理审核和安全日志”中包括 Administrators 组。
  3. 运行 firewall.cpl ,关闭防火墙。

关闭防火墙需要在 “cmd->firewall.cp->高级设置->防火墙属性” 中确定防火墙状态为关闭

测试 net use

在每个节点执行 net use \\remote node name\C$

提示命令成功完成则正确,否则不正确

>>执行net use失败<<

远程注册表连接测试

运行 regedit ,选择 “文件->连接网络注册表->输入远程节点nodename” 出现注册表结构树,测试成功.(所有节点执行)

✴︎配置网络

  1. 在“网络和共享中心->更改适配器设置”中将网络适配器的名称改为”net0”和”net1”
  2. 按照拓扑图修改ip地址(net0为公网,net1为私网)

示例:

cluster1:

net0 -> Public IP: 192.168.40.230/24

net1 -> Private IP: 10.0.0.95/24

cluster2:

net0 -> Public IP: 192.168.40.232/24

net1 -> Private IP:10.0.0.97/24

  1. 在“网络和共享中心->更改适配器设置->(按下alt)高级->高级设置”中修改连接顺序为net0->net1->…
  2. 修改hosts文件:位于C:\Windows\System32\drivers\etc

示例:

#public

192.168.40.230 cluster1

192.168.40.232 cluster2

#private

10.0.0.95 cluster1-priv

10.0.0.97 cluster2-priv

#vip

192.168.40.231 cluster1-vip

192.168.40.233 cluster2-vip

#scan

192.168.40.234 cluster-scan

  1. 使用ping验证hosts文件修改是否成功

关闭DHCP媒体感知

打开注册表定位到 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 子项,新建一个 DWORD 类型的键值 DisableDHCPMediaSense ,将值修改为 1.

重启后使用命令 netsh interface ipv4 show global 验证是否成功关闭.

关闭SNP Features

1
2
C:\>netsh int tcp set global chimney=disabled
C:\>netsh int tcp set global rss=disabled

重启后使用命令 C:\>netsh interface ipv4 show global 验证是否成功关闭

停止MSDTC服务

运行 services.msc ,将 Distributed Transaction Coordinator (MSDTC) 服务停止,并设为”手动”.

同步节点时间

1、运行 Regedit 定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config 子项,将主键 MaxNegPhaseCorrection 数值修改为0,关闭注册表程序.

执行同步: C:\>W32tm /config /update (需要连接Internet)

2、或者:在 RAC2 服务器上运行命令:net time \rac1 (查看 RAC1 的当前时间)然后在 RAC2 服务器上运行命令:net time \rac1 /set /y (设置 RAC2 时间与 RAC1 同 步)(建议使用这种方式)

检查环境变量

计算机 右键->属性->高级系统设置->环境变量,确认变量TMP和TEMP值相同.

配置 DEP 和 UAC

1、分别配置两台服务器上的数据执行保护(DEP),选择‘仅为基本 windows程序和服务启用’,需要重启后才能生效(可配置完下一步后一起重启)

确认两台服务器上的 UAC,若需要配置则在重启后生效(默认不需要配置)

修改虚拟内存

由于服务器的内存为 16G,按照 Oracle 的官方文档,虚拟内存至少为实际内 存的 2 倍,此处选择在本地磁盘一个较大的空白分区(E 盘)中划分了虚拟 内存,取值范围:32G~64G,即初始值:32768MB,最大值:65536MB

✴︎配置共享磁盘

这一步与使用的虚拟机及其版本有关,这里使用的是VMware® Workstation 15 pro,使用其他如VirtualBox请自行搜索配置方式

在虚拟机中添加2块磁盘分别用作OCR_VOTE(表决磁盘)以及DATA(数据磁盘):

虚拟磁盘类型:SCSI(S)

→创建新的虚拟磁盘(第一次创建,之后使用现有的虚拟磁盘)

→磁盘大小(OCR:4G,DATA:16G,FRA:8G(如果有))、立即分配、存储为单个文件

在“虚拟机设置→选中硬盘→高级”中将新添加的虚拟设备节点按照顺序设为SCSI 1:x

在其他节点中添加相同数量的虚拟磁盘,并将设备节点一一对应设置

打开虚拟机文件(xxx.vmx)添加如下行(注意删除已存在的重复行):

1
2
3
4
5
6
7
8
9
10
11
disk.locking="FALSE"
disk.EnableUUID = "TRUE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "0"
diskLib.maxUnsyncedWrites = "0"
scsi1.shared="TRUE"
scsi1.virtualDev = "lsilogic"
scsi1.sharedBus = "VIRTUAL"
scsi1.present = "TRUE"

并在克隆的虚拟机vmx文件中额外添加如下行(取决于磁盘数量):

1
2
3
scsi1:0.mode = "independent-persistent"
scsi1:1.mode = "independent-persistent"
...

配置完成后重新打开“虚拟机设置”中可以看到克隆机显示磁盘为(独立)

>>可能存在的问题<<

开机,在“计算机→(右键)管理→磁盘管理”中可以看到刚刚添加的磁盘,同时会提示需要对磁盘进行初始化(没有弹出提示的话可以手动全部选中,点击右键→初始化磁盘),并选择使用GPT初始化

为每一个节点执行上一步操作

为每一块磁盘选择“右键→新建简单卷→不分配驱动器号或驱动器路径→不要格式化这个卷“

完成后应该显示磁盘为RAW设备

在另一台虚拟机上打开磁盘管理重新扫描磁盘即可

>>共享磁盘显示不正确<<

启用Automount (All Nodes)

进行命令行窗口,运行:

1
2
C:\> diskpart
DISKPART> AUTOMOUNT ENABLE

标记ASM磁盘

在cluster1执行以下命令(cd至 grid安装目录\asmtool)

1
E:\grid\asmtool>asmtoolg.exe

在弹出的图形化界面中进行以下操作:

选择“Add or change label“

→选中作为表决磁盘的虚拟硬盘

→修改下方标记为“OCR”

→点击下一步

这一步只需在cluster1节点下操作,并且此时只标记OCR磁盘组,用于DATA组的硬盘暂不处理

✴︎安装Grid Infrastructure (cluster1)

执行预检查

D:\11\grid>runcluvfy stage -pre crsinst -n rac1,rac2 -verbose

如果有报错,检查修改前面的设置直到预检查成功

  1. 在grid目录下执行setup.exe程序

  2. 选择“跳过软件更新”

  3. 选择‘为集群安装和配置 集群的网络基础结构’

  4. 选择‘高级安装’

  5. 选择安装语言

  6. 填写集群名称和 SCAN 名称,必须填写 hosts 文件中 SCAN IP 对应的主机名,确认去掉“配置GNS”复选框。

示例:

集群名称:mer-cluster

scan名称:cluster-scan

scan端口:1521

  1. 添加其他节点(应当显示cluster1和cluster2)

  2. 更改网络接口类型,默认选项如果不对,需要手动更改

  3. 此处选择‘自动存储管理(ASM)

  4. 选择相应的OCR磁盘组,并输入磁盘组名称OCR

示例:

磁盘组名:OCR

冗余:外部

添加磁盘:候选磁盘(选择标记为OCR的磁盘路径)

  1. 添加 ASM (ASMSnmp)口令(topsec)

由于设置的密码不符合标准,需要确认来强制使用

  1. 此处选择‘不使用 IPMI

  2. 选择软件相关目录

示例:

Oracle基目录:C:\app\Administrator

软件位置:C:\app\11.2.0\grid

  1. 先决条件检查,如果检查通过,则出现概要,如果提示失败,会有相应的提示,请根据提示 检查之前步骤中的设置是否存在问题

  2. 开始安装后,会在”网格基础结构配置“处停顿较长时间,此处也是 grid 安装成功与否的关键所在,如果此处出现问题,则需要 卸 载 grid,并检查之前所有的设置,然后再次尝试安装,直到显示成功为止。

  3. 安装成功完成

检查ora.asm资源运行状态

grid 安装完成后,如果安装成功,可在 dos 环境下通过 crs_stat –t –v 命令或者 crsctl status res -t 查看集 群启动了哪 些服务

✴︎安装RDBMS(cluster1)

执行预检查

D:\grid>runcluvfy stage -pre dbinst -n rac1,rac2 -verbose

开始安装

  1. 执行database目录下setup.exe程序

  2. 确认跳过‘指定电子邮件地址

  3. 选择“跳过软件更新”

  4. 选择‘仅安装数据库软件

  5. 查看节点名称是否正确

  6. 选择安装语言

  7. 选择安装企业版,并且勾选所有组件

  8. 选择安装路径

示例:

Oracle基目录:C:\app\Administrator

软件位置:C:\app\Administrator\product\11.2.0\db_home1

  1. 先决条件检查
  2. 安装概要
  3. 安装到此处时,执行远程安装 RAC2 节点的数据库,此时等待时间会很长, 请耐心等待
  4. ✴︎安装完成后需要根据提示在cluster2节点上执行操作(注意别随手关闭提示)

C:\app\Administrator\product\11.2.0\dbhome_1\BIN\selecthome.bat

执行过程中出现的计数器尚未安装可以忽略

>>安装RDBMS失败(不要关闭提示窗口)<<

使用ASMCA创建ASM磁盘组

  1. 在命令行下执行asmca
  2. 在磁盘组选项卡中点击新建
  3. 单击在磁盘上加载标记
  4. 参考标记OCR的方式标记DATA磁盘
  5. 标记完成后填写磁盘组为DATA,冗余为外部,选择标记的磁盘,点击确定
  6. 创建磁盘组
  7. 按照相同的方法标记和创建 FRA 磁盘组(有需要的话)
  8. 创建完成后退出.

✴︎创建数据库

执行预检查

D:\grid>runcluvfy stage -pre dbcfg -n all -d D:\app\Administrator\product\11.2.0\db1

创建数据库

D:\>dbca

>>找不到dbca命令<<

  1. 选择RAC数据库
  2. 选择创建数据库
  3. 一般用途或事务处理
  4. 配置数据库标示

示例:

配置类型:管理员管理的

全局数据库名:mer

SID前缀:mer

单击全选

  1. 配置管理选项

示例:

勾选配置Enterprise Manager

选择配置Database Control进行本地管理

不勾选预警通知与每日备份

  1. 对所有账户使用同一管理口令
  2. 使用Oracle-Managed Files,选择数据库区为刚刚标记的DATA磁盘组
  3. 输入之前设置的ASM口令
  4. 取消勾选快速恢复区
  5. 配置字符集→从字符集列表中选择→”ZHS16GBK - GBK16位简体中文“
  6. 数据库存储
  7. 创建数据库
  8. 数据库概要
  9. 等待创建完成

>>数据库创建失败<<

数据库创建完成中可能弹出提示如下:

捕获4

此时按照提示在相应节点上(此处为cluster2)执行命令:

首先确定dbconsole状态:

​ C:\>emctl status dbconsole

若显示:Environment variable ORACLE_UNQNAME not defined. Please define it.

则设置环境变量ORACLE_UNQNAME:

​ C:\>set ORACLE_UNQNAME=mer

若提示其他(如sid)未定义,则也设置相应的值

之后执行提示的第二步命令:

​ C:\…\db_home\bin\emctl.bat start dbconsole

执行完毕后回到cluster1节点点击确定提示集群数据库创建完成,并返回管理url

捕获5

点击口令管理,解锁scott账户,设定密码

至此集群安装完成,在web端输入db control url即可访问管理登录界面,使用

用户名:SYSTEM

密码:topsec(之前设置的统一管理密码)

即可登录到集群管理界面

捕获6

>>登录失败<<


可能遇到的问题及解决方法

1、执行net use失败

错误号5,拒绝访问:很可能你使用的用户不是管理员权限的,先提升权限;
错误号51,Windows无法找到网络路径:网络有问题;
错误号53,找不到网络路径:ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);
错误号67,找不到网络名:你的lanmanworkstation服务未启动或者目标删除了ipc$;
错误号1219,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个ipc$,请删除再连;
错误号1326,未知的用户名或错误密码:原因很明显了;
错误号1792,试图登录,但是网络登录服务没有启动:目标NetLogon服务未启动;
错误号2242,此用户的密码已经过期:目标有帐号策略,强制定期要求更改密码;

  • 确定当前登录用户为administrator
  • 确定已为administrator用户设定密码
  • 执行net share确定包含C$
  • 在”Windows+R”中执行secpol.msc,确定“安全设置→本地策略→安全选项”中“网络访问:本地账户的共享和安全模型”设置为“经典:对本地用户…“

2、vmx文件中可能存在的问题

在多数的博客中,设置disk.EnableUUIDscsi1.virtualDev的值为如下

1
2
disk.EnableUUID = "TRUE"
scsi1.virtualDev = "lsilogic"

但在少数博客中将这个值设置(或保持原来的值)为

1
2
disk.EnableUUID = "FALSE"
scsi1.virtualDev = "lsisas1068"

经测试这两种值似乎不影响共享磁盘的效果,但这里仍旧推荐使用第一种的配置值

3、共享磁盘显示不正确

检查是否所有节点都显示磁盘以联机,尝试重新配置

4、安装RDBMS失败

  • 预检查成功,但安装时提示对于节点磁盘空间的先决检查失败

可以忽略该问题,对后续安装过程不造成影响

  • 安装中途cluster2死机或重启导致安装中断

暂时不要关闭提示窗口,重启cluster2并切换至administrator账户,等待至集群服务启动后(各vip、scan-ip可以ping通)返回cluster1点击确定可以继续安装

  • 所选安装与指定 Oracle 主目录中已安装的软件冲突 的问题

正确的做法是卸载RDBMS,清除相关文件、注册表以及服务并重新安装,但是没有找到相关的文档,删除所有Oracle项又会对以安装的grid项造成影响,因此此处选择修改数据库软件安装路径,将dbhome_1修改为dbhome_2,修改后可能会出现“无法启动/关闭/找到指定路径 OracleMTSRecoveryService”,解决方法同下

  • OracleMTSRecoveryService 无法启动/关闭/找到指定路径

首先打开Win+R,“(输入)services.msc→(找到)OracleMTSRecoveryService “,若该服务不存在则不适用于下述解决方法,初次安装时提示无法启动不适用

确定该服务存在并确定其启动类型为自动后,打开Win+R,“(输入)regedit→(找到)HKEY_LOCAL_MACHINE→SYSTEM→CurrentControlSet→services→OracleMTSRecoveryService”,修改ImagePath的值为新的安装路径(dbhome_2),并对以下位置进行同样的修改:

HKEY_LOCAL_MACHINE→SYSTEM→CurrentControlSet→services→OracleMTSRecoveryService

HKEY_LOCAL_MACHINE→SYSTEM→ControlSet001→services→OracleMTSRecoveryService

HKEY_LOCAL_MACHINE→SYSTEM→ControlSet002→services→OracleMTSRecoveryService

其他节点的对应位置

修改完成后点击确定关闭提示窗口继续安装

若是初次安装时提示无法启动OracleMTSRecoveryService服务,则在cluster2节点打开Win+R,“(输入)services.msc→(找到)OracleRemExecService “,若ImagePath中的路径在Temp后有两个\,则删除后刷新注册表(重启explorer),返回cluster1节点点击重试即可

5、数据库创建失败

  • ‘dbca’ 不是内部或外部命令,也不是可运行的程序或批处理文件:

重启cmd,若仍找不到命令请确定RDBMS安装正确

  • 配置em失败,提示如下:

捕获2

该问题未知明确的解决流程,首先尝试重新运行dbca,若再次失败则按照提示运行使用emca脚本,命令为

emca -config dbcontrol db -repos create

按照提示输入

捕获3

确定后可能提示实例不存在或其他错误,返回重新执行dbca,若依旧失败需自行寻找解决办法

已明确的:

​ 不需要配置监听程序,即使查看监听程序不存在

​ 此时emca执行失败是正常的,create或是recreate

​ 大概率在emca失败后重新执行dbca可以解决该问题(可能的原因,emca执行过程中创建了监听器等dbca所需的环境)

6、登录失败

若确定用户名/密码正确,尝试重启cluster

重启后执行crsctl check crs,确定连接正常后再行尝试登录

若依旧失败尝试使用以下命令(administrator账户下)

1
2
3
4
5
6
7
8
(1)以sysdba身份登录,不需要提供用户名和密码。
  sqlplus /as sysdba ;
 
(2)为用户解锁。
alter user system account unlock;

(3)重新设定密码。
alter user system identified by system123456;

更多

任何情况下提示如下问题时:

CRS-4639:无法连接 Oracle 高可用性服务,ohasd.bin 未运行或 ohasd.bin 虽在运行但无 init.ohasd 或其他进程

CRS-4530:联系集群同步服务守护进程时出现通信故障,ocssd.bin 未运行

CRS-4535:无法与集群就绪服务通信,crsd.bin 未运行

请检查crsctl check crs是否返回对应服务正常,若刚重启节点,请等待一段时间,否则请重启节点再试

安装完成后的检查项:

1
2
3
4
5
6
7
8
9
crs_stat -t -v

srvctl status listener -n cluster1

srvctl status listener -n cluster2

srvctl config database -d mer

srvctl status database -d mer

参考