Professional Documents
Culture Documents
Check cluster resource and Listeners are registered with cluster on PROD server......................................................................................................5
Verify local listener and scan listener on all the DB instances.....................................................................................................................................5
Verify TNSPING and the password from primary database on all nodes.....................................................................................................................5
Add the standby TNS details on PROD Servers............................................................................................................................................................6
Create initPRODDB.ora in PROD DB servers................................................................................................................................................................ 6
Mallikarjun Ramadurg Mallik034
Environment:
Primary: PRODDB
2 Node RAC – rac1.localdomain.com
Mallikarjun Ramadurg Mallik034
- rac2.lcoaldomain.com
Standby: STANDDB
2 Node RAC – rac3.localdomain.com
- rac4.lcoaldomain.com
Mallikarjun Ramadurg Mallik034
Node1:
Mallikarjun Ramadurg Mallik034
ps -ef|grep tns
Mallikarjun Ramadurg Mallik034
Check cluster resource and Listeners are registered with cluster on PROD server
#crsctl start res –t –init
#crsctl start res –t
>>> on all nodes
>>> If you don’t see local listener then add local listener with below commands
Mallikarjun Ramadurg Mallik034
Verify TNSPING and the password from primary database on all nodes
oracle$ tnsping PRODDB
oracle$ tnsping PRODDB1
oracle$ tnsping PRODDB2
oracle$ vitnsnames.ora
>>> STANDDB
>>> STANDDB1
>>> STANDDB2
Mallikarjun Ramadurg Mallik034
oracle$ cd $ORACLE_HOME/dbs
oracle$ ls -lthr
sqlplus / as sysdba
SQL> show parameter spfile;
Mallikarjun Ramadurg Mallik034
cd $ORACLE_HOME/dbs
scp initPRODDB1.ora rac3:/u01/app/oracle/product/19.0.0/dbhome_1/dbs/.
scp initPRODDB1.ora rac4:/u01/app/oracle/product/19.0.0/dbhome_1/dbs/.
Mallikarjun Ramadurg Mallik034
PRODDB prechks
Connect to primary database and verify force logging and redo logs groups
>>> if you don’t find any standby redologs then add the standby redo logs with 1 extra redo logs
group on each thread
SQL> Alter database add standby logfile thread 1 group 19 ('+DATAC1', '+RECOC1') SIZE 2G;
SQL> Alter database add standby logfile thread 1 group 20 ('+DATAC1', '+RECOC1') SIZE 2G;
Mallikarjun Ramadurg Mallik034
spfile
parameter_value_convert 'PRODDB','STANDDB'
set db_file_name_convert '+DATA/PRODDB/','+DATA/STANDDB/'
set db_create_file_dest='+DATA'
set db_recovery_file_dest_size='5000G'
set standby_file_management='AUTO'
set db_recovery_file_dest='+RECO'
set diagnostic_dest='/u01/app/oracle'
Mallikarjun Ramadurg Mallik034
set db_name='PRODDB'
set db_unique_name='STANDDB'
set log_file_name_convert='+DATA/PRODDB/','+DATA/STANDDB/','+RECO/PRODDB/','+RECO/STANDDB/'
set control_files='+DATA/STANDDB/controlfile/control01.ctl','+RECO/STANDDB/controlfile/
control02.ctl'
set cluster_database='false'
set background_dump_dest='/u01/app/oracle/diag/rdbms/standdb/STANDDB1/trace'
set core_dump_dest='/u01/app/oracle/diag/rdbms/standdb/STANDDB1/cdump'
Mallikarjun Ramadurg Mallik034
set user_dump_dest='/u01/app/oracle/diag/rdbms/standdb/STANDDB1/trace'
set service_names='STANDDB,STANDDB1'
set log_archive_dest_1 =''
set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rac3-vip)
(PORT=1523))))'
set remote_listener='rac-sscan:1521'
;
}
Mallikarjun Ramadurg Mallik034
exit;
xx
echo end_time $CUR_DATE
Verify the dump and audit directories and if not created create them
ls -ld /u01/app/oracle/diag/rdbms/standdb/STANDDB1/trace
ls -ld /u01/app/oracle/diag/rdbms/standdb/STANDDB1/cdump
ls -ld /u01/app/oracle/diag/audit
mkdir -p /u01/app/oracle/diag/rdbms/standdb/STANDDB1/trace
Mallikarjun Ramadurg Mallik034
mkdir -p /u01/app/oracle/diag/rdbms/standdb/STANDDB1/cdump
mkdir -p /u01/app/oracle/diag/audit
vi initSTANDDB.ora
db_name=PRODDB
db_unique_name=STANDDB
STANDDB.local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac3-vip)(PORT=1523)))'
remote_listener='rac-sscan:1521'
Mallikarjun Ramadurg Mallik034
>>> STANDB
>>> STANDB1
>>> STANDB2
Mallikarjun Ramadurg Mallik034
>>> PRODDB
>>> PRODDB1
>>> PRODDB2
Start the STANDDB instance with local initSTANDDB.ora created in nomount mode.
. oraenv
>>> STANDDB
vi .bash_profile
>>> set ORACLE_SID=STANDDB
Mallikarjun Ramadurg Mallik034
vi db.env
>>> export ORACLE_SID=STANDDB
sqlplus / as sysdba
startup nomount pfile='/u01/app/oracle/product/19.0.0/dbhome_1/dbs/initSTANDDB.ora';
Mallikarjun Ramadurg Mallik034
ps -ef|greptns
Mallikarjun Ramadurg Mallik034
Run the Active database duplicate for standby restore script as below.
cd /home/oracle
nohup ./Duplicate_STANDDB_from_PRODDB.sh > /dev/null &
tail -f /home/oracle/rmanLog_STANDDB_dg_<DAT_TIMESTAMP>.log
Mallikarjun Ramadurg Mallik034
ASMCMD> cd +DATA/STANDDB/DATAFILE
Mallikarjun Ramadurg Mallik034
ASMCMD>ls -l
tail -f /home/oracle/rmanLog_STANDDB_dg_<DAT_TIMESTAMP>.log
Mallikarjun Ramadurg Mallik034
sqlplus / as sysdba
select name,open_mode from v$database;
select instance_name, status from v$instance;
shut immediate
Mallikarjun Ramadurg Mallik034
>>> Edit initSTANDDB1.ora and replace all PRODDB parameter as STANDDB parameters
Example: .......
PRODDB1.instance_number=1>>> STANDDB1.instance_number=1
PRODDB2.instance_number=2>>> STANDBD2.instance_number=2
Mallikarjun Ramadurg Mallik034
>>> Also we will change the SCAN listener and Local listener as per STANDDB name.
rac-sacn >>> rac-sscan
rac1-vip >>> rac3-vip
rac2-vip >>> rac4-vip
Mallikarjun Ramadurg Mallik034
. oraenv
Mallikarjun Ramadurg Mallik034
>>> STANDDB1
vi .bash_profile
>>> export ORACLE_SID=STANDDB1
vi db.env
>>> export ORACLE_SID=STANDDB1
Mallikarjun Ramadurg Mallik034
sqlplus / as sysdba
startup mount pfile='/u01/app/oracle/product/19.0.0/STANDDB/dbs/initSTANDDB1.ora';
ASMCMD>cd '+DATA/STANDDB/PARAMETERFILE/
ASMCMD> ls -l
Mallikarjun Ramadurg Mallik034
cd $ORACLE_HOME/dbs
Mallikarjun Ramadurg Mallik034
mv initSTANDDB1.ora initSTANDDB1.ora_after_RAC_modified_GOLD
Node1>>>
cd $ORACLE_HOME/dbs
cat > initSTANDDB1.ora
spfile='+DATA/STANDDB/PARAMETERFILE/spfileSTANDDB.ora'
cat initOBIXPAOS1.ora
Mallikarjun Ramadurg Mallik034
Node2 >>>
cat > initSTANDDB2.ora
spfile='+DATA/STANDDB/PARAMETERFILE/spfileSTANDDB.ora'
cat initSTANDDB2.ora
Mallikarjun Ramadurg Mallik034
sqlplus / as sysdba
startup mount;
Mallikarjun Ramadurg Mallik034
(SELECT thread#, MAX (sequence#) last_seq FROM gv$archived_log GROUP BY thread#) b WHERE
a.thread# = b.thread#;