oracle_rac_database_migration_to_rac

Migration from single instance to RAC database, can be done in two ways depending if downtime is possible:

  1. Creating Physical Standby database
  2. Restore template with DBCA on another server
  3. Using the RConfig

In our case we will use the RConfig tool. So let's get going

Firstly we can check how the database is configured:

Check database configuration

[oracle@enode01 ~]$ srvctl config database -db eastdb
Database unique name: eastdb 
Database name: eastdb 
Oracle home: /u01/app/oracle/product/12.1.0/dbhome_1 
Oracle user: oracle 
Spfile: +DATA/EASTDB/PARAMETERFILE/spfile.299.890151031 
Password file: 
Domain: example.com 
Start options: open 
Stop options: immediate 
Database role: PRIMARY 
Management policy: AUTOMATIC 
Server pools: 
Disk Groups: DATA,FRA 
Mount point paths: 
Services: 
Type: SINGLE                  <- Single instance Database
OSDBA group: dba 
OSOPER group: oper 
Database instance: eastdb 
Configured nodes: enode01 
Database is administrator managed 
[oracle@enode01 ~]$

Be sure to take an offline backup of the single instance database, preferably with RMAN:

Create offlien backup

$ rman target /
$ shutdown immediate;
$ startup mount;
$ backup database;
$ alter database open;

In case the database has a standby increase archivelog apply gap:

Increase archivelog gap

[oracle@enode01 ~]$ sqlplus / as sysdba
SQL> alter system set archive_lag_target=7200 scope=both; 
System altered. 
SQL> exit
[oracle@enode01 ~]$
<Code>

After that, let's modify the template so we can test if everything is set up correctly.
Bare in mind that a configured clusterware should be available on both servers with ASM.

{{ :singleinstance2rac.jpg?400 |}}

First locate the "ConvertToRAC_AdminManaged.xml" in the $ORACLE_HOME/assistants/rconfig/sampleXMLs and copy it:

<Code:bash|Modify the template>
[oracle@enode01 sampleXMLs]$ cp ConvertToRAC_AdminManaged.xml 
ConvertToRAC_AdminManaged.bkp 
[oracle@enode01 sampleXMLs]$
[oracle@enode01 sampleXMLs]$ vi ConvertToRAC_AdminManaged.xml
<?xml version="1.0" encoding="UTF-8"?> 
<n:RConfig xmlns:n="http://www.oracle.com/rconfig" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://www.oracle.com/rconfig rconfig.xsd"> 
 <n:ConvertToRAC> 
<!-- Verify does a precheck to ensure all pre-requisites are met, before the 
conversion is attempted. Allowable values are: YES|NO|ONLY --> 
 <n:Convert verify="ONLY">                                                             <- Modify it to ONLY
<!--Specify current OracleHome of non-rac database for SourceDBHome --> 
 
<n:SourceDBHome>/u01/app/oracle/product/12.1.0/dbhome_1</n:SourceDBHome>               <- Modify it to the correct value
<!--Specify OracleHome where the rac database should be configured. It can be 
same as SourceDBHome --> 
 
<n:TargetDBHome>/u01/app/oracle/product/12.1.0/dbhome_1</n:TargetDBHome>               <- Modify it to the correct value
<!--Specify SID of non-rac database and credential. User with sysdba role is 
required to perform conversion --> 
 <n:SourceDBInfo SID="eastdb"> 
 <n:Credentials> 
 <n:User>sys</n:User> 
 <n:Password>oracle_4U</n:Password>                                                    <- Modify it to the correct value
 <n:Role>sysdba</n:Role> 
 </n:Credentials> 
<!--Specify Windows Secure Oracle Home Credentials if the Oracle Home was 
installed with Secure User option -->
 <n:Credentials> 
 <n:User>UserDomain\SecureHomeUserName</n:User> 
 <n:Password>oracle</n:Password> 
 <n:Role>windows_svc</n:Role> 
 </n:Credentials> 
--> 
 </n:SourceDBInfo> 
<!--Specify the list of nodes that should have rac instances running for the 
Admin Managed Cluster Database. LocalNode should be the first node in this 
nodelist. --> 
 <n:NodeList> 
 <n:Node name="enode01"/>                                                    <- Modify it to the correct value
 <n:Node name="enode02"/>                                                    <- Modify it to the correct value
 </n:NodeList> 
<!--Specify RacOneNode along with servicename to convert database to RACOne 
Node --> 
 <!--n:RacOneNode servicename="salesrac1service"/--> 
<!--Instance Prefix tag is optional starting with 11.2. If left empty, it is 
derived from db_unique_name.--> 
 <n:InstancePrefix>eastdb</n:InstancePrefix>                                  <- Modify it to the correct value
