Hi all, A few weeks ago, I faced a problem switching from a primary to a standby database. It was not the first time it occurred to me, so I decided to write about it. THE PROBLEM When executing the switchover, I faced an " ". ORA-03113: end-of-file on communication channel DGMGRL> switchover to stddb\nPerforming switchover NOW, please wait...\nError:\nORA-03113: end-of-file on communication channel\nProcess ID: 52627\nSession ID: 1190 Serial number: 19862\n\n\nUnable to switchover, primary database is still "pridb" Despite the DGMRL saying that the primary database was not switched, it was not the reality. I logged into the databases and checked their roles; as we can see, their roles were reversed. (SYS@pridb1,sid=10390)>select open_mode, database_role from gv$database;\nOPEN_MODE DATABASE_ROLE\n------------------------- ----------------------\nREAD ONLY WITH APPLY PHYSICAL STANDBY\nREAD ONLY WITH APPLY PHYSICAL STANDBY\nREAD ONLY WITH APPLY PHYSICAL STANDBY\n\n\n(SYS@stddb1,sid=11881)>select open_mode, database_role from gv$database;\nOPEN_MODE DATABASE_ROLE\n-------------------- ----------------\nREAD WRITE PRIMARY\nREAD WRITE PRIMARY\nREAD WRITE PRIMARY The DGMRL also did not update the databases' CRS information: --output clipped\n[oracle@PRISERVER01 admin]$ srvctl confidatabase -db pridb\nDatabase unique name: pridb\nDatabase name: pridb\nStart options: open\nStop options: immediate\nDatabase role: PRIMARY\n\n--output clipped\noracle@STDSERVER01:/home/oracle $> srvctl config database -db stddb\nDatabase unique name: stddb\nDatabase name: pridb\nStart options: read only\nStop options: immediate\nDatabase role: PHYSICAL_STANDBY FIXING THE PROBLEM Firstly I checked the current DGMGRL configuration and did take notes. DGMGRL> show configuration\n\nConfiguration - dg_conf\n\n Protection Mode: MaxPerformance\n Members:\n pridb - Primary database\n stddb - Physical standby database Secondly, I changed the databases' CRS configuration: srvctl stop database -db pridb -stopoption immediate\nsrvctl stop database -db stddb -stopoption immediate\n\nsrvctl modify database -db pridb -startoption "read only"\nsrvctl modify database -db pridb -role physical_standby\nsrvctl config database -db pridb\n\nsrvctl modify database -db stddb -startoption open\nsrvctl modify database -db stddb -role primary\nsrvctl config database -db stddb\n\nsrvctl start database -db pridb\nsrvctl start database -db stddb Lastly, I recreated the DGMGRL configuration: dgmgrl sys/password\n\nDGMGRL>remove configuration\nDGMGRL>create configuration dg_conf as primary database is stddb connect identifier is stddb;\nDGMGRL>add database pridb as connect identifier is pridb maintained as physical;\nDGMGRL>enable configuration\n\nDGMGRL>show configuration\n\nConfiguration - dg_conf\n\n Protection Mode: MaxPerformance\n Members:\n stddb - Primary database\n pridb - Physical standby database\n\nFast-Start Failover: DISABLED\n\nConfiguration Status:\nSUCCESS (status updated 40 seconds ago)\n\nDGMGRL> show database stddb\n\nDatabase - stddb\n\n Role: PRIMARY\n Intended State: TRANSPORT-ON\n Instance(s):\n stddb1\n stddb2\n stddb3\n\nDatabase Status:\nSUCCESS\n\n\nDGMGRL> show database pridb\n\nDatabase - pridb\n\n Role: PHYSICAL STANDBY\n Intended State: APPLY-ON\n Transport Lag: 0 seconds (computed 1 second ago)\n Apply Lag: 0 seconds (computed 1 second ago)\n Average Apply Rate: 10.06 MByte/s\n Real Time Query: OFF\n Instance(s):\n pridb1 (apply instance)\n pridb2\n pridb3\n\nDatabase Status:\nSUCCESS Those switchover errors occur to me more frequently than I would like, often due to processes preventing the database shutdown. So, before executing a switchover, I usually stop, then start the primary and standby databases, and this small procedure avoids so much pain during the night shifts. :-) That's all, folks, and I hope I have helped. Rodrigo Lima.