Oracle Databases
Contents
You must have Oracle Client software accessible in the environment where the Genesys application is running. Genesys uses Oracle 11g client software to access all supported versions of Oracle.
Using Full Installation of Oracle Client
Connectivity to an Oracle database relies on TCP/IP to work between an Oracle server and its client.
You must set the following environment variables for DB client for Oracle:
ORACLE_HOME
ORACLE_SID
In addition, you must specify the full path to the bin of the Oracle home directory in the PATH variable, and either LIBPATH for AIX or LD_LIBRARY_PATH for Linux and Solaris, depending on the platform you are using. If the DBMS client for Oracle runs on a different host other than the Oracle server, you must also configure the SQLNet file on both hosts. Note that a TCP/IP Adapter is also required. For more information, refer to the Oracle documentation for your platform.
If you are using the UNIX/Linux platform, you might want to create a link to the DB client so that the server accessing the database can find the library using the default name. Enter the following on the operating system command line:
ln -s libclntsh.so.11.1 libclntsh.so
You must use the tnsnames.ora file to specify database access as defined in Oracle documentation. Genesys DB Client will load the .tns file.
The following is an example of TNS name content:
CMES =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =<your oracle host>)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cmes)
)
)
With this definition in the .tns file, the parameters of the Genesys Database Access Point can be set as follows:
dbengine=oracle
dbserver=<your oracle host>:1521/cmes
dbname=
username=<oracle schema user>
password=<oracle schema user's password>
Using Oracle Instant Client
Instead of a full Oracle client installation, you can use the Instant Client package from Oracle, downloadable from here.
For core Genesys servers to work, you must have the Basic package. If you have to perform conversion of character set encodings for languages other than English, make sure that the Instant Client package contains all necessary encoding tables. If you cannot find the proper package of Instant Client, you may want to use a full Oracle installation.
Connectivity to an Oracle database relies on TCP/IP to work between the Oracle server and client. You do not need to set up the ORACLE_HOME or ORACLE_SID environment variables. However, you must specify the full path to the folder where you put the Oracle Instant Client in the appropriate environment variable—PATH for Windows, LIBPATH for AIX, or LD_LIBRARY_PATH for Linux and Solaris.
For example, the configuration of Genesys Database Access Points without using TNS should be as follows:
dbengine=oracle
dbserver=<oracle host>:1521/<oracle service name>
dbname=
username=<oracle schema user>
password=<oracle schema user's password>
You can still use TNS-based connection information with Instant Client if you set up the TNS_ADMIN environment variable, or you can use the SQL Connect URL string <host>[:port]/<service name>. Both are described in Oracle Instant Client documentation.
Service Name
Instant Client requires a Service Name, rather than the SID required by the full Oracle installation package. The Service Name can be found in the tnsnames.ora file, which is found in the <oracle home>/network/admin folder on the server. For example, in the following excerpt from the tnsnames.ora file, the SID appears below ORCL, and the Service Name is orcl.us.int.genesyslab.com.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <IP of a host>)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.us.int.genesyslab.com)
)
)
Using Oracle Database with National Languages
Single Language Deployment
You must create all Oracle databases using the same character set, such as WE8MSWIN1252. You must select an encoding that matches Microsoft Windows Operating System default encoding for a selected language, so that applications, like Interaction Routing Designer, display data correctly.
On every host that has a Genesys application accessing an Oracle database, make sure that the NLS_LANG environment variable is set to match the language and character encoding of data in the Oracle database, as defined in the following table . For example, NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252.
If you are unable to setup MS Windows compatible character encoding when creating the Oracle database, make sure that the Oracle client software on all hosts with Genesys applications has been set to use character encoding that matches the target as close as possible, by following these steps:
1. Set up NLS_LANG to use the closest compatible encoding. For example, WE8ISO8858P1 to match WE8MSWIN1252 if you are using Linux to host Genesys applications that should access Oracle Databases.
2. Make sure that Oracle client software contains NLS tables allowing conversion between character encoding of the database and the host. Refer to Oracle documentation for more information about supported character conversions.
With your environment set up this way, you can use character data in a single language (such as French) for all information stored and transmitted between Genesys applications.
Multi-Language Deployment
To enable storage and processing of data in multiple languages using Oracle Databases, you must create all your database instances using the AL32UTF8 character set. For example:
CREATE DATABASE orclutf8
...
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
On every host that has a Genesys application accessing an Oracle database, make sure the NLS_LANG environment variable is set to match the character encoding of data in the Oracle database; for example, NLS_LANG=.UTF8.
Using Oracle TAF
Genesys supports using the Oracle Real Application Cluster to provide redundant access to database storage. You must use the TNS file to define cluster access, as specified in Oracle documentation.
For example:
LORAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =<oracle RAC listener> )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =<oracle service name>)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD=BASIC)
(RETRIES = 2)
(DELAY = 1)
)
)
)
The RETRIES and DELAY parameters might affect how long the Genesys application will wait for Oracle to respond before it attempts to reconnect. Refer to the Oracle TAF guide for more details.
Failure of an Oracle 12g RAC Database
The Oracle 12g Real Application Cluster (RAC) DBMS includes a client-side feature called Transparent Application Failover (TAF). If an instance of a database fails, TAF automatically reconnects to a surviving database instance (node).
However, TAF only restores the connection; it is the responsibility of the application to restart on the new node any operations that were in process on the failed node. These operations could be any of the following:
- Individual Data Manipulation Language (DML) statements, such as INSERT, UPDATE, and DELETE.
- Active transaction involving DML statements, issuing ROLLBACK instructions to these transactions first.
- Active binding packages.
To support Oracle 12g RAC in TAF mode, Configuration Server can optionally resubmit DML statements (DML transactions or binding package execution) when the appropriate error messages are received from the DBMS. This is implemented using the configuration option dml-retry. Refer to the Framework Configuration Options Reference Manual for the full description of this option.