RAC下查看实例名与节点名之间关系
ORACLE 提供了一个全局数据字典视图 gv$instance,可以用来查询 实例名和节点名之间的关系
SQL>select instance_name,INSTANCE_NUMBER,HOST_NAME from gv$instance;
INSTANCE_NAME INSTANCE_NUMBER HOST_NAME
-------------------------------------------------
orcl1 1 node_a
orcl2 2 node_b
由于私有互联网络的重要性,安装后的调整可能在一些情况下很有必要。例如,为互联网络添加网卡
以增加其带宽或设置多种互联网络。RAC 数据库特别设置了一个用于指定内部互联的参数
cluster_interconnects,用来指定群集中的私有网络:
此参数一般在RAC环境中并不建议设置。但在网络配置上进行了某种更改后(如添加了互联网卡),则
设置是必要的。在下列的示例中,原来使用的内部网络为10.0.0.91/92,现在希望将内部网络扩展为
10.0.0.91/92和 20.0.0.1/2.
SQL>alter system set cluster_interconnects='10.0.0.91:20.0.0.1' scope=spfile sid='orcl1';
SQL>alter system set cluster_interconnects='10.0.0.91:20.0.0.1' scope=spfile sid='orcl2';
多块网卡间用冒号间隔,且需要指定更改范围是spfile,各节点分别更改。(当然,具体操作可以在
RAC任一节点上完成,因为改动的是同一个参数文件)。系统重新启动后,上面的两块网卡将用于私有网络,即IPC
内部通信。这点可以从数据库的警告文件中找到证据。
划分群集节点的角色
RAC 集群各个节点也可以设置为HACMP一样的角色:主节点和备用节点。在默认情况下,所有RAC节点将具有
同样的角色,即全部是主节点,以接受用户连接和访问。但也可以在二节点(仅二节点,多节点无此功能)
群集环境下,人为将其中的一个节点设置为主节点,另外一个作为备用节点。
方法是设置active_instance_count 参数,该参数默认为'1',例如下面的查询结果所示:
SQL>show parameters active_instance_count
NAME TYPE VALUE
------------------------------------------------------------------
active_instance_count interger
如果在所有节点上设置 active_instance_count 为1,则在RAC 启动过程中,第一个启动的实例作为主节点,
接受用户的访问和使用,第二个实例作为备用实例,当且仅当主实例失败后才接受用户的访问和使用。如果原来
的主节点重新启动,则将被作为备用节点使用。
SQL>alter sytem set active_instance_count =1 scope=spfile sid='*';
System alerted.
系统重启后更改生效。通过下面的查询我们可以得到节点的角色情况:
SQL>select INSTANCE_NUMBER,INSTANCE_NAME,INSTANCE_ROLE from gv$instance;
INSTANCE_NUMBER INSTANCE_NAME INSTANCE_ROLE
--------------------------------------------------------------
1 orcl1 secondary_instance
2 orcl2 primary_isntance
如果把active_instance_count设置为大于等于实例数2,则所有节点为主节点。
|||||||||||||||||||||||||||||||||
使用srvctl config 命令可以检索集群数据库在OCR中存储的相关信息,例如
通过下面的查询来了解cctt数据库在两个节点上的安装信息
$ srvctl config database -d cctt
cctt1 cctt1 /oracle/product/db
cctt2 cctt2 /oracle/product/db
||||||||||||||||||||||||||||||||||||
通过srvctl 来管理ASM
srvctl 可以用 status 命令查看ASM的服务状态,并使用类似于start、stop命令进行ASM组件的管理。
下面的示例显示了在节点cctt1上运行着实例cctt1,而在节点cctt2上运行着ASM实例ASM2
srvctl status asm -n cctt1
$ srvctl status asm -n cctt1
ASM instance +ASM1 is running on node cctt1.
$ srvctl status asm -n cctt2
ASM instance +ASM2 is running on node cctt2.
||||||||||||||||||||||||||||||||||||||||||||||||
$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....t1.inst application OFFLINE OFFLINE
ora....t2.inst application ONLINE ONLINE cctt2
ora.cctt.db application ONLINE ONLINE cctt1
ora....tt1.srv application ONLINE OFFLINE
ora....tt2.srv application ONLINE ONLINE cctt2
ora.....taf.cs application ONLINE ONLINE cctt1
ora....SM1.asm application ONLINE ONLINE cctt1
ora....T1.lsnr application ONLINE ONLINE cctt1
ora.cctt1.gsd application ONLINE ONLINE cctt1
ora.cctt1.ons application ONLINE ONLINE cctt1
ora.cctt1.vip application ONLINE ONLINE cctt1
ora....SM2.asm application ONLINE ONLINE cctt2
ora....T2.lsnr application ONLINE ONLINE cctt2
ora.cctt2.gsd application ONLINE ONLINE cctt2
ora.cctt2.ons application ONLINE ONLINE cctt2
ora.cctt2.vip application ONLINE ONLINE cctt2
$ srvctl start instance -d cctt -i cctt1
$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....t1.inst application ONLINE ONLINE cctt1
ora....t2.inst application ONLINE ONLINE cctt2
ora.cctt.db application ONLINE ONLINE cctt1
ora....tt1.srv application ONLINE ONLINE cctt1
ora....tt2.srv application ONLINE ONLINE cctt2
ora.....taf.cs application ONLINE ONLINE cctt1
ora....SM1.asm application ONLINE ONLINE cctt1
ora....T1.lsnr application ONLINE ONLINE cctt1
ora.cctt1.gsd application ONLINE ONLINE cctt1
ora.cctt1.ons application ONLINE ONLINE cctt1
ora.cctt1.vip application ONLINE ONLINE cctt1
ora....SM2.asm application ONLINE ONLINE cctt2
ora....T2.lsnr application ONLINE ONLINE cctt2
ora.cctt2.gsd application ONLINE ONLINE cctt2
ora.cctt2.ons application ONLINE ONLINE cctt2
ora.cctt2.vip application ONLINE ONLINE cctt2