之前基于Windows工作组架构演示过Oracle RAC的搭建,GI安装过程中Skip了一些警告,Database安装过程还是有相同的警告信息,Skip后还是能完成安装。这次改用AD环境开始以为能自动解决这些告警,实际上问题依旧。没办法,网上根本没人写这块儿东西,相同的告警Linux平台都能轻松解决,放到Windows上却行不通,官方有KB,但是没有support账号,只能去仔细研读Oracle官方文档了:grid-infrastructure-installation-and-upgrade-guide-microsoft-windows.pdf
有了工作组环境下的RAC安装经验,AD环境基本雷同,这次我们先运行安装前自检,
如果你的Public网卡配置了DNS,则自检输出很尴尬的显示如下:
.\runcluvfy.bat stage -pre crsinst -n rac21,rac22 -verbose
PRVF-0002 : could not retrieve local node name
OTDBS03: DNS server failure [response code 2]
//以上是什么鬼信息?找不到相关解析记录?要知道我们的正反双向解析都是OK的哦!
还是仔细看看官方文档对于网络配置准备都说了什么:

2、禁用Public网卡的DNS注册;
3、手工配置NIC度量值;
4、指定TCP/UDP的端口区间;
具体做法如下:
1、通过注册表禁用媒体感知;
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
Value Name: DisableDHCPMediaSense
Value: 1
4、指定TCP/UDP的端口区间;
netsh int ipv4 set dynamicport udp start=9000 num=56000
netsh int ipv4 set dynamicport tcp start=9000 num=56000
netsh int ipv4 show dynamicport udp
netsh int ipv4 show dynamicport tcp


这里很奇怪,无论怎样折腾DNS服务器,自检都是两行报错,即使将DNS服务部署在RAC节点上,地址设置成127.0.0.1都没有用,一度怀疑自检脚本有问题或是DNS不支持Windows家的,我没有用Linux下的Named Server去验证,后面有时间可以一试,最后选择不配DNS地址,但此时别忘了配置你的hosts信息,这里提醒下即使所有的record都在DNS上,这里的hosts记录也不能少:

