Global Data Services – Part 3

In this post we’ll look at configuring GDS and connecting to a database via a global service.

GDS Catalog

Firstly we’ll need to create a catalog as every GDS configuration requires a catalog. I’ll be using the 12c developer days VM as my catalog database.

We need to create a GDS administrator on the catalog database. I hit my first hurdle here as the oracle documentation says to create a gsm_admin user but since the catalog can only reside in a root container and not a pdb we need to create a common user.

So lets create a common user and use that as our GDS administrator. We need to also give it the gsmadmin_role privilege.

Now that we have our catalog created we can move onto the next step.

Add Global Services Manager to GDS Catalog

To add a global services manager to the GDS catalog we must unlock the default user gsmcatuser. This user is automatically created during 12c database installation.

Now we need to add the global services manager to our developer days host and start it up.

Adding a GDS Pool

A default GDS pool already exists in DBPOOLORA but I’ll create one anyway and use it. You need to be connected to the catalog to run many GDS commands so lets connect to the catalog and add a demo pool.

Adding a GDS Region

A default GDS Region of REGIONORA exists so i’ll use that if I need to specify region in my GDS config. You can add a region with the following syntax if need be.

Adding a Database to a GDS Pool

My initial plan was to use a 3 node VM environment I have with 2 physical standbys with active dataguard. I could not get this to work due to issues with some quirks in GDS. There is documentation which states that GDS supports single instance and RAC but my initial tests showed single instance databases were not properly registering. I have a support ticket opened trying to get clarification on this.

In the meantime I’ll use a standard RAC database for this demo to make it a bit more simpler and get it working. You need to unlock the gsmuser account on the database prior to adding it to the GDS config.

Adding a Service to a GDS Pool

Now we need to add a service to the GDS Pool. This is the service we connect to with our client.

Before we start our service we need to add our instances.

I had to modify the endpoint of my gsm as my developer days was listening on localhost and it was not binding properly when services were registering. I discovered this when trying to connect to the service via TNS but I’m adding it as a prereq step in here.

I ignored the above error as I could see the service had started successfully.

Database Connectivity and Client Configuration

Now that we have everything configured and running we can try and connect to our database via the global service. My TNS entry looks like.

In the above TNS entry you may have noticed the service name is slightly different to what I created earlier. To get the right service name for your connection run the following command and look at Network Name.

Now lets try and connect.

So there we have it. GDS configured and we are connecting to our RAC database via a global service. I did hit a number of hurdles during this process and a few things I’ll follow up on include:

  • Single Instance with active dataguard setup with GDS
  • ORA-45546: cannot create process to run SRVCTL
  • Auto startup of GSM


After consulting Oracle support there seems to be a limitation on single instance databases whereby they cannot be run in a cluster or configured with srvctl. There’s also an unpublished document in relation to this. The developer days VM does not have the clusterware so with this in mind we should be able to add it as a database and create a service.

So thats the caveat at this point in time. Single instance databases cannot run on a cluster or be registered in OCR.

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA * Time limit is exhausted. Please reload CAPTCHA.