11gR2 Clusterware and Grid Home – What You Need to Know

这篇文章详细的介绍了11g clusterware整体结构,记录一下

DETAILS

  • 11gR2 Clusterware Key Facts
  • 11gR2 Clusterware is required to be up and running prior to installing a 11gR2 Real Application Clusters database.
  • The GRID home consists of the Oracle Clusterware and ASM. ASM should not be in a separate home.
  • The 11gR2 Clusterware can be installed in “Standalone” mode for ASM and/or “Oracle Restart” single node support. This clusterware is a subset of the full clusterware described in this document.
  • The 11gR2 Clusterware can be run by itself or on top of vendor clusterware. See the certification matrix for certified combinations. Ref: Note: 184875.1 “How To Check The * Certification Matrix for Real Application Clusters”
  • The GRID Home and the RAC/DB Home must be installed in different locations.
  • The 11gR2 Clusterware requires a shared OCR files and voting files. These can be stored on ASM or a cluster filesystem.
  • The OCR is backed up automatically every 4 hours to /cdata// and can be restored via ocrconfig.
  • The voting file is backed up into the OCR at every configuration change and can be restored via crsctl.
  • The 11gR2 Clusterware requires at least one private network for inter-node communication and at least one public network for external communication. Several virtual IPs need to be registered with DNS. This includes the node VIPs (one per node), SCAN VIPs (three). This can be done manually via your network administrator or optionally you could configure the “GNS” (Grid Naming Service) in the Oracle clusterware to handle this for you (note that GNS requires its own VIP).
  • A SCAN (Single Client Access Name) is provided to clients to connect to. For more information on SCAN see Note: 887522.1
  • The root.sh script at the end of the clusterware installation starts the clusterware stack. For information on troubleshooting root.sh issues see Note: 1053970.1
  • Only one set of clusterware daemons can be running per node.
  • On Unix, the clusterware stack is started via the init.ohasd script referenced in /etc/inittab with “respawn”.
  • A node can be evicted (rebooted) if a node is deemed to be unhealthy. This is done so that the health of the entire cluster can be maintained. For more information on this see: Note: 1050693.1 “Troubleshooting 11.2 Clusterware Node Evictions (Reboots)”
  • Either have vendor time synchronization software (like NTP) fully configured and running or have it not configured at all and let CTSS handle time synchronization. See Note: 1054006.1 for more information.
  • If installing DB homes for a lower version, you will need to pin the nodes in the clusterware or you will see ORA-29702 errors. See Note 946332.1 and Note:948456.1 for more information.
  • The clusterware stack can be started by either booting the machine, running “crsctl start crs” to start the clusterware stack, or by running “crsctl start cluster” to start the clusterware on all nodes. Note that crsctl is in the /bin directory. Note that “crsctl start cluster” will only work if ohasd is running.
  • The clusterware stack can be stopped by either shutting down the machine, running “crsctl stop crs” to stop the clusterware stack, or by running “crsctl stop cluster” to stop the clusterware on all nodes. Note that crsctl is in the /bin directory.
  • Killing clusterware daemons is not supported.
  • Instance is now part of .db resources in “crsctl stat res -t” output, there is no separate .inst resource for 11gR2 instance.

Clusterware Startup Sequence

The following is the Clusterware startup sequence (image from the “Oracle Clusterware Administration and Deployment Guide):

Don’t let this picture scare you too much. You aren’t responsible for managing all of these processes, that is the Clusterware’s job!

Short summary of the startup sequence: INIT spawns init.ohasd (with respawn) which in turn starts the OHASD process (Oracle High Availability Services Daemon). This daemon spawns 4 processes.

Level 1: OHASD Spawns:

  • cssdagent – Agent responsible for spawning CSSD.
  • orarootagent – Agent responsible for managing all root owned ohasd resources.
  • oraagent – Agent responsible for managing all oracle owned ohasd resources.
  • cssdmonitor – Monitors CSSD and node health (along wth the cssdagent).

Level 2: OHASD rootagent spawns:

  • CRSD – Primary daemon responsible for managing cluster resources.
  • CTSSD – Cluster Time Synchronization Services Daemon
  • Diskmon
  • ACFS (ASM Cluster File System) Drivers

Level 2: OHASD oraagent spawns:

  • MDNSD – Used for DNS lookup
  • GIPCD – Used for inter-process and inter-node communication
  • GPNPD – Grid Plug & Play Profile Daemon
  • EVMD – Event Monitor Daemon
  • ASM – Resource for monitoring ASM instances

Level 3: CRSD spawns:

  • orarootagent – Agent responsible for managing all root owned crsd resources.
  • oraagent – Agent responsible for managing all oracle owned crsd resources.

Level 4: CRSD rootagent spawns:

  • Network resource – To monitor the public network
  • SCAN VIP(s) – Single Client Access Name Virtual IPs
  • Node VIPs – One per node
  • ACFS Registery – For mounting ASM Cluster File System
  • GNS VIP (optional) – VIP for GNS

Level 4: CRSD oraagent spawns:

  • ASM Resouce – ASM Instance(s) resource

  • Diskgroup – Used for managing/monitoring ASM diskgroups.

  • DB Resource – Used for monitoring and managing the DB and instances

  • SCAN Listener – Listener for single client access name, listening on SCAN VIP

  • Listener – Node listener listening on the Node VIP

  • Services – Used for monitoring and managing services

  • ONS – Oracle Notification Service

  • eONS – Enhanced Oracle Notification Service

  • GSD – For 9i backward compatibility

  • GNS (optional) – Grid Naming Service – Performs name resolution

    This image shows the various levels more clearly:

Important Log Locations

Clusterware daemon logs are all under /log/. Structure under /log/:

