Tags:
create new tag
view all tags

APPX 5 on Solaris SPARC connectivity to Oracle

How to configure APPX 5 on Solaris SPARC to store data inside Oracle.


Overview

Release 5.0.0 or higher of the APPX Utility allows APPX to connect to Oracle via Oracle's Instant Client instead of the Oracle Client Interface. This allows for an easier configuration because the files can be placed on the server by hand instead of making use of an Oracle install routine to place the Client. This document will show you where to get the Oracle Instant Client, where you might place the Instant Client Files from Oracle, and how to make APPX aware of the Oracle Instant Client files so that you can store APPX data inside Oracle. This document will focus on the Oracle Solaris platform, specifically Oracle's Solaris SPARC 8 64 bit product. This wiki site also has instructions for other platforms performing APPX to RDBMS connectivity, Linux x86-64, IBM AIX, HPUX PARISC, HPUX Itanium, Oracle Solaris SPARC, and Microsoft Windows.

Prerequisites

This document assumes you already have Oracle Database installed on your network and configured to accept connections. For performance reasons, it is recommended that your RDBMS and APPX be on the same server. APPX should also already be installed with the AppxLoginMgr configured to accept logins.

Oracle Instant Client

Downloading

If you are running an APPX release prior to 6.0, you will need the 32 bit Oracle interface. Even if your OS is 64 bit, even if your Oracle RDBMS is 64 bit, APPX requires you to connect to Oracle RDBMS via the 32 bit version of the Oracle Instant Client. You can download the 32 bit version of Oracle Instant Client here. If you are running APPX 6.0 or greater, you need to know if you are running 32 or 64 bit APPX engine and download the appropriate Instant Client.

On my test server here I have APPX installed on Oracle Solaris 8 SPARC 64 bit OS (aka SunOS 5.8). Oracle database is installed on a secondary server - Red Hat Enterprise 4 32 bit. The connection from APPX to Oracle should work fine for Oracle database 10.2.0.4 and above (including 11). I downloaded the 32 bit version of Oracle's Instant Client 10.2.0.4, selecting two file bundles, Instant Client Package - Basic and Instant Client Package - SQL*Plus.

Installing

I unzipped the Oracle Instant client files as shown below:

# find /usr/local/src/oracle/instantclient_10_2 -print
/usr/local/src/oracle/instantclient_10_2
/usr/local/src/oracle/instantclient_10_2/BASIC_README
/usr/local/src/oracle/instantclient_10_2/classes12.jar
/usr/local/src/oracle/instantclient_10_2/genezi
/usr/local/src/oracle/instantclient_10_2/libclntsh.so.10.1
/usr/local/src/oracle/instantclient_10_2/libnnz10.so
/usr/local/src/oracle/instantclient_10_2/libocci.so.10.1
/usr/local/src/oracle/instantclient_10_2/libociei.so
/usr/local/src/oracle/instantclient_10_2/libocijdbc10.so
/usr/local/src/oracle/instantclient_10_2/ojdbc14.jar
/usr/local/src/oracle/instantclient_10_2/SQLPLUS_README
/usr/local/src/oracle/instantclient_10_2/glogin.sql
/usr/local/src/oracle/instantclient_10_2/libsqlplus.so
/usr/local/src/oracle/instantclient_10_2/libsqlplusic.so
/usr/local/src/oracle/instantclient_10_2/sqlplus
#  

Testing

The location isn't terribly important, only that you know where the library files libclntsh, libnnz10, libocci, libociei and the executable file sqlplus are located. Let's test the Oracle Instant Client with SQL*Plus. You can't test the Oracle Instant Client with just any SQL*Plus. You must use a version of SQL*Plus that was developed to use the Instant Client library files. To perform the SQL*Plus connection we need five pieces of information from your Oracle DBA. My example values are listen in parenthesis below:

  • Oracle SID (customer)
  • TCP port number that Oracle is configured to listen (TCP 1521)
  • Resolvable DNS name or IP address of the Oracle server (10.50.0.6)
  • Oracle user ID (larry)
  • Oracle password (yacht)

I'll use the Oracle Easy Connect syntax to log in.

Failure without SHLIB_PATH

#
# /usr/local/src/oracle/instantclient_10_2/sqlplus lary/yacht@10.50.0.6:1521/customer
ld.so.1: /usr/local/src/oracle/instantclient_10_2/sqlplus: fatal: libsqlplus.so: open failed: No such file or directory
Killed
#
 

Notice the failure to open library libsqlplus in the text above. You can resolve this on Oracle's Solaris with an OS environment variable LD_LIBRARY_PATH as long as your are not OS user root. An example is below.

Success with LD_LIBRARY_PATH as long as you are not root

# export LD_LIBRARY_PATH=/usr/local/src/oracle/instantclient_10_2
LD_LIBRARY_PATH=/usr/local/src/oracle/instantclient_10_2: is not an identifier
#
# whoami
root
#
# su appx
bash-2.03$
bash-2.03$ /usr/local/src/oracle/instantclient_10_2/sqlplus larry/yacht@10.50.0.6:1521/customer
ld.so.1: /usr/local/src/oracle/instantclient_10_2/sqlplus: fatal: libsqlplus.so: open failed: No such file or directory
Killed
bash-2.03$
bash-2.03$ export LD_LIBRARY_PATH=/usr/local/src/oracle/instantclient_10_2
bash-2.03$
bash-2.03$ /usr/local/src/oracle/instantclient_10_2/sqlplus larry/yacht@10.50.0.6:1521/customer

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Jul 8 13:03:13 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
bash-2.03$ 

