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
.