alert.log – look here first for most clusterware issues

./admin:

./agent:

./agent/crsd:

./agent/crsd/oraagent_oracle:

./agent/crsd/ora_oc4j_type_oracle:

./agent/crsd/orarootagent_root:

./agent/ohasd:

./agent/ohasd/oraagent_oracle:

./agent/ohasd/oracssdagent_root:

./agent/ohasd/oracssdmonitor_root:

./agent/ohasd/orarootagent_root:

./client:

./crsd:

./cssd:

./ctssd:

./diskmon:

./evmd:

./gipcd:

./gnsd:

./gpnpd:

./mdnsd:

./ohasd:

./racg:

./racg/racgeut:

./racg/racgevtf:

./racg/racgmain:

./srvm:

The cfgtoollogs dir under <GRID_HOME> and $ORACLE_BASE contains other important logfiles. Specifically for rootcrs.pl and configuration assistants like ASMCA, etc&#8230;

ASM logs live under $ORACLE_BASE/diag/asm/+asm//trace

The diagcollection.pl script under /bin can be used to automatically collect important files for support. Run this as the root user.

Clusterware Resource Status Check

The following command will display the status of all cluster resources:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
$ ./crsctl status resource -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATADG.dg
ONLINE ONLINE racbde1
ONLINE ONLINE racbde2
ora.LISTENER.lsnr
ONLINE ONLINE racbde1
ONLINE ONLINE racbde2
ora.SYSTEMDG.dg
ONLINE ONLINE racbde1
ONLINE ONLINE racbde2
ora.asm
ONLINE ONLINE racbde1 Started
ONLINE ONLINE racbde2 Started
ora.eons
ONLINE ONLINE racbde1
ONLINE ONLINE racbde2
ora.gsd
OFFLINE OFFLINE racbde1
OFFLINE OFFLINE racbde2
ora.net1.network
ONLINE ONLINE racbde1
ONLINE ONLINE racbde2
ora.ons
ONLINE ONLINE racbde1
ONLINE ONLINE racbde2
ora.registry.acfs
ONLINE ONLINE racbde1
ONLINE ONLINE racbde2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE racbde1
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE racbde2
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE racbde2
ora.oc4j
1 OFFLINE OFFLINE
ora.rac.db
1 ONLINE ONLINE racbde1 Open
2 ONLINE ONLINE racbde2 Open
ora.racbde1.vip
1 ONLINE ONLINE racbde1
ora.racbde2.vip
1 ONLINE ONLINE racbde2
ora.scan1.vip
1 ONLINE ONLINE racbde1
ora.scan2.vip
1 ONLINE ONLINE racbde2
ora.scan3.vip
1 ONLINE ONLINE racbde2

Clusterware Resource Administration

Srvctl and crsctl are used to manage clusterware resources. The general rule is to use srvctl for whatever resource management you can. Crsctl should only be used for things that you cannot do with srvctl (like start the cluster). Both have a help feature to see the available syntax.

Note that the following only shows the available srvctl syntax. For additional explanation on what these commands do, see the Oracle Documentation.

Srvctl syntax:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
$ srvctl -h
Usage: srvctl [-V]
Usage: srvctl add database -d >db_unique_name> -o >oracle_home> [-m >domain_name>] [-p >spfile>] [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY | SNAPSHOT_STANDBY}] [-s >start_options>] [-t >stop_options>] [-n >db_name>] [-y {AUTOMATIC | MANUAL}] [-g ">serverpool_list>"] [-x >node_name>] [-a ">diskgroup_list>"]
Usage: srvctl config database [-d >db_unique_name> [-a] ]
Usage: srvctl start database -d >db_unique_name> [-o >start_options>]
Usage: srvctl stop database -d >db_unique_name> [-o >stop_options>] [-f]
Usage: srvctl status database -d >db_unique_name> [-f] [-v]
Usage: srvctl enable database -d >db_unique_name> [-n >node_name>]
Usage: srvctl disable database -d >db_unique_name> [-n >node_name>]
Usage: srvctl modify database -d >db_unique_name> [-n >db_name>] [-o >oracle_home>] [-u >oracle_user>] [-m >domain>] [-p >spfile>] [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY | SNAPSHOT_STANDBY}] [-s >start_options>] [-t >stop_options>] [-y {AUTOMATIC | MANUAL}] [-g ">serverpool_list>" [-x >node_name>]] [-a ">diskgroup_list>"|-z]
Usage: srvctl remove database -d >db_unique_name> [-f] [-y]
Usage: srvctl getenv database -d >db_unique_name> [-t ">name_list>"]
Usage: srvctl setenv database -d >db_unique_name> {-t >name>=>val>[,>name>=>val>,...] | -T >name>=>val>}
Usage: srvctl unsetenv database -d >db_unique_name> -t ">name_list>"

Usage: srvctl add instance -d >db_unique_name> -i >inst_name> -n >node_name> [-f]
Usage: srvctl start instance -d >db_unique_name> {-n >node_name> [-i >inst_name>] | -i >inst_name_list>} [-o >start_options>]
Usage: srvctl stop instance -d >db_unique_name> {-n >node_name> | -i >inst_name_list>} [-o >stop_options>] [-f]
Usage: srvctl status instance -d >db_unique_name> {-n >node_name> | -i >inst_name_list>} [-f] [-v]
Usage: srvctl enable instance -d >db_unique_name> -i ">inst_name_list>"
Usage: srvctl disable instance -d >db_unique_name> -i ">inst_name_list>"
Usage: srvctl modify instance -d >db_unique_name> -i >inst_name> { -n >node_name> | -z }
Usage: srvctl remove instance -d >db_unique_name> [-i >inst_name>] [-f] [-y]

Usage: srvctl add service -d >db_unique_name> -s >service_name> {-r ">preferred_list>" [-a ">available_list>"] [-P {BASIC | NONE | PRECONNECT}] | -g >server_pool> [-c {UNIFORM | SINGLETON}] } [-k >net_num>] [-l [PRIMARY][,PHYSICAL_STANDBY][,LOGICAL_STANDBY][,SNAPSHOT_STANDBY]] [-y {AUTOMATIC | MANUAL}] [-q {TRUE|FALSE}] [-x {TRUE|FALSE}] [-j {SHORT|LONG}] [-B {NONE|SERVICE_TIME|THROUGHPUT}] [-e {NONE|SESSION|SELECT}] [-m {NONE|BASIC}] [-z >failover_retries>] [-w >failover_delay>]
Usage: srvctl add service -d >db_unique_name> -s >service_name> -u {-r ">new_pref_inst>" | -a ">new_avail_inst>"}
Usage: srvctl config service -d >db_unique_name> [-s >service_name>] [-a]
Usage: srvctl enable service -d >db_unique_name> -s ">service_name_list>" [-i >inst_name> | -n >node_name>]
Usage: srvctl disable service -d >db_unique_name> -s ">service_name_list>" [-i >inst_name> | -n >node_name>]
Usage: srvctl status service -d >db_unique_name> [-s ">service_name_list>"] [-f] [-v]
Usage: srvctl modify service -d >db_unique_name> -s >service_name> -i >old_inst_name> -t >new_inst_name> [-f]
Usage: srvctl modify service -d >db_unique_name> -s >service_name> -i >avail_inst_name> -r [-f]
Usage: srvctl modify service -d >db_unique_name> -s >service_name> -n -i ">preferred_list>" [-a ">available_list>"] [-f]
Usage: srvctl modify service -d >db_unique_name> -s >service_name> [-c {UNIFORM | SINGLETON}] [-P {BASIC|PRECONNECT|NONE}] [-l [PRIMARY][,PHYSICAL_STANDBY][,LOGICAL_STANDBY][,SNAPSHOT_STANDBY]] [-y {AUTOMATIC | MANUAL}][-q {true|false}] [-x {true|false}] [-j {SHORT|LONG}] [-B {NONE|SERVICE_TIME|THROUGHPUT}] [-e {NONE|SESSION|SELECT}] [-m {NONE|BASIC}] [-z >integer>] [-w >integer>]
Usage: srvctl relocate service -d >db_unique_name> -s >service_name> {-i >old_inst_name> -t >new_inst_name> | -c >current_node> -n >target_node>} [-f]
Specify instances for an administrator-managed database, or nodes for a policy managed database
Usage: srvctl remove service -d >db_unique_name> -s >service_name> [-i >inst_name>] [-f]
Usage: srvctl start service -d >db_unique_name> [-s ">service_name_list>" [-n >node_name> | -i >inst_name>] ] [-o >start_options>]
Usage: srvctl stop service -d >db_unique_name> [-s ">service_name_list>" [-n >node_name> | -i >inst_name>] ] [-f]

Usage: srvctl add nodeapps { { -n >node_name> -A >name|ip>/>netmask>/[if1[|if2...]] } | { -S >subnet>/>netmask>/[if1[|if2...]] } } [-p >portnum>] [-m >multicast-ip-address>] [-e >eons-listen-port>] [-l >ons-local-port>] [-r >ons-remote-port>] [-t >host>[:>port>][,>host>[:>port>]...]] [-v]
Usage: srvctl config nodeapps [-a] [-g] [-s] [-e]
Usage: srvctl modify nodeapps {[-n >node_name> -A >new_vip_address>/>netmask>[/if1[|if2|...]]] | [-S >subnet>/>netmask>[/if1[|if2|...]]]} [-m >multicast-ip-address>] [-p >multicast-portnum>] [-e >eons-listen-port>] [ -l >ons-local-port> ] [-r >ons-remote-port> ] [-t >host>[:>port>][,>host>[:>port>]...]] [-v]
Usage: srvctl start nodeapps [-n >node_name>] [-v]
Usage: srvctl stop nodeapps [-n >node_name>] [-f] [-r] [-v]
Usage: srvctl status nodeapps
Usage: srvctl enable nodeapps [-v]
Usage: srvctl disable nodeapps [-v]
Usage: srvctl remove nodeapps [-f] [-y] [-v]
Usage: srvctl getenv nodeapps [-a] [-g] [-s] [-e] [-t ">name_list>"]
Usage: srvctl setenv nodeapps {-t ">name>=>val>[,>name>=>val>,...]" | -T ">name>=>val>"}
Usage: srvctl unsetenv nodeapps -t ">name_list>" [-v]

Usage: srvctl add vip -n >node_name> -k >network_number> -A >name|ip>/>netmask>/[if1[|if2...]] [-v]
Usage: srvctl config vip { -n >node_name> | -i >vip_name> }
Usage: srvctl disable vip -i >vip_name> [-v]
Usage: srvctl enable vip -i >vip_name> [-v]
Usage: srvctl remove vip -i ">vip_name_list>" [-f] [-y] [-v]
Usage: srvctl getenv vip -i >vip_name> [-t ">name_list>"]
Usage: srvctl start vip { -n >node_name> | -i >vip_name> } [-v]
Usage: srvctl stop vip { -n >node_name> | -i >vip_name> } [-f] [-r] [-v]
Usage: srvctl status vip { -n >node_name> | -i >vip_name> }
Usage: srvctl setenv vip -i >vip_name> {-t ">name>=>val>[,>name>=>val>,...]" | -T ">name>=>val>"}
Usage: srvctl unsetenv vip -i >vip_name> -t ">name_list>" [-v]

