In Siebel IP2016, the Sybase database was replaced with Oracle’s own XE database. The switch has presented some advantages and some drawbacks. One of the advantages is that you can have multiple instances. In my case, I have one instance for each IP2016 project that I am working on.
This is the blog that I wished existed before I started trying to use multiple instances!
As an example for this blog, I will be creating the following three instances:
- ASCEND
- Sun2016
- ClientName
At a high level, you will need to perform five steps for each instance you create:
- Modify TNSNAMES.ORA
- Create a 32-bit ODBC connection
- Create the instance by using OracleXEConfig
- Populate the instance by using LocalDBSetup
- Perform a full Tools get
Here’s how it’s done:
The first step is to manually modify TNSNAMES.ORA (located in C:\Oracle\product\12.1.0\client_1\network\admin)
LOCAL_CLIENTNAME =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-JB9RA1H)(PORT = 1526))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
LOCAL_SUN2016 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-JB9RA1H)(PORT = 1526))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
LOCAL_ASCEND =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-JB9RA1H)(PORT = 1526))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
A few points to note:
- DESKTOP-JB9RA1H is the name of my computer (in my case, a VirtualBox VM).
- All the instance names have SERVICE_NAME = XE. When you use OracleXEConfig to change the active instance, it changes the CONTROL.DBF file located in C:\Siebel\16.0.0.0.0\Tools\oraclexe\app\oracle\oradata\XE.
- All the instance names start with LOCAL_ . When you use OracleXEConfig to create a new instance, it automatically appends a LOCAL_ to your chosen name.
Below is how you manually set up each 32-bit ODBC entry for each instance. Remember, you can only test connect to the active instance (as defined by OracleXEConfig). You MUST be able to test connect to the instance before you run LocalDBSetup, or it will fail after running for many hours. This implies you FIRST need to create the instance using OracleXEConfig BEFORE running LocalDBSetup.
This is the command that I used to retrieve from the server:
C:\Siebel\16.0.0.0.0\Tools\BIN\LOCALDBSETUP -s C:\Siebel\16.0.0.0.0\Tools -u rschmidt -p xxxxxx -o “SSD default instance” -t SIEBEL -d LOCAL_SUN2016 -x C:\Siebel\16.0.0.0.0\Tools\oraclexe -y CRSE
This took about one day to run, and used very small amounts of CPU, so don’t terminate it if you think it is hanging (until you are certain that it is).
“SSD default instance” is the 32-bit ODBC connection to the server database, and -u and -p define the credentials.
Note, the user specified with the -u switch will be the only user who is allowed to check in/out objects.
Some other points to note:
- You can delete an inactive instance by merely deleting the directory (for example, in my case LOCAL_ASCEND), as long as it is not active. If you delete and active directory, Oracle will no longer work and you will need to restore from a backup or reinstall.
- You cannot rename one of these directories or, again, Oracle will stop working, even if the instance is not active.
- Interesting piece of trivia: If your SIEBEL password contains a lower case character, you cannot use it to Apply/Activate columns. https://support.oracle.com/knowledge/Siebel/2163294_1.html
- Full compiles are very slow. Add this to your .CFG file:
[InfraDatabase]
SQLTraceThreshold = -1