192.168.0.21 rac21.citrix.org.cn
192.168.0.22 rac22.citrix.org.cn
192.168.0.24 rac-cluster-scan.citrix.org.cn
192.168.0.27 rac-cluster-scan.citrix.org.cn
192.168.0.28 rac-cluster-scan.citrix.org.cn
192.168.0.25 rac21-vip.citrix.org.cn
192.168.0.26 rac22-vip.citrix.org.cn
10.254.100.21 rac21-pri-ip.citrix.org.cn
10.254.100.22 rac22-pri-ip.citrix.org.cn
借助ps命令解压缩:
PS C:\> Expand-Archive -LiteralPath C:\WINDOWS.X64_193000_db_home.zip -DestinationPath C:\app\19.0.0\database
PS C:\> Expand-Archive -LiteralPath C:\WINDOWS.X64_193000_grid_home.zip -DestinationPath C:\app\19.0.0\grid
看看输出和//后的注释信息:
PS C:\app\19.0.0\grid> .\runcluvfy.bat stage -pre crsinst -n rac21,rac22 -verbose
java.lang.RuntimeException: no nameservers provided
at sun.net.spi.nameservice.dns.DNSNameService.<init>(DNSNameService.java:256)
at sun.net.spi.nameservice.dns.DNSNameServiceDescriptor.createNameService(DNSNameServiceDescriptor.java:35)
at java.net.InetAddress$3.run(InetAddress.java:951)
at java.net.InetAddress$3.run(InetAddress.java:940)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.InetAddress.createNSProvider(InetAddress.java:939)
at java.net.InetAddress.<clinit>(InetAddress.java:984)
at sun.management.VMManagementImpl.getVmId(VMManagementImpl.java:140)
at sun.management.RuntimeImpl.getName(RuntimeImpl.java:59)
at oracle.ops.mgmt.trace.Trace.<clinit>(Trace.java:198)
at oracle.ops.verification.client.CluvfyDriver.main(CluvfyDriver.java:224)
Cannot create name service:dns,sun: java.lang.RuntimeException: no nameservers provided //没检测到DNS信息
Verifying Physical Memory ...
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
rac22 15.9996GB (1.6776756E7KB) 8GB (8388608.0KB) passed
rac21 15.9996GB (1.6776756E7KB) 8GB (8388608.0KB) passed
Verifying Physical Memory ...PASSED
Verifying Available Physical Memory ...
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
rac22 7.1884GB (7537604.0KB) 50MB (51200.0KB) passed
rac21 7.0141GB (7354840.0KB) 50MB (51200.0KB) passed
Verifying Available Physical Memory ...PASSED
Verifying Swap Size ...
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
rac22 18.8746GB (1.9791412E7KB) 15.9996GB (1.6776756E7KB) passed
rac21 18.8746GB (1.9791412E7KB) 15.9996GB (1.6776756E7KB) passed
Verifying Swap Size ...PASSED
Verifying Free Space: rac22:C:\app\19.0.0\grid,rac22:C:\Users\root\AppData\Local\Temp ...
Path Node Name Mount point Available Required Status
---------------- ------------ ------------ ------------ ------------ ------------
C:\app\19.0.0\grid rac22 C 75.6046GB 7GB passed
C:\Users\root\AppData\Local\Temp rac22 C 75.6046GB 1GB passed
Verifying Free Space: rac22:C:\app\19.0.0\grid,rac22:C:\Users\root\AppData\Local\Temp ...PASSED
Verifying Free Space: rac21:C:\app\19.0.0\grid,rac21:C:\Users\root\AppData\Local\Temp ...
Path Node Name Mount point Available Required Status
---------------- ------------ ------------ ------------ ------------ ------------
C:\app\19.0.0\grid rac21 C 75.3999GB 7GB passed
C:\Users\root\AppData\Local\Temp rac21 C 75.3999GB 1GB passed
Verifying Free Space: rac21:C:\app\19.0.0\grid,rac21:C:\Users\root\AppData\Local\Temp ...PASSED
Verifying Architecture ...
Node Name Available Required Status
------------ ------------------------ ------------------------ ----------
rac22 64-bit 64-bit passed
rac21 64-bit 64-bit passed
Verifying Architecture ...PASSED
Verifying Host name ...PASSED
Verifying Node Connectivity ...
Interface information for node "rac22"
Name IP Address Subnet Gateway Def. Gateway HW Address MTU
------ --------------- --------------- --------------- --------------- ----------------- ------
private 10.254.100.22 10.254.100.0 192.168.0.254 00:50:56:89:0A:B2 1500
public 192.168.0.22 192.168.0.0 192.168.0.254 00:50:56:89:FC:90 1500
public 192.168.0.26 192.168.0.0 192.168.0.254 00:50:56:89:FC:90 1500
public 192.168.0.27 192.168.0.0 192.168.0.254 00:50:56:89:FC:90 1500
public 192.168.0.28 192.168.0.0 192.168.0.254 00:50:56:89:FC:90 1500
Interface information for node "rac21"
Name IP Address Subnet Gateway Def. Gateway HW Address MTU
------ --------------- --------------- --------------- --------------- ----------------- ------
private 10.254.100.21 10.254.100.0 192.168.0.254 00:50:56:89:D0:8B 1500
public 192.168.0.21 192.168.0.0 192.168.0.254 00:50:56:89:7B:98 1500
public 192.168.0.24 192.168.0.0 192.168.0.254 00:50:56:89:7B:98 1500
public 192.168.0.25 192.168.0.0 192.168.0.254 00:50:56:89:7B:98 1500
Check: MTU consistency on the private interfaces of subnet "10.254.100.0"
Node Name IP Address Subnet MTU
---------------- ------------ ------------ ------------ ----------------
rac22 private 10.254.100.22 10.254.100.0 1500
rac21 private 10.254.100.21 10.254.100.0 1500
Check: MTU consistency of the subnet "192.168.0.0".
Node Name IP Address Subnet MTU
---------------- ------------ ------------ ------------ ----------------
rac22 public 192.168.0.22 192.168.0.0 1500
rac22 public 192.168.0.26 192.168.0.0 1500
rac22 public 192.168.0.27 192.168.0.0 1500
rac22 public 192.168.0.28 192.168.0.0 1500
rac21 public 192.168.0.21 192.168.0.0 1500
rac21 public 192.168.0.24 192.168.0.0 1500
rac21 public 192.168.0.25 192.168.0.0 1500
Source Destination Connected?
------------------------------ ------------------------------ ----------------
rac21[public:192.168.0.21] rac22[public:192.168.0.26] yes
rac21[public:192.168.0.21] rac22[public:192.168.0.27] yes
rac21[public:192.168.0.21] rac22[public:192.168.0.28] yes
rac21[public:192.168.0.21] rac22[public:192.168.0.22] yes
rac21[public:192.168.0.21] rac21[public:192.168.0.24] yes
rac21[public:192.168.0.21] rac21[public:192.168.0.25] yes
rac22[public:192.168.0.26] rac22[public:192.168.0.27] yes
rac22[public:192.168.0.26] rac22[public:192.168.0.28] yes
rac22[public:192.168.0.26] rac22[public:192.168.0.22] yes
rac22[public:192.168.0.26] rac21[public:192.168.0.24] yes
rac22[public:192.168.0.26] rac21[public:192.168.0.25] yes
rac22[public:192.168.0.27] rac22[public:192.168.0.28] yes
rac22[public:192.168.0.27] rac22[public:192.168.0.22] yes
rac22[public:192.168.0.27] rac21[public:192.168.0.24] yes
rac22[public:192.168.0.27] rac21[public:192.168.0.25] yes
rac22[public:192.168.0.28] rac22[public:192.168.0.22] yes
rac22[public:192.168.0.28] rac21[public:192.168.0.24] yes
rac22[public:192.168.0.28] rac21[public:192.168.0.25] yes
rac22[public:192.168.0.22] rac21[public:192.168.0.24] yes
rac22[public:192.168.0.22] rac21[public:192.168.0.25] yes
rac21[public:192.168.0.24] rac21[public:192.168.0.25] yes
Source Destination Connected?
------------------------------ ------------------------------ ----------------
rac21[private:10.254.100.21] rac22[private:10.254.100.22] yes
Verifying subnet mask consistency for subnet "192.168.0.0" ...PASSED
Verifying subnet mask consistency for subnet "10.254.100.0" ...PASSED
Verifying Node Connectivity ...PASSED
Verifying Multicast or broadcast check ...
Checking subnet "10.254.100.0" for multicast communication with multicast group "224.0.0.251"
Verifying Multicast or broadcast check ...PASSED
Verifying Windows firewall status ...
Node Name Enabled? Comment
------------ ------------------------ ------------------------
rac22 no passed
rac21 no passed
Verifying Windows firewall status ...PASSED
Verifying ASM Integrity ...PASSED
Verifying Network Time Protocol (NTP) ... //这里是关于NTP的几个配置,需要修改注册表
Verifying service "W32Time" is running ...PASSED
Verifying service "W32Time" registry settings ...PASSED
Verifying Network Time Protocol (NTP) ...PASSED //加入AD后,时间同步自动解决;
Verifying Check: If user "root" is a domain user ...PASSED //这里可以看出Oracle还是建议大家基于AD环境构建RAC,可实际上很少有人这么做;此外还要将域用户root加入到本地Administrators用户组;
Verifying Time zone consistency ...PASSED
Verifying Time offset between nodes ...PASSED
Verifying Disk Automount feature status ... //RAW磁盘都要配置Automount;
Node Name Enabled? Comment
------------ ------------------------ ------------------------
rac22 yes passed
rac21 yes passed
Verifying Disk Automount feature status ...PASSED
Verifying Check NIC bind order ...
Node Name Status
------------------------------------ ------------------------
rac22 passed
rac21 passed
Node Name Status
------------------------------------ ------------------------
rac22 passed
rac21 passed
Verifying Check NIC bind order ...PASSED
Verifying Windows user account consistency check across nodes ...PASSED
Verifying Grid Infrastructure home path: C:\app\19.0.0\grid ...
Verifying 'C:\app\19.0.0\grid' ...PASSED
Verifying Grid Infrastructure home path: C:\app\19.0.0\grid ...PASSED
Verifying Cluster nodes are not Windows domain controllers. ... //不允许在DC上安装Cluster节点
Node Name Is Windows domain controller Status
------------ ------------------------ ------------------------
rac22 no passed
rac21 no passed
Verifying Cluster nodes are not Windows domain controllers. ...PASSED
Verifying ASM Filter Driver configuration ...PASSED
Pre-check for cluster services setup was successful. //这里结果很重要;
CVU operation performed: stage -pre crsinst
Date: Jan 19, 2020 1:19:29 PM
CVU home: C:\app\19.0.0\grid\
User: CITRIX\root
PS C:\app\19.0.0\grid>
其中提到的几个重要的配置如下:


综上所述,我们采取不配置DNS的方式进行GI和Database的安装,果然达到理想效果,GI和Database全程不再有任何基础环境报错:





全部安装完成后添加上DNS记录即可。视频演示如下:
如果看不到,只能自己想办法了!
https://www.youtube.com/watch?v=eUwkdlGJ6-s