Usage: srvctl add asm [-l >lsnr_name>]
Usage: srvctl start asm [-n >node_name>] [-o >start_options>]
Usage: srvctl stop asm [-n >node_name>] [-o >stop_options>] [-f]
Usage: srvctl config asm [-a]
Usage: srvctl status asm [-n >node_name>] [-a]
Usage: srvctl enable asm [-n >node_name>]
Usage: srvctl disable asm [-n >node_name>]
Usage: srvctl modify asm [-l >lsnr_name>]
Usage: srvctl remove asm [-f]
Usage: srvctl getenv asm [-t >name>[, ...]]
Usage: srvctl setenv asm -t ">name>=>val> [,...]" | -T ">name>=>value>"
Usage: srvctl unsetenv asm -t ">name>[, ...]"

Usage: srvctl start diskgroup -g >dg_name> [-n ">node_list>"]
Usage: srvctl stop diskgroup -g >dg_name> [-n ">node_list>"] [-f]
Usage: srvctl status diskgroup -g >dg_name> [-n ">node_list>"] [-a]
Usage: srvctl enable diskgroup -g >dg_name> [-n ">node_list>"]
Usage: srvctl disable diskgroup -g >dg_name> [-n ">node_list>"]
Usage: srvctl remove diskgroup -g >dg_name> [-f]

Usage: srvctl add listener [-l >lsnr_name>] [-s] [-p "[TCP:]>port>[, ...][/IPC:>key>][/NMP:>pipe_name>][/TCPS:>s_port>] [/SDP:>port>]"] [-o >oracle_home>] [-k >net_num>]
Usage: srvctl config listener [-l >lsnr_name>] [-a]
Usage: srvctl start listener [-l >lsnr_name>] [-n >node_name>]
Usage: srvctl stop listener [-l >lsnr_name>] [-n >node_name>] [-f]
Usage: srvctl status listener [-l >lsnr_name>] [-n >node_name>]
Usage: srvctl enable listener [-l >lsnr_name>] [-n >node_name>]
Usage: srvctl disable listener [-l >lsnr_name>] [-n >node_name>]
Usage: srvctl modify listener [-l >lsnr_name>] [-o >oracle_home>] [-p "[TCP:]>port>[, ...][/IPC:>key>][/NMP:>pipe_name>][/TCPS:>s_port>] [/SDP:>port>]"] [-u >oracle_user>] [-k >net_num>]
Usage: srvctl remove listener [-l >lsnr_name> | -a] [-f]
Usage: srvctl getenv listener [-l >lsnr_name>] [-t >name>[, ...]]
Usage: srvctl setenv listener [-l >lsnr_name>] -t ">name>=>val> [,...]" | -T ">name>=>value>"
Usage: srvctl unsetenv listener [-l >lsnr_name>] -t ">name>[, ...]"

Usage: srvctl add scan -n >scan_name> [-k >network_number> [-S >subnet>/>netmask>[/if1[|if2|...]]]]
Usage: srvctl config scan [-i >ordinal_number>]
Usage: srvctl start scan [-i >ordinal_number>] [-n >node_name>]
Usage: srvctl stop scan [-i >ordinal_number>] [-f]
Usage: srvctl relocate scan -i >ordinal_number> [-n >node_name>]
Usage: srvctl status scan [-i >ordinal_number>]
Usage: srvctl enable scan [-i >ordinal_number>]
Usage: srvctl disable scan [-i >ordinal_number>]
Usage: srvctl modify scan -n >scan_name>
Usage: srvctl remove scan [-f] [-y]
Usage: srvctl add scan_listener [-l >lsnr_name_prefix>] [-s] [-p [TCP:]>port>[/IPC:>key>][/NMP:>pipe_name>][/TCPS:>s_port>] [/SDP:>port>]]
Usage: srvctl config scan_listener [-i >ordinal_number>]
Usage: srvctl start scan_listener [-n >node_name>] [-i >ordinal_number>]
Usage: srvctl stop scan_listener [-i >ordinal_number>] [-f]
Usage: srvctl relocate scan_listener -i >ordinal_number> [-n >node_name>]
Usage: srvctl status scan_listener [-i >ordinal_number>]
Usage: srvctl enable scan_listener [-i >ordinal_number>]
Usage: srvctl disable scan_listener [-i >ordinal_number>]
Usage: srvctl modify scan_listener {-u|-p [TCP:]>port>[/IPC:>key>][/NMP:>pipe_name>][/TCPS:>s_port>] [/SDP:>port>]}
Usage: srvctl remove scan_listener [-f] [-y]

Usage: srvctl add srvpool -g >pool_name> [-l >min>] [-u >max>] [-i >importance>] [-n ">server_list>"]
Usage: srvctl config srvpool [-g >pool_name>]
Usage: srvctl status srvpool [-g >pool_name>] [-a]
Usage: srvctl status server -n ">server_list>" [-a]
Usage: srvctl relocate server -n ">server_list>" -g >pool_name> [-f]
Usage: srvctl modify srvpool -g >pool_name> [-l >min>] [-u >max>] [-i >importance>] [-n ">server_list>"]
Usage: srvctl remove srvpool -g >pool_name>

Usage: srvctl add oc4j [-v]
Usage: srvctl config oc4j
Usage: srvctl start oc4j [-v]
Usage: srvctl stop oc4j [-f] [-v]
Usage: srvctl relocate oc4j [-n >node_name>] [-v]
Usage: srvctl status oc4j [-n >node_name>]
Usage: srvctl enable oc4j [-n >node_name>] [-v]
Usage: srvctl disable oc4j [-n >node_name>] [-v]
Usage: srvctl modify oc4j -p >oc4j_rmi_port> [-v]
Usage: srvctl remove oc4j [-f] [-v]