APPX

We can configure APPX now that we know that we can connect to Oracle database using the Instant Client library files via the special Instant Client version of SQL*Plus (you did perform that test right?). In order for APPX to successfully connect to Oracle database via the Oracle Instant Client, APPX must have visibility of certain environment variables prior to the start of APPX. Setting these environment variables in the commonly used appx.env file will not work. Setting them in the shell would work for APPX sessions started in that shell session. You should consider setting them inside the service environment variable file so that all connections to APPX via TCP (even the text based ones via appx -c) will be able to connect to Oracle via the Oracle Instant Client.

Configuration

Since the environment variables needed to enable APPX make use of the Oracle Instant Client must be present prior to the start of APPX, I've decided to place them in the APPX Login Manager environment variable file.

Environment variables

I'm going to set four environment variables, the first two are for the OS (LD_LIBRARY_PATH and LD_PRELOAD), and the last two are for APPX (APPX_OCI_DIR and APPX_OCI_LIB). These will be placed inside my APPX Login Manager environment variable file /usr/local/appx/services/appx-8060.env).

pwd
/space/appx/appx.502/services
cat appx-18060.env
# Appx connection manager environment variables
#
#   The entries in this file will become
#   environment variables in the engines
#   spawned by this service
#
#   blank lines are ignored
#
#   anything following a '#' is treated as a comment
#
#   letter case IS important in this file
# --------------------------------------------------
APPX_KEYMAP = Windows
APPXPATH = /space/appx/appx.502/data
LD_LIBRARY_PATH=/usr/local/src/oracle/instantclient_10_2
LD_PRELOAD=libclntsh.so.10.1
APPX_OCI_DIR=/usr/local/src/oracle/instantclient_10_2
APPX_OCI_LIB=libclntsh.so.10.1

The four environment varialbes needed for for the Oracle connection on Oracle's Solaris (SPARC) are LD_LIBRARY_PATH, LD_PRELOAD, APPX_OCI_LIB and APPX_OCI_DIR.

FMS settings

We need to create an FMS group of type 5 (Oracle) that will point to the Oracle RDBMS server. To do this we will need the same five pieces of Oracle configuration data that we used when we performed a test connection to Oracle database using the Instant Client version of SQL*Plus. The values that I'm using in this example are listed below in parenthesis.

  • Oracle SID (customer)
  • TCP port number that Oracle is configured to listen (TCP 1521)
  • Resolvable DNS name or IP address of the Oracle server (10.50.0.6)
  • Oracle user ID (larry)
  • Oracle password (yacht)
FMS Group Creation

After creating the FMS group, we will define an APPX DMO PROSPECT to make use of this FMS group, finally performing a CREATE FILE from within APPX to create the file in Oracle database. These steps are documented in screen shots below.

001.png

Fig. 1

First we need to go to our FMS seetings inside APPX.

002.png

Fig. 2

Go into APPX ADD mode and create an FMS group with a meaningful name of a type 5 for your Oracle data.

003.png

Fig. 3

Now you need to fill out at least Server Name and Table Naming Scheme. You can select the HINTS button to see other suggested formats for the Table Naming Scheme if you wish. Note: The server name must be in the format <servername or ip>:port/Oracle SID

004.png

Fig. 4

I'm going to create a default identity that all my APPX connections to Oracle will use that don't have a specific matching identity.

005.png

Fig. 5

My default identity is Oracle user ID larry. Any APPX user without a specified Oracle Identity will connect to Oracle with this user ID.

006.png

Fig. 6

Figure 6 shows the entry of the default identity password. This is the password for my Oracle user ID larry.

Define Data file to point to Oracle

We're now finished with the creation of the FMS group. In the six screen shots above, you can see the creation of the FMS type 5 group named oracle10. We now are going to define APPX DMO PROSPECT to make use of this FMS group so that the data can be stored in Oracle. This will be documented in the following seven screen shots.

007.png

Fig. 7

Let's go to Database Definitions for DMO.

008.png

Fig. 8

Select DMO

009.png

Fig. 9

Select Database Management

010.png

Fig. 10

Go to File Selection

011.png

Fig. 11

Select PROSPECT

012.png

Fig. 12

In File Specifications change the FMS type to 5, and the FMS GROUP name to be whatever you used as your Oracle FMS group name. I used a name of oracle10.

013.png

Fig. 13

Finally, in figure 13, you see the Create Files screen with a message that the Oracle DMO PROSPECT file was created. If you receive a message similar to "*Can't load Oracle Call Interface (libclntsh)" see Troubleshooting section below.

Troubleshooting APPX to Oracle connection

If you try to make a connection to Oracle from APPX and receive a message "*Can't load Oracle Call Interface (libclntsh)" then you might be missing the environment variables required, or you might have them set to incorrect paths. Make sure you downloaded the correct Oracle Instant Client files for your platform and that the bitness matches your APPX engine.

Verify environment variable values via the following path: System Administration > System Setup > Release Information > Environment Variables. Did you set the environment variables inside appx.env? Setting these Oracle connectivity environment variables inside appx.env will not work. These environment variables must be present prior to the appx session starting. Try setting them in the appxLoginMgr environment variable file and then make sure you restart the daemon and reconnect to try the Oracle connection again.

-- JoeOrtagus - 2010-07-09

Edit | Attach | Watch | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r4 - 2016-04-07 - JeanNeron
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback