Oracle Real Application Clusters One Node (Oracle RAC One Node) is a single instance of an Oracle Real Application Clusters (Oracle RAC) database that runs on one node in a cluster. This option adds to the flexibility that Oracle offers for database consolidation. You can consolidate many databases into one cluster with minimal overhead while also providing the high availability benefits of failover protection, online rolling patch application, and rolling upgrades for the operating system and Oracle Clusterware.
This chapter includes the following topics:
You can create Oracle RAC One Node databases by using the Database Configuration Assistant (DBCA), as with any other Oracle database (manually created scripts are also a valid alternative). Oracle RAC One Node databases may also be the result of a conversion from either a single-instance Oracle database (using rconfig
, for example) or an Oracle RAC database. Typically, Oracle-provided tools register the Oracle RAC One Node database with Oracle Clusterware. Depending on your configuration, automatic registration of an Oracle RAC One Node database with Oracle Clusterware may not have happened. If this is the case, then follow the steps in this section to register the Oracle RAC One Node database with Oracle Clusterware.
Note:
Oracle recommends that you manage Oracle RAC One Node databases with Server Control Utility (SRVCTL). You can only perform certain operations (such as Online Database Relocation) using SRVCTL.If your Oracle RAC One Node database did not register automatically with Oracle Clusterware, then use the srvctl add database
command to add an Oracle RAC One Node database to your cluster. For example:
srvctl add database -c RACONENODE [-e server_list] [-i instance_name] [-w timeout]
Use the -e
option and the -i
option when adding an administrator-managed Oracle RAC One Node database.
See Also:
"srvctl add database"
for usage information
"Using DBCA in Interactive Mode to Add Database Instances to Target Nodes" for more information about adding an Oracle RAC One Node database
For Oracle RAC One Node databases, you must configure at least one dynamic database service (in addition to and opposed to the default database service). When using an administrator-managed Oracle RAC One Node database, service registration is performed as with any other Oracle RAC database. When you add services to a policy-managed Oracle RAC One Node database, SRVCTL does not accept any placement information, but instead configures those services using the value of the SERVER_POOLS
attribute.
Note:
When adding an administrator-managed Oracle RAC One Node database, you can optionally supply an instance prefix with the-i
instance_name
option of the srvctl add database
command. The name of the instance will then be prefix
_1
. If you do not specify an instance prefix, then the first 12 characters of the unique name of the database becomes the prefix. The instance name changes to prefix
_2
during an online database relocation and reverts back to prefix
_1
during a subsequent online database relocation. The same instance name is used on failover.Using SRVCTL, you can convert an Oracle RAC database with one instance to an Oracle RAC One Node database and vice versa.
This section includes the following topics:
Converting a Database from Oracle RAC to Oracle RAC One Node
Converting a Database from Oracle RAC One Node to Oracle RAC
Before converting an Oracle RAC database to an Oracle RAC One Node database, you must first ensure that the Oracle RAC database has only one instance. If your Oracle RAC database is administrator managed and has more than one instance, then you must remove all instances except one using the srvctl remove instance
command. If your Oracle RAC database is policy managed and has more than one instance, then you must stop all instances except one using the srvctl stop instance
command.
See Also:
"srvctl remove instance"
for more information about this command
"srvctl stop instance"
for more information about this command
If the Oracle RAC database is administrator managed, then you must change the configuration of all services to set the preferred instance to the instance that you want to keep as an Oracle RAC One Node database after conversion. If any service had a PRECONNECT TAF
policy, then its TAF policy must be updated to BASIC
or NONE
before starting the conversion process. These services must no longer have any available instance.
If the Oracle RAC database is policy managed, then you must change the configuration of all services so that they all use the same server pool before you convert the Oracle RAC database to an Oracle RAC One Node database.
You can convert an Oracle RAC database with one instance to an Oracle RAC One Node database using the srvctl convert database
command, as follows:
srvctl convert database -db db_unique_name -dbtype RACONENODE [-instance instance_name -timeout timeout] -w timeout]
Note:
An Oracle RAC database that you want to convert to Oracle RAC One Node must either use Oracle Managed Files (to enable automatic thread allocation) or have at least two redo threads.You can convert an Oracle RAC One Node database to an Oracle RAC database by logging in as the Oracle RAC One Node database owner and entering the following SRVCTL command:
srvctl convert database -db db_unique_name -dbtype RAC
If you are relocating the database you want to convert to Oracle RAC using online database relocation, or an online database relocation has failed, then you must either quit or complete the relocation before you run the srvctl convert database
command.
After you run this command, you must create server pools for each database service, in addition to the database server pool. The values for SERVER_NAMES
for the server pools used by the database services must be set to the node that you converted from an Oracle RAC One Node to an Oracle RAC node. You can use the CRSCTL utility or Oracle Enterprise Manager to create and configure the server pools.
See Also:
"srvctl convert database"
for more informationConverting an administrator-managed Oracle RAC One Node database to an Oracle RAC database configures all database services so that the single-instance database is the preferred instance for that service. After you convert the database, you can add instances to your database by using the srvctl add instance
command.
Converting a policy-managed Oracle RAC One Node database to an Oracle RAC database sets all database services to UNIFORM cardinality. It also results in reusing the server pool in which the database currently runs. The conversion reconfigures the database to run on all nodes in the server pool. The command does not start any additional instances but running the srvctl start database
command starts the database on all nodes in the server pool.
You can relocate an Oracle RAC One Node database to another node while still maintaining service availability using the online database relocation feature. Only during a planned online database relocation is a second instance of an Oracle RAC One Node database created, so that any database sessions can continue while the database is relocated to a new node. You can only use online database relocation with Oracle RAC One Node databases but you cannot use online database relocation with Oracle RAC databases regardless of their management style (either administrator or policy managed).
You can use the srvctl relocate database
command configure the amount of time after the relocated database starts and services are migrated, before the former instance of the database stops. This configured amount of time is not an upper bound on the amount of time taken by the entire operation, but only controls how long the relocated database waits for connections to migrate from the former instance to the new instance, before stopping the former instance.
Online database relocation occurs, as follows:
Start a new database instance in a different location.
Move all the services to the relocated instance.
Wait for all the connections to migrate to the relocated instance.
Shut down the former database instance, forcing any remaining connections to move to the relocated instance.
The online relocation timeout is the amount of time you configure to complete step 3.
If your Oracle RAC One Node database is administrator managed, then the target node to which you want to relocate the database instance must be part of the Free server pool at the moment you initiate the relocation. If you have a spare target node in the Free server pool, then this node is added to the candidate list for the Oracle RAC One Node database.
Notes:
When you relocate a database instance to a target node that is not currently in the candidate server list for the database, you must copy the password file, if configured, to the target node, unless you use shared password files stored in Oracle ASM.
When you use password file-based authentication for remote management of Oracle RAC One Node databases without any shared password file, you must have two password files on each node where the database can run: one named SID_prefix
_1
and the other named SID_prefix
_2
. You must recopy both of these files to all candidate nodes every time you update the password file. This is true for both policy-managed and administrator-managed databases.
Oracle recommends using Oracle Clusterware to start and stop the database, and defining users in the data dictionary for other management.
Before you relocate a database instance, you must ensure that the database service user is added to the wallet. Run crsctl query wallet -type OSUSER -all
to check whether the database service user is in the wallet. If not, then run crsctl add wallet -type OSUSER -user
user_name
-passwd
to add the database service user to the wallet.
See Also:
Oracle Database Administrator's Guide for more information about creating shared password files in Oracle ASMUse the srvctl relocate database
command to initiate relocation of an Oracle RAC One Node database. For example:
srvctl relocate database -d rac1 -n node7
See Also:
"srvctl relocate database"
for more information