Usage: srvctl start home -o >oracle_home> -s >state_file> -n >node_name>
Usage: srvctl stop home -o >oracle_home> -s >state_file> -n >node_name> [-t >stop_options>] [-f]
Usage: srvctl status home -o >oracle_home> -s >state_file> -n >node_name>

Usage: srvctl add filesystem -d >volume_device> -v >volume_name> -g >dg_name> [-m >mountpoint_path>] [-u >user>]
Usage: srvctl config filesystem -d >volume_device>
Usage: srvctl start filesystem -d >volume_device> [-n >node_name>]
Usage: srvctl stop filesystem -d >volume_device> [-n >node_name>] [-f]
Usage: srvctl status filesystem -d >volume_device>
Usage: srvctl enable filesystem -d >volume_device>
Usage: srvctl disable filesystem -d >volume_device>
Usage: srvctl modify filesystem -d >volume_device> -u >user>
Usage: srvctl remove filesystem -d >volume_device> [-f]

Usage: srvctl start gns [-v] [-l >log_level>] [-n >node_name>]
Usage: srvctl stop gns [-v] [-n >node_name>] [-f]
Usage: srvctl config gns [-v] [-a] [-d] [-k] [-m] [-n >node_name>] [-p] [-s] [-V]
Usage: srvctl status gns -n >node_name>
Usage: srvctl enable gns [-v] [-n >node_name>]
Usage: srvctl disable gns [-v] [-n >node_name>]
Usage: srvctl relocate gns [-v] [-n >node_name>] [-f]
Usage: srvctl add gns [-v] -d >domain> -i >vip_name|ip> [-k >network_number> [-S >subnet>/>netmask>[/>interface>]]]
srvctl modify gns [-v] [-f] [-l >log_level>] [-d >domain>] [-i >ip_address>] [-N >name> -A >address>] [-D >name> -A >address>] [-c >name> -a >alias>] [-u >alias>] [-r >address>] [-V >name>] [-F >forwarded_domains>] [-R >refused_domains>] [-X >excluded_interfaces>]
Usage: srvctl remove gns [-f] [-d >domain_name>]

Crsctl Syntax (for further explanation of these commands see the Oracle Documentation)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ ./crsctl -h
Usage: crsctl add - add a resource, type or other entity
crsctl check - check a service, resource or other entity
crsctl config - output autostart configuration
crsctl debug - obtain or modify debug state
crsctl delete - delete a resource, type or other entity
crsctl disable - disable autostart
crsctl enable - enable autostart
crsctl get - get an entity value
crsctl getperm - get entity permissions
crsctl lsmodules - list debug modules
crsctl modify - modify a resource, type or other entity
crsctl query - query service state
crsctl pin - Pin the nodes in the nodelist
crsctl relocate - relocate a resource, server or other entity
crsctl replace - replaces the location of voting files
crsctl setperm - set entity permissions
crsctl set - set an entity value
crsctl start - start a resource, server or other entity
crsctl status - get status of a resource or other entity
crsctl stop - stop a resource, server or other entity
crsctl unpin - unpin the nodes in the nodelist
crsctl unset - unset a entity value, restoring its default

For more information non each command. Run “crsctl -h”.

OCRCONFIG Options:

Note that the following only shows the available ocrconfig syntax. For additional explanation on what these commands do, see the Oracle Documentation.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$ ./ocrconfig -help
Name:
ocrconfig - Configuration tool for Oracle Cluster/Local Registry.

Synopsis:
ocrconfig [option]
option:
[-local] -export >filename>
- Export OCR/OLR contents to a file
[-local] -import >filename> - Import OCR/OLR contents from a file
[-local] -upgrade [>user> [>group>]]
- Upgrade OCR from previous version
-downgrade [-version >version string>]
- Downgrade OCR to the specified version
[-local] -backuploc >dirname> - Configure OCR/OLR backup location
[-local] -showbackup [auto|manual] - Show OCR/OLR backup information
[-local] -manualbackup - Perform OCR/OLR backup
[-local] -restore >filename> - Restore OCR/OLR from physical backup
-replace >current filename> -replacement >new filename>
- Replace a OCR device/file >filename1> with >filename2>
-add >filename> - Add a new OCR device/file
-delete >filename> - Remove a OCR device/file
-overwrite - Overwrite OCR configuration on disk
-repair -add >filename> | -delete >filename> | -replace >current filename> -replacement >new filename>
- Repair OCR configuration on the local node
-help - Print out this help information

Note:
* A log file will be created in
$ORACLE_HOME/log/>hostname>/client/ocrconfig_>pid>.log. Please ensure
you have file creation privileges in the above directory before
running this tool.
* Only -local -showbackup [manual] is supported.
* Use option '-local' to indicate that the operation is to be performed on the Oracle Local Registry

OLSNODES Options

Note that the following only shows the available olsnodes syntax. For additional explanation on what these commands do, see the Oracle Documentation.

1
2
3
4
5
6
7
8
9
10
11
12
13
$ ./olsnodes -h
Usage: olsnodes [ [-n] [-i] [-s] [-t] [>node> | -l [-p]] | [-c] ] [-g] [-v]
where
-n print node number with the node name
-p print private interconnect address for the local node
-i print virtual IP address with the node name
>node> print information for the specified node
-l print information for the local node
-s print node status - active or inactive
-t print node type - pinned or unpinned
-g turn on logging
-v Run in debug mode; use at direction of Oracle Support only.
-c print clusterware name

Cluster Verification Options

Note that the following only shows the available olsnodes syntax. For additional explanation on what these commands do, see the Oracle Documentation.

