Useful srvctl Commands for Oracle RAC and Non-RAC Databases


This post provides a comprehensive guide to srvctl commands used to manage Oracle RAC and non-RAC databases. These commands include database, instance, service, listener, and node application management. Each command is detailed with examples and differences between RAC and non-RAC environments.



1. Managing Databases

Adding a Database

For RAC:

srvctl add database -db <db_unique_name> 
-oraclehome <oracle_home_path> -spfile <spfile_path>

Example:

srvctl add database -db myracdb 
-oraclehome /u01/app/oracle/product/19.0.0/dbhome_1 
-spfile +DATA/MYRACDB/spfilemyracdb.ora 

Adds the RAC database MYRACDB with its SPFILE in the +DATA disk group.

For Non-RAC:

srvctl add database -db <db_unique_name> 
-oraclehome <oracle_home_path> -spfile <spfile_path>

Example:

srvctl add database -db mydb 
-oraclehome /u01/app/oracle/product/19.0.0/dbhome_1 
-spfile /u01/app/oracle/dbs/spfilemydb.ora

Adds the standalone database MYDB with its SPFILE in the local filesystem.


Starting a Database

  • For RAC:

    srvctl start database -db <db_unique_name>

    Example:

    srvctl start database -db myracdb
  • For Non-RAC:

    srvctl start database -db <db_unique_name>

    Example:

    srvctl start database -db mydb

Stopping a Database

  • For RAC:

    srvctl stop database -db <db_unique_name>

    Example:

    srvctl stop database -db myracdb
  • For Non-RAC:

    srvctl stop database -db <db_unique_name>

    Example:

    srvctl stop database -db mydb

Checking Database Status

  • For RAC:

    srvctl status database -db <db_unique_name>

    Example:

    srvctl status database -db myracdb

    Output:

    Instance myracdb1 is running on node racnode1
    Instance myracdb2 is running on node racnode2
  • For Non-RAC:

    srvctl status database -db <db_unique_name>

    Example:

    srvctl status database -db mydb

    Output:

    Instance mydb is running on node standalonehost

Removing a Database

  • For RAC:

    srvctl remove database -db <db_unique_name>

    Example:

    srvctl remove database -db myracdb
  • For Non-RAC:

    srvctl remove database -db <db_unique_name>

    Example:

    srvctl remove database -db mydb

2. Managing Database Instances

Starting an Instance

  • For RAC:

    srvctl start instance -db <db_unique_name> -instance <instance_name>

    Example:

    srvctl start instance -db myracdb -instance myracdb1
  • For Non-RAC:

    srvctl start database -db <db_unique_name>

    Example:

    srvctl start database -db mydb

Stopping an Instance

  • For RAC:

    srvctl stop instance -db <db_unique_name> -instance <instance_name>

    Example:

    srvctl stop instance -db myracdb -instance myracdb1
  • For Non-RAC:

    srvctl stop database -db <db_unique_name>

    Example:

    srvctl stop database -db mydb

Checking Instance Status

  • For RAC:

    srvctl status instance -db <db_unique_name> -instance <instance_name>

    Example:

    srvctl status instance -db myracdb -instance myracdb1
  • For Non-RAC:

    srvctl status database -db <db_unique_name>

    Example:

    srvctl status database -db mydb

3. Managing Services

Adding a Service

For RAC:

srvctl add service -db <db_unique_name> 
-service <service_name> -preferred <preferred_instances> 
-available <available_instances>

Example:

srvctl add service -db myracdb 
-service app_service -preferred myracdb1,myracdb2 -available myracdb3

For Non-RAC:

srvctl add service -db <db_unique_name> -service <service_name>

Example:

srvctl add service -db mydb -service app_service

Starting a Service

srvctl start service -db <db_unique_name> -service <service_name>

Example:

  • For RAC:

    srvctl start service -db myracdb -service app_service
  • For Non-RAC:

    srvctl start service -db mydb -service app_service

Stopping a Service

srvctl stop service -db <db_unique_name> -service <service_name>

Example:

  • For RAC:

    srvctl stop service -db myracdb -service app_service
  • For Non-RAC:

    srvctl stop service -db mydb -service app_service

Checking Service Status

srvctl status service -db <db_unique_name> -service <service_name>

Example:

  • For RAC:

    srvctl status service -db myracdb -service app_service
  • For Non-RAC:

    srvctl status service -db mydb -service app_service

4. General Commands

View Database Configuration

srvctl config database -db <db_unique_name>

Example:

srvctl config database -db myracdb

Relocate a Service (RAC Only)

Move a service from one instance to another:

srvctl relocate service -db <db_unique_name> 
-service <service_name> -oldinst <old_instance> -newinst <new_instance>

Example:

srvctl relocate service -db myracdb 
-service app_service -oldinst myracdb1 -newinst myracdb2

Check srvctl Version

srvctl -v







Please do like and subscribe to my youtube channel: https://www.youtube.com/@foalabs If you like this post please follow,share and comment