<!-- Listener details are no longer needed starting 11.2. Database is 
registered with default listener and SCAN listener running from Oracle Grid 
Infrastructure home. --> 
<!--Specify the type of storage to be used by rac database. Allowable values 
are CFS|ASM. The non-rac database should have same storage type. ASM 
credentials are no needed for conversion. --> 
 <n:SharedStorage type="ASM"> 
<!--Specify Database Area Location to be configured for rac database.If this 
field is left empty, current storage will be used for rac database. For CFS, 
this field will have directory path. --> 
 <n:TargetDatabaseArea></n:TargetDatabaseArea>                                <-<- We don't move files so we don't need that parameter
<!--Specify Fast Recovery Area to be configured for rac database. If this field 
is left empty, current recovery area of non-rac database will be configured for 
rac database. If current database is not using recovery Area, the resulting rac 
database will not have a recovery area. --> 
 
 <n:TargetFlashRecoveryArea></n:TargetFlashRecoveryArea>                        <- We don't move files so we don't need that parameter
 </n:SharedStorage> 
 </n:Convert> 
 </n:ConvertToRAC> 
</n:RConfig> 
:wq! 
[oracle@enode01 sampleXMLs]$

With that, we can test if the conversion will succeed as follows:

Test

[oracle@enode01 sampleXMLs]$ rconfig ConvertToRAC_AdminManaged.xml
<?xml version="1.0" ?> 
<RConfig version="1.1" > 
<ConvertToRAC> 
 <Convert> 
 <Response> 
 <Result code="0" > 
 Operation Succeeded
 </Result> 
 </Response> 
 <ReturnValue type="object"> 
There is no return value for this step </ReturnValue> 
 </Convert>
</ConvertToRAC></RConfig> 
[oracle@enode01 sampleXMLs]$

After we are sure that the operation will succed we can modify the parameter as follows:

Modiy the parameter

[oracle@enode01 sampleXMLs]$ vi ConvertToRAC_AdminManaged.xml
<n:Convert verify="YES">
:wq! 
[oracle@enode01 sampleXMLs]$

Finally, run the migration as follows:

Migrate

[oracle@enode01 sampleXMLs]$ rconfig ConvertToRAC_AdminManaged.xml
Converting Database "eastdb" to Cluster Database. Target Oracle Home: 
/u01/app/oracle/product/12.1.0/dbhome_1. Database Role: PRIMARY. 
Setting Data Files and Control Files 
Adding Database Instances 
Adding Redo Logs 
Enabling threads for all Database Instances 
Setting TEMP tablespace 
Adding UNDO tablespaces 
Adding Trace files 
Setting Fast Recovery Area 
Updating Oratab 
Creating Password file(s) 
Configuring Listeners 
Configuring related CRS resources 
Starting Cluster Database 
<?xml version="1.0" ?> 
<RConfig version="1.1" > 
<ConvertToRAC> 
 <Convert> 
 <Response> 
 <Result code="0" > 
 Operation Succeeded 
 </Result> 
 </Response> 
 <ReturnValue type="object"> 
<Oracle_Home> 
 /u01/app/oracle/product/12.1.0/dbhome_1 
 </Oracle_Home> 
 <Database type="ADMIN_MANAGED" > 
 <InstanceList> 
 <Instance SID="eastdb1" Node="enode01" > 
 </Instance> 
 <Instance SID="eastdb2" Node="enode02" > 
 </Instance>
/Database> </ReturnValue> 
 </Convert> 
</ConvertToRAC></RConfig>
[oracle@enode01 sampleXMLs]$

Once that is done, we can test the database configuration:

Check the reconfiguration

[oracle@enode01 sampleXMLs]$ srvctl config database -db eastdb
Database unique name: eastdb 
Database name: eastdb 
Oracle home: /u01/app/oracle/product/12.1.0/dbhome_1 
Oracle user: oracle 
Spfile: +DATA/EASTDB/PARAMETERFILE/spfile.299.890151031 
Password file: +DATA/eastdb/orapweastdb 
Domain: example.com 
Start options: open 
Stop options: immediate 
Database role: PRIMARY 
Management policy: AUTOMATIC 
Server pools: 
Disk Groups: DATA,FRA 
Mount point paths: 
Services: 
Type: RAC                <- Changed to RAC Database
Start concurrency: 
Stop concurrency: 
OSDBA group: dba 
OSOPER group: oper 
Database instances: eastdb1,eastdb2 
Configured nodes: enode01,enode02 
Database is administrator managed 
[oracle@enode01 sampleXMLs]$
  • oracle_rac_database_migration_to_rac.txt
  • Last modified: 2020/10/22 12:45
  • by andonovj