Component Options:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$ ./cluvfy comp -list

USAGE:
cluvfy comp >component-name> >component-specific options> [-verbose]

Valid components are:
nodereach : checks reachability between nodes
nodecon : checks node connectivity
cfs : checks CFS integrity
ssa : checks shared storage accessibility
space : checks space availability
sys : checks minimum system requirements
clu : checks cluster integrity
clumgr : checks cluster manager integrity
ocr : checks OCR integrity
olr : checks OLR integrity
ha : checks HA integrity
crs : checks CRS integrity
nodeapp : checks node applications existence
admprv : checks administrative privileges
peer : compares properties with peers
software : checks software distribution
asm : checks ASM integrity
acfs : checks ACFS integrity
gpnp : checks GPnP integrity
gns : checks GNS integrity
scan : checks SCAN configuration
ohasd : checks OHASD integrity
clocksync : checks Clock Synchronization
vdisk : check Voting Disk Udev settings

Stage Options:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ ./cluvfy stage -list

USAGE:
cluvfy stage {-pre|-post} >stage-name> >stage-specific options> [-verbose]

Valid stage options and stage names are:
-post hwos : post-check for hardware and operating system
-pre cfs : pre-check for CFS setup
-post cfs : post-check for CFS setup
-pre crsinst : pre-check for CRS installation
-post crsinst : post-check for CRS installation
-pre hacfg : pre-check for HA configuration
-post hacfg : post-check for HA configuration
-pre dbinst : pre-check for database installation
-pre acfscfg : pre-check for ACFS Configuration.
-post acfscfg : post-check for ACFS Configuration.
-pre dbcfg : pre-check for database configuration
-pre nodeadd : pre-check for node addition.
-post nodeadd : post-check for node addition.
-post nodedel : post-check for node deletion.

Oracle Cluster Time Synchronization Service (CTSS)

以前我安装rac的同步都是用的ntp,后来oracle引入ctss,以下为官方介绍

The Cluster Time Synchronization Service (CTSS) is installed as part of Oracle Clusterware. By default the CTSS runs in observer mode if it detects a time synchronization service or a time synchronization service configuration, valid or broken, on the system. If CTSS detects that there is no time synchronization service or time synchronization service configuration on any node in the cluster, then CTSS goes into active mode and takes over time management for the cluster

简单来说 就是ctss是作为grid的一部分安装完成,会自动检查服务器上是否有安装其他时间同步服务。如果没有那么ctss就会自动生效。

如果ctss本身就处于active模式,当有新的节点加入进来时,会将新节点的时间与cluster的引用时间比较差值,如果这个差值在一定范围内,则ctss对其进行同步。如果超出了这个范围,ctss会执行slew time synchronization,将新节点的时间增速加快或者调慢,直到与引用时间同步。

当cluster启动时,ctss也随之启动并以active模式运行,当发现时间差值超过限制(为24小时),则ctss会在alert.log生成一条日志,然后cluster会启动失败,必须手动对新加入的节点进行时间调整。

检查集群是否存在第三方时间同步服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
[grid@rac1 ~]$ cluvfy comp clocksync -n all

Verifying Clock Synchronization ...
CTSS is in Observer state. Switching over to clock synchronization checks using NTP

Verifying Network Time Protocol (NTP) ...
Verifying '/etc/chrony.conf' ...PASSED
Verifying '/var/run/ntpd.pid' ...WARNING (PRVG-1019)
Verifying '/var/run/chronyd.pid' ...WARNING (PRVG-1019)
Verifying Daemon 'ntpd' ...FAILED (PRVG-1024, PRVF-7590)
Verifying Daemon 'chronyd' ...FAILED (PRVG-1024, PRVF-7590)
Verifying Network Time Protocol (NTP) ...FAILED (PRVG-1019, PRVG-1024, PRVF-7590)
Verifying Clock Synchronization ...FAILED (PRVG-1019, PRVG-1024, PRVF-7590)

Verification of Clock Synchronization across the cluster nodes was unsuccessful on all the specified nodes.


Failures were encountered during execution of CVU verification request "Clock Synchronization across the cluster nodes".

Verifying Clock Synchronization ...FAILED
Verifying Network Time Protocol (NTP) ...FAILED
Verifying '/var/run/ntpd.pid' ...WARNING
PRVG-1019 : The NTP configuration file "/var/run/ntpd.pid" does not exist
on nodes "rac2,rac1"

Verifying '/var/run/chronyd.pid' ...WARNING
PRVG-1019 : The NTP configuration file "/var/run/chronyd.pid" does not
exist on nodes "rac2,rac1"

Verifying Daemon 'ntpd' ...FAILED
PRVG-1024 : The NTP daemon or Service was not running on any of the cluster
nodes.

rac2: PRVF-7590 : "ntpd" is not running on node "rac2"
rac2: Liveness check failed for "ntpd"

rac1: PRVF-7590 : "ntpd" is not running on node "rac1"
rac1: Liveness check failed for "ntpd"

Verifying Daemon 'chronyd' ...FAILED
PRVG-1024 : The NTP daemon or Service was not running on any of the cluster
nodes.

rac2: PRVF-7590 : "chronyd" is not running on node "rac2"
rac2: Liveness check failed for "chronyd"

rac1: PRVF-7590 : "chronyd" is not running on node "rac1"
rac1: Liveness check failed for "chronyd"


CVU operation performed: Clock Synchronization across the cluster nodes
Date: Sep 20, 2018 4:01:05 PM
CVU home: /u01/app/12.2.0/grid/
User: grid

检查ctss的状态

1
2
[grid@rac1 ~]$ crsctl check ctss
CRS-4700: The Cluster Time Synchronization Service is in Observer mode

