Overview
This article will guide customers through the process of performing a RAC to RAC manual restore, particularly useful if they are seeking a Redirected restore approach.
Procedure title
Begin restoring the Database to standalone ASM Storage on Node-1 by selecting alternate restore location Option using the automated restore process, steps for automated restore process are mentioned below.
To execute this automated restore to standalone ASM, it is imperative to upgrade the agent to version 6.1.3-466835 beforehand.
Our chosen destination target RAC is Sayali-n1.local.domain, which corresponds to Node-1 within the RAC cluster
The Oracle Home and Oracle Base directories have been extracted from the specified destination locations.
[oracle@sayali-n1 ~]$ echo $ORACLE_HOME /u01/app/oracle/product/19c/db_1 [oracle@sayali-n1 ~]$ echo $ORACLE_BASE /u01/app/oracle
In configuring other server parameters, we can specify ASM location details to ensure direct restoration of data into the ASM location.
db_create_file_dest=+DATA_DISK log_archive_dest=+DATA_DISK/Orc
In the above parameters, the intention is to store database files in
+DATA_DISK
and set the archive destination to+DATA_DISK/Orc
If the specified destinations not exist on ASM, the restoration process will encounter the following error. Therefore, it's crucial to ensure accurate destination locations are provided:
channel ch2: reading from backup piece Phx_DN-ORCL_DBID-1683780889_DT-20240321-143731_612m8o8m_1_1 channel ch0: ORA-19870: error while restoring backup piece Phx_DN-ORCL_DBID-1683780889_DT-20240321-143731_5v2m8o8c_1_1 ORA-19504: failed to create file "+DATA_DISK/orc/1_2899_1162922489.dbf" ORA-17502: ksfdcre:4 Failed to create file +DATA_DISK/orc/1_2899_1162922489.dbf ORA-15173: entry 'orc' does not exist in directory '/'
Once we provide the Database name, we can click on Next to initiate the restore.
By clicking "Next," the restore pre-check will pop-up, aiding in the identification of any potential environmental challenges. In the screenshot provided below, no errors are visible, indicating that everything appears to be in order.
The restore process will commence, and you can monitor the progress on the Jobs page.
Once the restore process is finished, the status of the Restore Job should turn green, indicating successful completion, as depicted below.
To verify the restored database files, log in to Node-1 and navigate to the specified ASM location below:
[oracle@sayali-n1 admin]$ asmcmdASMCMD> lsDATA_DISK/OCR_DATA/ASMCMD> cd DATA_DISK/ASMCMD> ls -lrtType Redund Striped Time Sys Name Y DB_UNKNOWN/ N DBfile/ N SNRAC/ N orc/DATAFILE UNPROT COARSE MAR 21 22:00:00 N feb5table1_data.dbf => +DATA_DISK/orc/DATAFILE/FEB5TBS1.1340.1164202625DATAFILE UNPROT COARSE MAR 21 22:00:00 N feb5table2_data.dbf => +DATA_DISK/orc/DATAFILE/FEB5TBS2.1337.1164202629DATAFILE UNPROT COARSE MAR 21 22:00:00 N o1_mf_sysaux_lr2s3qwp_.dbf => +DATA_DISK/orc/DATAFILE/SYSAUX.1350.1164202597DATAFILE UNPROT COARSE MAR 21 22:00:00 N o1_mf_system_lr2s20l0_.dbf => +DATA_DISK/orc/DATAFILE/SYSTEM.1354.1164202591DATAFILE UNPROT COARSE MAR 21 22:00:00 N o1_mf_undotbs1_lr2s4k50_.dbf => +DATA_DISK/orc/DATAFILE/UNDOTBS1.1360.1164202585DATAFILE UNPROT COARSE MAR 21 22:00:00 N o1_mf_users_lr2s4l9h_.dbf => +DATA_DISK/orc/DATAFILE/USERS.1363.1164202585DATAFILE UNPROT COARSE MAR 21 22:00:00 N table11_data.dbf => +DATA_DISK/orc/DATAFILE/HCT11.1351.1164202597DATAFILE UNPROT COARSE MAR 21 22:00:00 N table1_data.dbf => +DATA_DISK/orc/DATAFILE/HCT1.1365.1164202585DATAFILE UNPROT COARSE MAR 21 22:00:00 N table3_data.dbf => +DATA_DISK/orc/DATAFILE/HCT3.1368.1164202585DATAFILE UNPROT COARSE MAR 21 22:00:00 N table5_data.dbf => +DATA_DISK/orc/DATAFILE/HCT5.1356.1164202591DATAFILE UNPROT COARSE MAR 21 22:00:00 N table6_data.dbf => +DATA_DISK/orc/DATAFILE/HCT6.1358.1164202591DATAFILE UNPROT COARSE MAR 21 22:00:00 N tablee2_data.dbf => +DATA_DISK/orc/DATAFILE/TBSPP2.1347.1164202607DATAFILE UNPROT COARSE MAR 21 22:00:00 N tablee3_data.dbf => +DATA_DISK/orc/DATAFILE/TBSPP3.1345.1164202611DATAFILE UNPROT COARSE MAR 21 22:00:00 N tablee4_data.dbf => +DATA_DISK/orc/DATAFILE/TBSPP4.1344.1164202615DATAFILE UNPROT COARSE MAR 21 22:00:00 N tablee5_data.dbf => +DATA_DISK/orc/DATAFILE/TBSPP5.1341.1164202625ASMCMD>·
Here we can verify the process of Restored DB
[oracle@sayali-n1 ~]$ ps -ef | grep -i pmonoracle 10311 1 0 Mar21 ? 00:00:06 ora_pmon_MHRACDB1oracle 13167 1 0 2023 ? 00:21:31 asm_pmon_+ASM1oracle 16510 1 0 Mar21 ? 00:00:03 ora_pmon_snrac1oracle 26985 1 0 Mar21 ? 00:00:00 ora_pmon_orcloracle 31090 30725 0 00:06 pts/1 00:00:00 grep --color=auto -i pmon[oracle@sayali-n1 ~]$[oracle@sayali-n1 ~]$ export ORACLE_SID=orcl[oracle@sayali-n1 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Fri Mar 22 00:12:37 2024Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved.Connected to:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.3.0.0.0SQL> select name, open_mode from v$database;NAME OPEN_MODE--------- --------------------ORCL READ WRITE
Upon completion of the Restore process, the database will be mounted using the SPfile.
To add the database to the cluster, a pfile is required to create instances on both Node-1 and Node-2.
To locate the SPfile location, log in to sqlplus and execute the following query:
SELECT value FROM v$parameter WHERE name = 'spfile'; /u01/app/oracle/product/19c/db_1/dbs/initORCL.ora
Post obtaining the location from the above query, you can convert the SPfile to Pfile using the following command in sqlplus:
SQL> CREATE PFILE='/u01/app/oracle/product/19c/db_1/dbs/initORCL.ora' FROM SPFILE;
Above command will create a Pfile in below location with name initORCL.ora and you can verify at below location at OS level.
[oracle@sayali-n1 dbs]$ ls -lrttotal 197800-rw-r--r--. 1 oracle oinstall 3079 May 14 2015 init.ora-rw-rw----. 1 oracle oinstall 1544 Mar 21 15:28 hc_snrac1.dat-rw-r-----. 1 oracle oinstall 1536 Mar 22 00:00 spfileorcl.ora-rw-r--r--. 1 oracle oinstall 395 Mar 22 00:25 initORCL.ora-rw-rw----. 1 oracle oinstall 1544 Mar 22 00:28 hc_orcl.dat-rw-r-----. 1 oracle oinstall 2097152 Mar 22 00:31 id_snrac1.dat-rw-r-----. 1 oracle oinstall 2097152 Mar 22 00:31 id_MHRACDB1.dat
After creating the Pfile, you can initiate the database startup using the Pfile. To do so, first, shut down the database.
SQL> SHUTDOWN IMMEDIATE; Database closed. Database dismounted. ORACLE instance shut down.
Then start the database as shown below.
SQL> STARTUP PFILE='/u01/app/oracle/product/19c/db_1/dbs/initORCL.ora'; ORACLE instance started. Total System Global Area 432009920 bytes Fixed Size 8897216 bytes Variable Size 364904448 bytes Database Buffers 50331648 bytes Redo Buffers 7876608 bytes Database mounted. Database opened. SQL> select name, open_mode from v$database; NAME OPEN_MODE --------- -------------------- ORCL READ WRITE SQL>
The CLUSTER_DATABASE=true parameter needs to set before a database can be started in cluster mode.
The CLUSTER_DATABASE_INSTANCES parameter specifies the number of instances configured as part of the cluster database.
You should set this parameter value to the number of instances in your Real Application Cluster.
The INSTANCE_NUMBER is a unique number that maps instances to database.
Below are the parameters used for the test restore. Please modify them according to your specific requirements.
ORCL1.__data_transfer_cache_size=0ORCL2.__data_transfer_cache_size=0ORCL1.__db_cache_size=1728053248ORCL2.__db_cache_size=1811939328ORCL1.__inmemory_ext_roarea=0ORCL2.__inmemory_ext_roarea=0ORCL1.__inmemory_ext_rwarea=0ORCL2.__inmemory_ext_rwarea=0ORCL1.__java_pool_size=0ORCL2.__java_pool_size=0ORCL1.__large_pool_size=33554432ORCL2.__large_pool_size=33554432ORCL1.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environmentORCL2.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environmentORCL1.__pga_aggregate_target=872415232ORCL2.__pga_aggregate_target=872415232ORCL1.__sga_target=2600468480ORCL2.__sga_target=2600468480ORCL1.__shared_io_pool_size=134217728ORCL2.__shared_io_pool_size=134217728ORCL2.__shared_pool_size=603979776ORCL1.__shared_pool_size=687865856ORCL1.__streams_pool_size=0ORCL2.__streams_pool_size=0ORCL1.__unified_pga_pool_size=0ORCL2.__unified_pga_pool_size=0*.audit_file_dest='/u01/app/oracle/admin/ORCL/adump'*.audit_trail='db'*.cluster_database=true*.compatible='19.0.0'*.control_files='+DATA_DISK/ORCL/CONTROLFILE/current.1407.1164239855'*.db_block_size=8192*.db_create_file_dest='+OCR_DATA'*.db_name='ORCL'*.diagnostic_dest='/u01/app/oracle'family:dw_helper.instance_mode='read-only'ORCL2.instance_number=5ORCL1.instance_number=4*.local_listener='-oraagent-dummy-'*.nls_language='AMERICAN'*.nls_territory='AMERICA'*.open_cursors=300*.pga_aggregate_target=824m*.processes=640*.remote_login_passwordfile='exclusive'*.sga_target=2469mORCL2.thread=2ORCL1.thread=1ORCL2.undo_tablespace='UNDOTBS2'ORCL1.undo_tablespace='UNDOTBS1'
Now we can edit the initORCL.ora with the above parameters.
Create a Pfile for 2 instances on 2 nodes as shown below.
[oracle@sayali-n1 dbs]$ mv initORCL.ora initORCL1.ora [oracle@sayali-n2 ~]$ mv initORCL.ora initORCL2.ora
Now shutdown the database.
SQL> shutdown Database closed. Database dismounted. ORACLE instance shut down.
Now create environmental variable for both nodes.
In Node-1Last login: Fri Mar 22 00:49:55 IST 2024 [oracle@sayali-n1 dbs]$ export ORACLE_SID=ORCL1 [oracle@sayali-n1 dbs]$ export ORACLE_HOME=/u01/app/oracle/product/19c/db_1
In Node-2[oracle@sayali-n2 ~]$ export ORACLE_SID=ORCL2 [oracle@sayali-n2 ~]$ export ORACLE_HOME=/u01/app/oracle/product/19c/db_1
Now perform a startup for instance-1 in node1
[oracle@sayali-n1 ORCL]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Fri Mar 22 02:16:37 2024 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to an idle instance. SQL> startupORACLE instance started.Total System Global Area 2600467784 bytesFixed Size 8899912 bytesVariable Size 721420288 bytesDatabase Buffers 1862270976 bytesRedo Buffers 7876608 bytesDatabase mounted.Database opened.[oracle@sayali-n1 ~]$ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Fri Mar 22 04:09:19 2024Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle. All rights reserved.Connected to:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.3.0.0.0SQL> select instance_name from v$instance;INSTANCE_NAME----------------ORCL1SQL> select name, open_mode from v$database;NAME OPEN_MODE--------- --------------------ORCL READ WRITENow perform a same above step on node-2 for instance2 (ORCL2)SQL> startupORACLE instance started.Total System Global Area 2600467784 bytesFixed Size 8899912 bytesVariable Size 637534208 bytesDatabase Buffers 1946157056 bytesRedo Buffers 7876608 bytesDatabase mounted.Database opened.SQL> select name, open_mode from v$database;NAME OPEN_MODE--------- --------------------ORCL READ WRITESQL> select instance_name from v$instance;INSTANCE_NAME----------------ORCL2Now Register the RAC instances as mentioned below from Node-1[oracle@sayali-n1 ~]$ srvctl add database -d ORCL -o '/u01/app/oracle/product/19c/db_1'[oracle@sayali-n1 ~]$ srvctl add instance -d ORCL -i ORCL1 -n sayali-n1[oracle@sayali-n1 ~]$ srvctl add instance -d ORCL -i ORCL2 -n sayali-n2[oracle@sayali-n1 ~]$ $ srvctl config database -d ORCL[oracle@sayali-n1 ~]$ srvctl status database -d ORCLInstance ORCL1 is running on node sayali-n1Instance ORCL2 is running on node sayali-n2[oracle@sayali-n1 ~]$[oracle@sayali-n2 ~]$ srvctl status database -d ORCLInstance ORCL1 is running on node sayali-n1Instance ORCL2 is running on node sayali-n2[oracle@sayali-n2 ~]$
We can see restored DB ORCL is running on both nodes.