I have recently upgraded my RAC 12.1.0.1.3 system to RAC 12.1.0.2 including the RDBMS installation. Currently I am updating my skills with information relevant to what I would normally have called 12c Release 2 (so that would also answer the question: when is 12c Release 2 coming out?). Then I realised I haven’t posted a first look at RAC 12c post yet-so here it comes.
There are a few things that aren’t specifically mentioned in the new features guide that caught my eye. First of all, RAC 12 does a few really cool things. Have a look at the srvctl command output:
[oracle@rac12node1 ~]$ srvctl Usage: srvctl <command> <object> [<options>] commands: enable|disable|export|import|start|stop|relocate|status|add|remove|modify|getenv|setenv|unsetenv| config|convert|update|upgrade|downgrade|predict objects: database|instance|service|nodeapps|vip|network|asm|diskgroup|listener|srvpool|server|scan|scan_listener| oc4j|home|filesystem|gns|cvu|havip|exportfs|rhpserver|rhpclient|mgmtdb|mgmtlsnr|volume|mountfs For detailed help on each command and object and its options use: srvctl <command> -help [-compatible] or srvctl <command> <object> -help [-compatible] [oracle@rac12node1 ~]$
Quite a few more than with 11.2.0.3:
[oracle@rac112node1 ~]$ srvctl Usage: srvctl <command> <object> [<options>] commands: enable|disable|start|stop|relocate|status|add|remove|modify|getenv|setenv|unsetenv|config|convert|upgrade objects: database|instance|service|nodeapps|vip|network|asm|diskgroup|listener|srvpool|server|scan|scan_listener|oc4j|home|filesystem|gns|cvu For detailed help on each command and object and its options use: srvctl <command> -h or srvctl <command> <object> -h
I will detail the meaning of some of these later in this post or another one to follow.
Evaluation and Prediction
When you are working with policy managed databases RAC 12c already gave you a “what if” option in form of the -eval flag. If for example you wanted to grow your server pool from 2 to 3 nodes:
[oracle@rac12node1 ~]$ srvctl modify srvpool -serverpool pool1 -max 3 -eval -verbose Database two will be started on node rac12node3 Server rac12node3 will be moved from pool Free to pool pool1 [oracle@rac12node1 ~]$
Now you will be able to predict a resource failure as well:
[oracle@rac12node1 ~]$ srvctl predict -h The SRVCTL predict command evaluates the consequences of resource failure. Usage: srvctl predict database -db <database_name> [-verbose] Usage: srvctl predict service -db <database_name> -service <service_name> [-verbose] Usage: srvctl predict asm [-node <node_name>] [-verbose] Usage: srvctl predict diskgroup -diskgroup <diskgroup_name> [-verbose] Usage: srvctl predict filesystem -device <volume_device> [-verbose] Usage: srvctl predict vip -vip <vip_name> [-verbose] Usage: srvctl predict network [-netnum <network_number>] [-verbose] Usage: srvctl predict listener -listener <listener_name> [-verbose] Usage: srvctl predict scan -scannumber <scan_ordinal_number> [-netnum <network_number>] [-verbose] Usage: srvctl predict scan_listener -scannumber <scan_ordinal_number> [-netnum <network_number>] [-verbose] Usage: srvctl predict oc4j [-verbose]
So what would happen if a disk group failed?
[oracle@rac12node1 ~]$ srvctl predict diskgroup -diskgroup DATA -verbose Resource ora.DATA.dg will be stopped Resource ora.DATA.ORAHOMEVOL.advm will be stopped [oracle@rac12node1 ~]$
What it doesn’t do at this stage seems to be an assessment of cascading further problems. If +DATA went down, it would pretty much drag the whole cluster with it, too.
Status
Interestingly you can see a lot more detail with 12.1.0.2 than previously. Here is an example of a policy-managed RAC One Node database:
[oracle@rac12node1 ~]$ srvctl config database -d RONNCDB Database unique name: RONNCDB Database name: RONNCDB Oracle home: /u01/app/oracle/product/12.1.0.2/dbhome_1 Oracle user: oracle Spfile: +DATA/RONNCDB/PARAMETERFILE/spfile.319.854718651 Password file: +DATA/RONNCDB/PASSWORD/pwdronncdb.290.854718263 Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC Server pools: ronpool1 Disk Groups: RECO,DATA Mount point paths: Services: NCDB Type: RACOneNode Online relocation timeout: 30 Instance name prefix: RONNCDB Candidate servers: OSDBA group: dba OSOPER group: Database instances: Database is policy managed
Did you spot the OSDBA and OSOPER group mappings in the output? DBCA by default creates the password file and server parameter file into ASM since 12.1.0.1.
You can get a lot more status information in 12.1.0.2 then previously, especially when compared to 11.2:
[oracle@rac12node1 ~]$ srvctl status -h The SRVCTL status command displays the current state of the object. Usage: srvctl status database {-db <db_unique_name> [-serverpool <serverpool_name>] | -serverpool <serverpool_name> | -thisversion | -thishome} [-force] [-verbose] Usage: srvctl status instance -db <db_unique_name> {-node <node_name> | -instance <inst_name_list>} [-force] [-verbose] Usage: srvctl status service {-db <db_unique_name> [-service "<service_name_list>"] | -serverpool <serverpool_name> [-db <db_unique_name>]} [-force] [-verbose] Usage: srvctl status nodeapps [-node <node_name>] Usage: srvctl status vip {-node <node_name> | -vip <vip_name>} [-verbose] Usage: srvctl status listener [-listener <lsnr_name>] [-node <node_name>] [-verbose] Usage: srvctl status asm [-proxy] [-node <node_name>] [-detail] [-verbose] Usage: srvctl status scan [[-netnum <network_number>] [-scannumber <scan_ordinal_number>] | -all] [-verbose] Usage: srvctl status scan_listener [[-netnum <network_number>] [-scannumber <scan_ordinal_number>] | -all] [-verbose] Usage: srvctl status srvpool [-serverpool <pool_name>] [-detail] Usage: srvctl status server -servers "<server_list>" [-detail] Usage: srvctl status oc4j [-node <node_name>] [-verbose] Usage: srvctl status rhpserver Usage: srvctl status rhpclient Usage: srvctl status home -oraclehome <oracle_home> -statefile <state_file> -node <node_name> Usage: srvctl status filesystem [-device <volume_device>] [-verbose] Usage: srvctl status volume [-device <volume_device>] [-volume <volume_name>] [-diskgroup <group_name>] [-node <node_list> | -all] Usage: srvctl status diskgroup -diskgroup <dg_name> [-node "<node_list>"] [-detail] [-verbose] Usage: srvctl status cvu [-node <node_name>] Usage: srvctl status gns [-node <node_name>] [-verbose] Usage: srvctl status mgmtdb [-verbose] Usage: srvctl status mgmtlsnr [-verbose] Usage: srvctl status exportfs [-name <expfs_name> |-id <havip id>] Usage: srvctl status havip [-id <id>] Usage: srvctl status mountfs -name <mountfs_name> For detailed help on each command and object and its options use: srvctl <command> <object> -help [-compatible]
RAC 12.1.0.2 adds a nifty few little flags: thisversion and thishome to srvctl status database. That works really well where you have multiple versions of Oracle on the same machine (think consolidation):
[oracle@rac12node1 ~]$ srvctl status database -thisversion Database unique name: RONNCDB Instance RONNCDB_1 is running on node rac12node4 Online relocation: INACTIVE Database unique name: TWO Instance TWO_1 is running on node rac12node1 Instance TWO_2 is running on node rac12node2
Verbose!
Some commands are actually more verbose when you specify the -verbose flag:
[oracle@rac12node1 ~]$ srvctl status database -d RONNCDB -verbose Instance RONNCDB_1 is running on node rac12node4 with online services NCDB. Instance status: Open. Online relocation: INACTIVE [oracle@rac12node1 ~]$ srvctl status database -d RONNCDB Instance RONNCDB_1 is running on node rac12node4 Online relocation: INACTIVE [oracle@rac12node1 ~]$
But that’s not new in 12.1.0.2 I believe.
Interesting changes for database logging
The database itself will also tell you more about memory allocation:
********************************************************************** Dump of system resources acquired for SHARED GLOBAL AREA (SGA) Per process system memlock (soft) limit = 64K Thu Jul 31 13:34:58 2014 Expected per process system memlock (soft) limit to lock SHARED GLOBAL AREA (SGA) into memory: 1538M Thu Jul 31 13:34:58 2014 Available system pagesizes: 4K, 2048K Supported system pagesize(s): PAGESIZE AVAILABLE_PAGES EXPECTED_PAGES ALLOCATED_PAGES ERROR(s) 4K Configured 3 393219 NONE 2048K 0 769 0 NONE RECOMMENDATION: 1. For optimal performance, configure system with expected number of pages for every supported system pagesize prior to the next instance restart operation. 2. Increase per process memlock (soft) limit to at least 1538MB to lock 100% of SHARED GLOBAL AREA (SGA) pages into physical memory
As you can see I am not using large pages here at all, which I did for demonstration purposes only. I don’t see any reason not to use large pages on a 64bit system these days. I’m curious to see whether the AIX port supports all the AIX page sizes here.
End of part I
This has already turned into a longer post than I expected it to be when I started writing. I think I’ll continue the series in a couple of weeks when I’m finding the time.