删除第三方时间同步配置文件

1
2
3
rm -rf /etc/ntp.conf
rm -rf /etc/chrony.conf
rm -rf /var/run/chronyd.pid

过大概半分钟 就可以看到状态变成了active模式

1
2
3
[grid@rac1 ~]$ crsctl check ctss
CRS-4701: The Cluster Time Synchronization Service is in Active mode.
CRS-4702: Offset (in msec): 0

同时在crs alert里会看到一条记录

1
2
3
/u01/app/grid/diag/crs/rac1/crs/trace/alert.log

2018-09-20 16:16:33.139 [OCTSSD(2801)]CRS-2410: The Cluster Time Synchronization Service on host rac1 is in active mode.

再次检查集群时间同步

1
2
3
4
5
6
7
8
9
10
[grid@rac1 ~]$ cluvfy comp clocksync -n all

Verifying Clock Synchronization ...PASSED

Verification of Clock Synchronization across the cluster nodes was successful.

CVU operation performed: Clock Synchronization across the cluster nodes
Date: Sep 20, 2018 5:02:48 PM
CVU home: /u01/app/12.2.0/grid/
User: grid

在vmware linux 7.5安装oracle 12c rac

作为测试目的安装,环境如下:

OS: OEL 7.5 64-bit (12c 已经不支持32位系统)

db verions: 12.2

node: 2 (rac1.oracle.com,rac2.oracle.com)

IP规划:

1
2
3
4
5
6
7
8
9
10
192.0.2.11  rac1 rac1.oracle.com
192.0.2.13 rac1-vip

192.0.2.12 rac2 rac2.oracle.com
192.0.2.14 rac2-vip

192.0.2.15 rac-scan

192.168.2.11 rac1-priv
192.168.2.12 rac2-priv

安装介质

linuxx64_12201_database.zip

linuxx64_12201_grid_home.zip

oracle linux 7.5.iso

Oracle linux 7.5安装

操作步骤略过。

提下vmware 配置共享磁盘, 在vmx文件里添加如下参数

1
2
3
4
5
6
7
8
9
10
11
12
13
disk.enableUUID = "TRUE"
disk.locking="FALSE"

diskLib.dataCacheMaxSize = "0"

diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1:1.SharedBus="Virtual"
scsi1:2.SharedBus="Virtual"
scsi1:3.SharedBus="Virtual"
scsi1:4.SharedBus="Virtual"

配置yum

1
2
3
4
5
6
7
8
9
10
mkdir /opt/media
createrepo .
yum clean all
yum list

[myrepo]
name=myrepo
baseurl=file:///opt/media
gpgcheck=0
enabled=1

必备参数 用户 组

1
2
3
yum install oracle-database-server-12cR2-preinstall
[root@rac1 yum.repos.d]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)

可以看到12c默认建了一些新的group分配给oracle用户,另外手动建grid相关的组和用户

1
2
3
4
5
6
7
/usr/sbin/groupadd -g 504 asmadmin
/usr/sbin/groupadd -g 506 asmdba
/usr/sbin/groupadd -g 507 asmoper
/usr/sbin/useradd -u 501 -g oinstall -G asmadmin,asmdba,asmoper grid
/usr/sbin/usermod -u 502 -g oinstall -G dba,asmdba oracle
passwd oracle
passwd grid

关闭selinux

1
2
edit file /etc/selinux/config.
SELINUX=disabled

开启NTP(linux 7为chrony) &#8211;我采用ctss 没开启

1
2
systemctl enable chronyd.service
systemctl start chronyd.service

关闭防火墙

1
2
systemctl stop firewalld.service
systemctl disable firewalld.service

安装目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory

mkdir -p /u01/app/12.2.0/grid
chown -R grid:oinstall /u01/app/12.2.0/grid
chmod -R 775 /u01/app/12.2.0/grid

mkdir -p /u01/app/grid
chown -R grid:oinstall /u01/app/grid
chmod -R 775 /u01/app/grid

mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle

环境变量

/home/oracle/.bash_profile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
export TMP=/tmp
export TMPDIR=$TMP

export ORACLE_HOSTNAME=rac1.oracle.com
export ORACLE_UNQNAME=rac
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/12.2.0/grid
export DB_HOME=$ORACLE_BASE/product/12.2.0/db_1
export ORACLE_HOME=$DB_HOME
export ORACLE_SID=rac1
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

alias grid_env='. /home/oracle/grid_env'
alias db_env='. /home/oracle/db_env'

/home/oracle/grid_env

1
2
3
4
5
6
export ORACLE_SID=+ASM1
export ORACLE_HOME=$GRID_HOME
export PATH=$ORACLE_HOME/bin:$BASE_PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

/home/oracle/db_env

1
2
3
4
5
6
export ORACLE_SID=rac1
export ORACLE_HOME=$DB_HOME
export PATH=$ORACLE_HOME/bin:$BASE_PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

udev

在linux7 配置12c的udev有些不同

1
2
3
4
5
6
7
8
9
10
11
12
for i in b c d e;
do
echo "KERNEL==\"sd*\", ENV{DEVTYPE}==\"disk\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d \$devnode\", RESULT==\"`/usr/lib/udev/scsi_id -g -u /dev/sd$i`\", RUN+=\"/bin/sh -c 'mknod /dev/asmdisk$i b \$major \$minor; chown grid:asmadmin /dev/asmdisk$i; chmod 0660 /dev/asmdisk$i'"\" >>/etc/udev/rules.d/99-oracle-asmdevices.rules
done

/sbin/udevadm trigger --type=devices --action=change

