---
title: Setting up Virtual Hosts for Database and Applications Tiers in 11i
description: In this post I would like to share the virtual hosts set-up (two nodes each on the application tier, and two on the DB tier) for a customer using 11.5.9.
---

[Blog | Pythian ](https://www.pythian.com/blog)

# [Setting up Virtual Hosts for Database and Applications Tiers in 11i](https://www.pythian.com/blog/setting-up-virtual-hosts-for-database-and-applications-tiers-in-11i)

 Written by [Balraj Chahal](https://www.pythian.com/blog/author/balraj-chahal) | May 19, 2009 4:00:00 AM

I would like to share with you the virtual hosts set-up (two nodes each on the application tier, and two on the DB tier) for a customer using 11.5.9.

## The Facts

- DB Version: 10.2.3
- CRS Version: 10.2.0.3
- ASM Version: 10.2.0.3
- APPS Version: 11.5.9

## Set-ups by Sys-Admins

Sysadmins must set up a virtual hostname amongst the two available middle-tier (Applications) hosts. In our case, the hostnames are `erpapp01`, and `erpapp02`. Then the sysadmins set up a VIP as `erpapp`.

We also require from sysadmins virtual hostname amongst the two available backend (database) hosts. Hostnames in our case are `erpdb01`, and `erpdb02`. They then set up a VIP as `erpdb`.

## Set-ups By DBAs

Here, we Assume DB Node 1 is currently active, and that`CONTEXT_NAME = PROD`.

### On the first DB Node

1. Copy the XML file to Virtual Host Name
   
   ```
   cd $ORACLE_HOME/appsutil
   cp PROD_erpdb01.xml PROD_erpdb.xml
   ```
2. Change all host entries from `erpdb01` to `erpdb` in the new XML file.
3. Change an entry in the `adautocfg.sh`
4. Change
   
   ```
   CTX_FILE="/opt/oracle/product/10.2.0/db_1/appsutil/PROD_erpdb01 .xml"
   ```
   
   to
   
   ```
   CTX_FILE="/opt/oracle/product/10.2.0/db_1/appsutil/PROD_erpdb.xml"
   ```
5. Open `Listener.ora` and add
   
   ```
   (ADDRESS = (PROTOCOL = TCP)(HOST = erpdb)(PORT = 1521)(IP = FIRST))
   ```
   
   This will look like:
   
   ```
   LISTENER_ERPDB01 =
   (DESCRIPTION_LIST =
   (DESCRIPTION =
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = erpdb01-vip)(PORT = 1521)(IP = FIRST))
   (ADDRESS = (PROTOCOL = TCP)(HOST = erpdb)(PORT = 1521)(IP = FIRST))
   )
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 10.20.12.101)(PORT = 1521)(IP = FIRST))
   )
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
   )
   )
   )
   ```
6. Run `Autoconfig.sh` (before running, make sure you get a response from `ping erpdb` and that it points to DB Node 1).
7. Check that the Autoconfig run has no errors and connects to the DB.
8. DB node 1 has now been set up.

Now failover the VIP to second DB node.

### On the second DB node

1. Copy the XML file to Virtual Host Name.
   
   ```
   cd $ORACLE_HOME/appsutil
   $cp PROD_erpdb02.xml PROD_erpdb.xml
   ```
2. Change all host entries from `erpdb02` to `erpdb` in the new XML file.
3. In `adautocfg.sh`, change
   
   ```
   CTX_FILE="/opt/oracle/product/10.2.0/db_1/appsutil/PROD_erpdb02.xml"
   ```
   
   to
   
   ```
   CTX_FILE="/opt/oracle/product/10.2.0/db_1/appsutil/PROD_erpdb.xml"
   ```
4. Open `Listener.ora` and add `(ADDRESS = (PROTOCOL = TCP)(HOST = erpdb)(PORT = 1521)(IP = FIRST))`. It will look like:
   
   ```
   LISTENER_ERPDB01 =
   (DESCRIPTION_LIST =
   (DESCRIPTION =
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = erpdb02-vip)(PORT = 1521)(IP = FIRST))
   (ADDRESS = (PROTOCOL = TCP)(HOST = erpdb)(PORT = 1521)(IP = FIRST))
   )
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 10.20.12.102)(PORT = 1521)(IP = FIRST))
   )
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
   )
   )
   )
   ```
5. Run `Autoconfig.sh` (before running it, make sure you get a response from `ping erpdb` and that points to DB Node 2).
6. Check that the Autoconfig run has no errors and that it connects to the DB.
7. The DB node 2 has now been set up.

## Apps-Side Setups

### On Apps Server #1

1. In the XML file, change `db_host` to the DB Virtual name.
2. Run autoconfig.
3. Check the logfile for errors.
4. `tnsping` should show a connection to the Virtual DB Node name.

Now, failover the VIP to second APPS Node.

### On Apps Server #2

1. In the XML file, change db_host to DB Virtual name.
2. Run autoconfig.
3. Check the logfile for errors.
4. `tnsping` should show a connection to the Virtual DB Node name.

It’s all setup now.

## Test the Failover procedures

### Scenario A

Let’s assume that both the DB and Apps run on node A, and that DB Node A crashes.

1. Make sure vip has failed to DB Node B (ping `erpdb`, you should see it reachable).
2. Bring up the database on Node B.
3. Bounce Apps on Node A.

### Scenario B

We make the same assumptions as above.

1. Make sure vip has failed to APPS Node B (ping `erpapp`, you should see it reachable).
2. run autoconfig on Apps Node B.
3. Bounce Apps on Node B.

Everything should work now.

## Oracle Database Consulting Services

Ready to optimize your Oracle Database for the future?

 

 

[View full post](https://www.pythian.com/blog/setting-up-virtual-hosts-for-database-and-applications-tiers-in-11i)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Balraj Chahal"
  },
  "dateModified" : "2026-04-15T00:55:37.346Z",
  "datePublished" : "2009-05-19T04:00:00Z",
  "headline" : "Setting up Virtual Hosts for Database and Applications Tiers in 11i",
  "image" : {
    "@type" : "ImageObject",
    "height" : 60,
    "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
    "width" : 60
  },
  "mainEntityOfPage" : "https://www.pythian.com/blog/setting-up-virtual-hosts-for-database-and-applications-tiers-in-11i",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "Pythian Blog"
  }
}
```