Since we published the RAC book, Oracle has released patchset 11.2.0.2. Amongst other things, this improved the RAC One Node option, exactly the way we expected.
How it was – the base release
A quick recap on the product as it was in 11.2.0.1: RAC One Node is part of Oracle Enterprise Edition, any other software editions are explicitly not allowed. Another restriction exists for 3rd party Clusterware: it’s not allowed to use one. RAC One Node is a hybrid between full blown RAC and the active/passive cluster. The option uses Grid Infrastructure for cluster management and storage provisioning via ASM. The RAC One instance starts its life as a RAC database, limited to only one cluster node. It only ever runs on one node, but that node can change. It is strongly recommended to create a service for that RAC database. Utilities such as raconeinit provide a text based command line interface to transform that database to a “RAC One Node”-instance. In the process, the administrator can elect which nodes should be allowed to run the instance. The “omotion” utilities allowed the DBA to move the RAC One Node instance from the current node to another one. Optionally a time threshold could be set after which all ongoing transactions were to move to the new node. This feature required TAF or FAN to be set up correctly. The raconestatus utility allowed you to view the status of your RAC One Node instances. Conversion to full RAC was made possible by the racone2rac utility.
If you were after a Data Guard setup you’d be disappointed: that wasn’t supported. (The good news is: from 11.2.0.2 onwards, Data Guard can be used)
So all in all, that seemed a little premature. A patch to be downloaded and applied, no Data Guard and a new set of utilities are not really user friendly. Plus, initially this patch was available for Linux only. But at least a MOS note (which I didn’t find until after having finished writing this!) exists, RAC One — Changes in 11.2.0.2 [ID 1232802.1]
Changes
Instead of having to apply patch 9004119 to your environment, RAC One Node is available “out of the box” with 11.2.0.2. Sadly, the Oracle RAC One Node manual has not been updated, and searches on Metalink reveal no new information. One interesting piece of information: the patch for RAC One Node is listed as “undocumented Oracle Server” section.
The creation of a RAC One Node instance has been greatly simplified-dbca has added support for it, both from the command line for silent installations as well as the interactive GUI. Consider these options for dbca.
$ dbca -help dbca [-silent | -progressOnly | -customCreate] {<command> <options> } | { [<command> [options] ] -responseFile <response file > } [-continueOnNonFatalErrors <true | false>] Please refer to the manual for details. You can enter one of the following command: Create a database by specifying the following parameters: -createDatabase -templateName <name of an existing template> [-cloneTemplate] -gdbName <global database name> [-RACOneNode -RACOneNodeServiceName <Service name for the service to be created for RAC One Node database.>] [-policyManaged | -adminManaged <Policy managed or Admin managed Database, default is Admin managed database>] [-createServerPool <To create ServerPool which will be used by the database to be created>] [-force <To create serverpool by force when adequate free servers are not available. This may affect already running database>] -serverPoolName <One serverPool Name in case of create server pool and comma separated list of serverPool name in case of use serverpool> -[cardinality <Specify cardinality for new serverPool to be created, default is the number of qualified nodes>] [-sid <database system identifier prefix>] ...
With RAC One Node you will most likely end up with a policy managed database in the end, I can’t see how an admin managed database made sense.
The srvctl command line tool has been improved to deal with the RAC One node. The most important operations are to add, remove, config and status. The nice thing about dbca is that it actually registers the database in the OCR. Immediately after the installation, you see this status information:
$ srvctl status database -d rontest Instance rontest_1 is running on node node2 Online relocation: INACTIVE $ srvctl config database -d rontest Database unique name: rontest Database name: Oracle home: /data/oracle/product/11.2.0.2 Oracle user: oracle Spfile: + DATA/rontest/spfilerontest.ora Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC Server pools: rontest Database instances: Disk Groups: DATA Mount point paths: Services: rontestsrv Type: RACOneNode Online relocation timeout: 30 Instance name prefix: rontest Candidate servers: node2,node3 Database is administrator managed
Note that the instance_name, although the instance is administrator managed, changed to $ORACLE_SID_1. Relocating works now with the srvctl relocate database command as in this example:
$ srvctl relocate database -d rontest -n node2
You’ll get feedback about this in the output of the “status” command:
$ srvctl status database -d rontest Instance rontest_1 is running on node node2 Online relocation: ACTIVE Source instance: rontest_1 on node2 Destination instance: rontest_2 on node3
After the command completed, check the status again:
srvctl status database -d rontest Instance rontest_2 is running on node node2 Online relocation: INACTIVE
The important difference between an admin managed database and a policy managed database is that you are responsible for undo tablespaces. If you don’t create and configure undo tablespaces, the relocate command will fail:
$ srvctl relocate database –d rontest -n node3 < PRCD-1222 : Online relocation of database rontest failed but database was restored to its original state PRCD-1129 : Failed to start instance rontest_2 for database rontest PRCR-1064 : Failed to start resource ora.rontest.db on node node3 CRS-5017: The resource action "ora.rontest.db start" encountered the following error: ORA-01092: ORACLE instance terminated. Disconnection forced ORA-30013: undo tablespace 'UNDOTBS1' is currently in use Process ID: 1587 Session ID: 35 Serial number: 1 CRS-2674: Start of 'ora.rontest.db' on 'node3' failed
In this case, the database runs on the same node. Check the ORACLE_SID (rontest_2 in my case) and modify the initialisation parameter.
SQL> select tablespace_name from dba_data_files where tablespace_name like ‘%UNDO%’; TABLESPACE_NAME ------------------------------ UNDOTBS1 UNDOTBS2
So the tablespace was there, but the initialisation parameter was wrong! Let’s correct this:
SQL> alter system set undo_tablespace='UNDOTBS1' sid='rontest_1'; System altered. SQL> alter system set undo_tablespace='UNDOTBS2' sid='rontest_2'; System altered.
Now the relocate will succeed.
To wrap this article up, the srvctl convert database command will convert between single instance, RAC One Node and RAC databases.
Martin,
Did you try upgrading from RAC One node from 11.2.0.1 to 11.2.0.2.
It didnt work for me
Cheers
Amit
Hi Amit,
I haven’t tried that yet, as the system isn’t live. I’m surprised it didn’t work, at which stage did you run into trouble? Might be intersting to compare resource profiles for 11.2.0.2 and 11.2.0.1 – maybe there’s a bit of a problem hidden away. Curious, curious…
Regards,
Martin
Actually I couldnt figure out method to do manual upgrade. DBUA also does not take care of updating the profiles.
I first upgraded db using dbua, then I used srvctl upgrade command to upgrade srvctl to 11.2.0.2
But RAC One node config broke..It didn’t take care of copying password files,init.ora ,etc. I tried for some time but yeah didn’t dig into resource profiles
Cheers
Amit
I see!
I think if I were to try I’d probably take the database out of the OCR and upgrade it like a “normal” database with cluster_database = false. Adding the database into the OCR is fairly straight forward, there is a new switch “-c” to indicate the roll, RACONE is the winner here.
Maybe when I have a little time I’ll play around with this a bit. Thanks for the pointer!
Martin
Another update: a reader pointed out that I was wrong about Data Guard support in RAC One Node for 11.2.0.2. This has now been corrected-the text in read highlights this.
Thanks Chris!
As an alternative to the Undo TS fix you can unset the parameter and reboot the DB:
alter system reset undo_tablespace scope=spfile SID=’*’;
Kirill, dadbm.com
Thanks….I have altered the undo table space on one node and forgot after reboot. one node under RAC was not coming up. Realized with your article and it resolved my issue. Many Thanks again.