Consultor Eletrônico



Kbase 18995: How to Probuild Your Remote Oracle DataServer Executable.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   10/15/2008
Status: Verified

GOAL:

How to run the PROBUILD utility to generate the ORACLE DataServer executables on UNIX systems.

GOAL:

How to trouble shoot PROBUILD Oracle dataserver problems?

FACT(s) (Environment):

UNIX
Oracle DataServer
Progress 8.3x

FIX:

Here is the step-by-step procedure:

1. Setup your UNIX environment for Oracle. The best way is to create a script that will set up your ORACLE environment - pointing to the ORACLE database (if you are working with multiple ORACLE instances/versions). At the end of this solution you will find an example script. Run it from the current shell (". setora" for example). Make sure that you have the right patch level installed on your system required to run ORACLE. For strict listing consult the ORACLE release notes on the installation manual.

2. Run your environment script and make sure everything for Progress is set correctly. Create an empty directory and make this your working directory. Run PROBUILD ("$DLC/probuild/eucapp/probuild") and create two link scripts for "Remote ORACLE Dataserver" and "PROGRESS Client"  If you acccept the default values, two link scripts will be created: ldorasrv and ldpro.

3. Check the oraenv.lg file to see if it corresponds to your environment. If you used the script mentioned above, you should see that the LIBPATH is manualy set using dynamic libraries for Oracle8 and static for Oracle7.  It is advisable to use static libraries as opposed to dynamic libraries, as there is a problem using these with ORACLE 7.3.3 and below. The reason not to use dynamic libraries for these versions is that we have found the executable linked to be unreliable resulting in the Progress error 49 or undefined symbols are reffered in the dynamic library (Oracle 7.3.4). The only downside of using static libraries for Oracle7 is that you loose the performance benefits, and the improvements in memory utilization. If you still want to use dynamic libraries check the ORACLE bug database (http://metalink.oracle.com) as there is bug in several ORACLE versions which requires to rebuild the ORACLE dynamic library

If you have problems with the ORALIB variable, then you can look in the Progress buildenv script ($DLC/probuild/eucapp/buildenv), which is de facto creating the oraenv.lg file. Search for which ORACLE make file is used and correct the line to point to the valid make file. (for example, there is inst_rdbms.mk listed, but you have oracle.mk or demo.mk. So change the file name).

The buildenv script will try to work out which is the correct make file, however if this fails, its most likely due to the fact that the ORACLE_HOME variable is improperly set or the "make" command is not in your PATH variable.

Another nice way how to "automatically" switch to the static libraries usage is to simply rename the libclntsh.s(x) file in the $ORACLE_HOME/lib directory so the buildenv script will not find this file and automatically set the environment for the static libraries.

Check the updated Appendix E in the v9 DataServer for ORACLE Guide.

4. Simply run the link scripts (".\ldpro",".\ldorasrv"). It should create two executables (_progres and _orasrv). If you get any errors about objects that couldn't be found, check if ORACLE is installed and whether you can run the database, whether you can run the sqlplus utility on the server, whether SQL*Net and libraries are installed, whether ORACLE Pro*C product is installed, whether you have the correct C compiler installed for your system with all libraries. Bear in mind, that some compilers do not install all libraries into the /usr/lib directory by default (ie. C 4.1 for IBM). Make sure that these libraries are in your SHLIB_PATH as well. The requirements Progress has for the C compiler are the same as ORACLE requirements are, so for strict listing for each system consult the ORACLE release notes on installation manual.

5. Test the executables which were created in your working directory. Before you start the broker ("_probrkr" by default) make sure that your ORASRV is set to the new ORACLE DataServer executable ("_orasrv" by default).

6. Test the connection and watch the dataserv.lg file for any error. message.

7. Should you encounter a problem at this point, either check the solution center for the error you received, or call support with your ORACLE DataServer serial number, full ORACLE version number and variable settings as described in this solution.

SCRIPT EXAMPLE:

Note that this script is suited for our test system and you will need to change this script to suit your system. The ORALIB value is only example on how it should look like. See the UNIX scripting manual and the ORACLE DataServer manual for the environment variables meaning. It is assumed that you are using the Bourne Shell as your default shell.


######################################################
#                                                    #
#  Script for setting Oracle DataServer Environment  #
#  (HP-UX 10.20)                                     #
#  Pavel Jost (29.4.1999) v1.2                       #
#                                                    #
######################################################

echo "Would you like to use a DataServer ?\n
       1) Oracle 8.0.4
       2) Oracle 7.3.2
       3) No Oracle please\n
       Enter selection : \c"

read version

case $version in
 1) # ORACLE 8.0.4
       ORACLE_BASE=/usr2/oracle; export ORACLE_BASE
       ORACLE_HOME=/usr2/oracle/app/oracle/product/8.0.4; export ORAC
LE_HOME
       ORACLE_SID=orcl; export ORACLE_SID
       ORACLE_TERM=${TERM}; export ORACLE_TERM
       ORALIB=/usr2/oracle/app/oracle/product/8.0.4/lib/libclntsh.sl;
export ORALIB
       ORAVER=8; export ORAVER
       TNS_ADMIN=/usr2/oracle/app/oracle/product/8.0.4
etwork/admin;
export TNS_ADMIN
       SHLIB_PATH=/usr2/oracle/app/oracle/product/8.0.4/lib,/usr/lib;
export SHLIB_PATH
       LD_LIBRARY_PATH=$SHLIB_PATH; export LD_LIBRARY_PATH
       LIBPATH=$SHLIB_PATH; export LIBPATH
       PATH=$ORACLE_HOME/bin:$PATH; export PATH
       ORASRV=$DLC/bin/ora$ORAVER\srv; export ORASRV
       PROBRKR=$DLC/bin/_probrkr; export PROBRKR
       echo "You're ready to access Oracle 8.0.4 on HP-UX 10.20" ;;
 2) # ORACLE 7.3.2
       ORACLE_BASE=/oracle; export ORACLE_BASE
       ORACLE_HOME=/oracle/app/oracle/product/7.3.2; export ORACLE_HO
ME
       ORACLE_SID=ora73; export ORACLE_SID
       ORACLE_TERM=${TERM}; export ORACLE_TERM
       ORALIB="-L/oracle/app/oracle/product/7.3.2/lib -L/oracle/app/o
racle/product/7.3.2/rdbms/
lib -lsqlnet -lncr -lsqlnet -lclient -lcommon -lgeneric -lsqlnet -lncr
-lsqlnet -lclient -lcommo
n -lgeneric -lepc -lnlsrtl3 -lc3v6 -lcore3 -lnlsrtl3 -lcore3 -lnlsrtl3
-lcl -lcore3"; export ORA
LIB
       ORAVER=7; export ORAVER
       SHLIB_PATH=$ORACLE_HOME/lib:/usr/lib; export SHLIB_PATH
       LD_LIBRARY_PATH=$SHLIB_PATH; export LD_LIBRARY_PATH
       LIBPATH=$SHLIB_PATH; export LIBPATH
       TNS_ADMIN=/usr2/oracle/app/oracle/product/8.0.4
etwork/admin;
export TNS_ADMIN
       PATH=$ORACLE_HOME/bin:$PATH; export PATH
       ORASRV=$DLC/bin/ora$ORAVER\srv; export ORASRV
       PROBRKR=$DLC/bin/_probrkr; export PROBRKR
       echo "You're ready to access Oracle 7.3.2 on HP-UX 10.20" ;;
esac
.