Oracle: prevent Active DataGuard from being used

Oracle: prevent Active DataGuard from being used

Using a standby database is a good way to increase availability and redundancy to an Oracle database. Switching over the database to another host and/or data center also helps to decrease outages for patching.

Best practise for a database installation is to always have Grid Infrastructure (GI) installed. Sure - it needs more disk space and also patching components, but it also helps us when switching over: it starts database using the right role - either PRIMARY or PHYSICAL_STANDBY.

But there are still some Oracle installations without GI. They use some custom scripts to start the database(s), mostly from within systemd.

Stopping databases on these systems is quite easy:

# dbshut $ORACLE_HOME

dbshut goes through /etc/oratab and stopps all databases and listener(s).

Starting them is also easy:

# dbstart $ORACLE_HOME

On a primary site, this is quite ok. But on a standby site, databases are started in OPEN mode, which leads to a standby database using Active DataGuard. You can check it like this:

SQL> select OPEN_MODE from v$database;
READ ONLY WITH APPLY

But you can use an underscore parameter to prevent the standby database from being opened using Active DataGuard:

SQL> alter system set "_query_on_physical"=FALSE scope=spfile sid='*';

As it's not a dynamic parameter, you have to restart the database for this.

After starting the database using dbstart $ORACLE_HOME, the database will started going through NOMOUNT and MOUNT state. It will also try top open, but since the parameter is set, OPEN mode will prevented.

Subscribe to Martin's Blog

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe