Below are the steps for recreating physical standby controlfile.

1. Get the controlfile location [STANDBY]

SQL> show parameter control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /archive/NONPLUG/NONCDB/contro
                                                 l01.ctl, /archive/NONPLUG/NONC

2. Cancel recovery [STANDBY]

alter database recover managed standby database cancel;

3. Shutdown standby [ STANDBY]

Database closed.
Database dismounted.
ORACLE instance shut down.

4. Create standby controlfile in primary [ PRIMARY]

alter database create standby controlfile as '/export/home/oracle/standby_ctrl.ctl';

5. copy the controlfile to standby server.

scp /export/home/oracle/standby_ctrl.ctl [email protected]:/export/stdby/home/

6.Replace the existing controlfile with the new controlfile [ STANDBY]

rm -rf /archive/NONPLUG/NONCDB/control01.ctl
rm -rf /archive/NONPLUG/NONCDB/control02.ctl

cp /export/stdby/home/standby_ctrl.ctl /archive/NONPLUG/NONCDB/control01.ctl
cp /export/stdby/home/standby_ctrl.ctl /archive/NONPLUG/NONCDB/control02.ctl

7. Mount standby database [ STANDBY]

SQL> startup mount
ORACLE instance started.
Total System Global Area 1.1107E+10 bytes
Fixed Size 7644464 bytes
Variable Size 9294584528 bytes
Database Buffers 1711276032 bytes
Redo Buffers 93011968 bytes
Database mounted.

8. Start MRP recovery process [ STANDBY]

alter database recover managed standby database disconnect from session;