[root@rac1 rules.d]# ll /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 Sep 17 14:51 /dev/asmdiskb
brw-rw---- 1 grid asmadmin 8, 32 Sep 17 14:51 /dev/asmdiskc
brw-rw---- 1 grid asmadmin 8, 48 Sep 17 14:51 /dev/asmdiskd
brw-rw---- 1 grid asmadmin 8, 64 Sep 17 14:51 /dev/asmdiske

安装Grid Infrastructure

12.2的grid变成了镜像安装,所以先用grid用户软件解压到对应的目录

1
2
cd /u01/app/12.2.0.1/grid
unzip -q /opt/linuxx64_12201_grid_home.zip

用root用户安装package,所有节点

1
2
3
4
5
6
7
8
9
su -
# Local node.
cd /u01/app/12.2.0.1/grid/cv/rpm
rpm -Uvh cvuqdisk*

# Remote node.
scp ./cvuqdisk* root@rac2:/tmp
ssh root@rac2 rpm -Uvh /tmp/cvuqdisk*
exit

如果要使用AFD Driver (新版ASMLib) 参考如下操作,我这里用的udev

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Set environment.
export ORACLE_HOME=/u01/app/12.2.0.1/grid
export ORACLE_BASE=/tmp

# Mark disks.
$ORACLE_HOME/bin/asmcmd afd_label DISK1 /dev/asmdisk-c --init
$ORACLE_HOME/bin/asmcmd afd_label DISK2 /dev/asmdisk-d --init
$ORACLE_HOME/bin/asmcmd afd_label DISK3 /dev/asmdisk-d --init
$ORACLE_HOME/bin/asmcmd afd_label DISK4 /dev/asmdisk-d --init

# Test Disks.
$ORACLE_HOME//bin/asmcmd afd_lslbl /dev/asmdisk-c
$ORACLE_HOME//bin/asmcmd afd_lslbl /dev/asmdisk-c
$ORACLE_HOME//bin/asmcmd afd_lslbl /dev/asmdisk-c
$ORACLE_HOME//bin/asmcmd afd_lslbl /dev/asmdisk-c

# unset environment.
unset ORACLE_BASE

exit

开始安装

1
2
[grid@rac1 grid]$ ./gridSetup.sh 
Launching Oracle Grid Infrastructure Setup Wizard...

标准cluster

填写cluster名称

添加节点2信息,我选择的两个都是hub节点

对于 12c 版本的集群,除了基本的公网( Public)和私网(private)之外,由于 flex ASM 的出现,我们还需要一个网络来负责在节点之间传递 ASM 的元数据(meta data)。由于 ASM 的元数据数据量很小,所以,对于大部分的系统可以选择集群的私网和 ASM 使用相同的网络。也就是选择 ASM&Private。

配置asm,我已经做了udev绑定

创建 GI management Repository(a.k.a management DB)。 又是一个 12c 的新特性。对于 12c 的集群, oracle 会创建一个小型的数据库,用于存放 CHM 产生的统计信息,这个数据库被称为 GI management Repository(a.k.a management DB). 当然,这个小型的数据库会和 OCR&VF 存放在相同的位置(磁盘组),我这里选择否

选择外部冗余

设置相同的密码

-fancybox=”gallery” href=”/img/5b9f683d1f87d.jpg”>

不配置EM

-fancybox=”gallery” href=”/img/5b9f684e1316d.jpg”>

默认组

-fancybox=”gallery” href=”/img/5b9f6857ea713.jpg”>

配置base路径

安装信息目录

点击fix and check again

可忽略的错误

点击install

root执行脚本

检查crs服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[grid@rac2 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.DATA.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.LISTENER.lsnr
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.net1.network
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.ons
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.proxy_advm
OFFLINE OFFLINE rac1 STABLE
OFFLINE OFFLINE rac2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac1 STABLE
ora.MGMTLSNR
1 OFFLINE OFFLINE STABLE
ora.asm
1 ONLINE ONLINE rac1 Started,STABLE
2 ONLINE ONLINE rac2 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE rac1 STABLE
ora.qosmserver
1 ONLINE ONLINE rac1 STABLE
ora.rac1.vip
1 ONLINE ONLINE rac1 STABLE
ora.rac2.vip
1 ONLINE ONLINE rac2 STABLE
ora.scan1.vip
1 ONLINE ONLINE rac1 STABLE
--------------------------------------------------------------------------------

安装database

1
2
3
[oracle@rac1 database]$ ./runInstaller 
Starting Oracle Universal Installer...

Install database software only

安装rac

配置ssh互信

选择企业版

选择路径

都选择dba组

我这里没采用dns server 忽略相关错误

执行root.sh

新建实例

Create Database

Typical configuration

错误可忽略

检查rac状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[grid@rac1 ~]$ srvctl config database -d xb
Database unique name: xb
Database name: xb
Oracle home: /u01/app/oracle/product/12.2.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/XB/PARAMETERFILE/spfile.279.987348781
Password file: +DATA/XB/PASSWORD/pwdxb.258.987348279
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: dba
OSOPER group: dba
Database instances: xb1,xb2
Configured nodes: rac1,rac2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed

通过一个新视图能查看所有实例的状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[oracle@rac1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Thu Sep 20 15:43:41 2018

Copyright (c) 1982, 2016, Oracle. All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> desc v$active_instances;
Name Null? Type
----------------------------------------- -------- ----------------------------
INST_NUMBER NUMBER
INST_NAME VARCHAR2(240)
CON_ID NUMBER

SQL> select inst_name from v$active_instances;

INST_NAME
--------------------------------------------------------------------------------
rac1.oracle.com:xb1
rac2.oracle.com:xb2

至此12c rac在OEL7.5上基本安装完毕,后续需要对grid 和database打上最新补丁。