1. Why is Oracle client software required?
Oracle client software must be installed on all servers with R/3 instances for the following reasons:
a) The R/3 kernel is always linked to a specific Oracle release that is largely independent of the Oracle server release used. For this purpose, an "interface" is required, which receives R/3 requests in the Oracle release format linked with R/3 and then transfers them so that they are also understood by the Oracle server. The Oracle client software includes this interface.
b) Application servers do not have any access to the Oracle server software. Special software parts (such as codepage or error information) must therefore be stored there. These components are also contained in the client software.
2. Where can I find a description of how to install Oracle client software?
Note 180430 and the notes listed there contain exact guidelines for the installation of client software depending on the R/3 kernel release.
3. How is the Oracle client software version dependent on the Oracle release and the R/3 kernel?
The version of the client software mainly depends on the R/3 kernel release. It is important, which Oracle release is linked to the R/3 kernel. You will find this information in the following overview:
3.1I Y2K: 7.3.4
3.1I_COM: 8.0.6
3.1I_EXT 64-bit (Except LINUX): 8.1.7
3.1I_EXT 64-bit (+ LINUX 32-bit): 9.2.0
4.0B: 8.0.5
4.0B_COM (except AIX 5.x 64-bit): 8.0.6
4.0B_COM AIX 5.x 64-bit: 9.2.0
4.0B_EXT 32-bit (Except LINUX): 8.1.7
4.0B_EXT 64-bit (+ LINUX 32-bit): 9.2.0
4.5B (except AIX 5.x 64-bit): 8.0.5
4.5B AIX 5.x 64-bit: 9.2.0
4.5B_EXT 32-bit (Except LINUX): 8.1.7
4.5B_EXT 64-bit (+ LINUX 32-bit): 9.2.0
4.6B: 8.0.5
4.6C 8.0.5
4.6D (except AIX 5.x 64-bit, HPIA64): 8.0.5
4.6D AIX 5.x 64-bit, HPIA64: 9.2.0
4.6D_EXT 32-bit (Except LINUX): 8.1.7
4.6D_EXT 64-bit (+ LINUX 32-bit): 9.2.0
6.10: 8.1.7
6.20 (except AIX 5.x 64-bit, HPIA64): 8.1.7
6.20 UNICODE (+ 6.20 AIX, HPIA64): 9.2.0
6.40: 9.2.0
The correct version of the Oracle client software is delivered on the R/3 kernel CD.
The only restriction in relation to the client software and database release is that no client software with a higher version than the database can be used. Therefore, the client software does not have to be adjusted with an Oracle upgrade. There is also no need to import new client software if you switch to a kernel that is linked to the same Oracle version as the kernel used before. This explains why no new Oracle client software is required when you import the downward compatible 4.6D kernel to a 4.6B kernel or a 4.6C kernel, if both source and target kernels are linked to 8.0.5.
In some cases, 4. 6D kernels are already linked to more recent Oracle releases (for example, 8.1.6).
Also refer to the list of exceptions below.
4. How can I check which Oracle Release is linked to an R/3 kernel?
Execute "disp+work -V". One of the lines displayed appears as follows:
database library ora OCI_80500
In this example, the R/3 kernel is linked to Oracle 8.0.5.
5. Which components does the client software consist of?
The Oracle client software consists of the following components:
- Oracle client library libclntsh.<ext>: Provides functions for communicating with the database.
- NLS files: Contain code page information
- Message files: Contain texts about Oracle error codes
- Empty network/admin directory: To include Net8 configuration files (listener.ora, tnsnames.ora, sqlnet.ora, protocol.ora)
All of these components are also part of the standard Oracle (server) software. However, they are usually a different version (because the client software version depends on the R/3 kernel) and are in a different location in the file system.
6. In which directories are the components of the client software located?
The individual components of the client software are stored in the following locations (depending on the R/3 kernel release):
a) R/3 kernel 4.0B or lower:
- Client library: Not available
- NLS files: $ORACLE_HOME/ocommon/NLS_723/admin/data
$ORACLE_HOME/ocommon/NLS_733/admin/data
$ORACLE_HOME/ocommon/NLS_ <nlsrel>/admin/data
- Message files: $ORACLE_HOME/rdbms/mesg
- network/admin: $ORACLE_HOME
b) R/3 kernel = 4.5B:
- Client library: /usr/sap/< sid>/SYS/exe/run
(renamed as liboraclnt.<ext>; not a part of the client software
archive, but
a kernel component)
- NLS files: $ORACLE_HOME/ocommon/NLS_723/admin/data
$ORACLE_HOME/ocommon/NLS_733/admin/data
$ORACLE_HOME/ocommon/NLS_ <nlsrel>/admin/data
- Message files: $ORACLE_HOME/rdbms/mesg
- network/admin: $ORACLE_HOME
c) R/3 kernel = 4.6D:
- Client library: /oracle/<oclrel>/lib
- NLS files: /oracle/<oclrel>/ocommon/nls/admin/data
- Message files: $ORACLE_HOME/rdbms/mesg
- network/admin: $ORACLE_HOME
d) Kernel linked to Oracle client 8i:
- Client library: /oracle/client/81x_<bits>/lib
- NLS files: /oracle/client/81x_< bits>/ocommon/nls/
admin/data
- Message files: $ORACLE_HOME/rdbms/mesg
- network/admin: $ORACLE_HOME
e) Kernel linked to Oracle client 9i:
- Client library: /oracle/client/92x_<bits>/lib
- NLS files: /oracle/client/92x_< bits>/ocommon/nls/
admin/data
- Message files: $ORACLE_HOME/rdbms/mesg
$ORACLE_HOME/oracore/mesg (Oracle client >= 9i)
$ORACLE_HOME/network/mesg (Oracle Client >= 9.2.0.6)
- network/admin: $ORACLE_HOME
7. Where are the components of the server software located in relation to this?
The Oracle server software is always located in subdirectories of $ORACLE_HOME:
- Client library: $ORACLE_HOME/lib[64]
- NLS files: $ORACLE_HOME/ocommon/nls/admin/data
- Message files: $ORACLE_HOME/rdbms/mesg
$ORACLE_HOME/oracore/mesg (Oracle server >= 9i)
$ORACLE_HOME/network/mesg (Oracle Client >= 9.2.0.6)
- network/admin: $ORACLE_HOME
8. Why are the message files of the client software always written to ORACLE_HOME - this contains the server software?
These message files must be installed under $ORACLE_HOME/.../mesg since this path is determined by Oracle. You cannot use another location.
Although the message files are only unpacked on the application server, there is no risk of Oracle server message files being overwritten by the client files.
9. How can I check which files are contained in the client software archive?
The "t" SAPCAR option provides you with an overview of the files contained in the client software archive, for example:
> SAPCAR -tvf OCL80532.CAR
/oracle/805_32/lib/libclntsh805_32.so
/oracle/805_32/ocommon/nls/admin/data/lx00001.nlb
/oracle/805_32/ocommon/nls/admin/data/lx00002.nlb
/oracle/805_32/ocommon/nls/admin/data/lx00003.nlb
network/admin
rdbms/mesg/bbedar.msb
rdbms/mesg/bbedar.msg
rdbms/mesg/bbedca.msb
...
10. Which client software components are unpacked on the database and application servers?
You must never overwrite the Oracle server software on the database server with the Oracle client software. This is why the message files and network/admin that would be stored in the $ORACLE_HOME subdirectory (the server software) are not unpacked on the database server as part of the client software installation. Only the client library and the NLS files are unpacked on the database server. However, the complete client software package is installed on the application servers.
Up to and including 4. 5B, the NLS files of the client software were written to an $ORACLE_HOME subdirectory. However, this is irrelevant since the subdirectory names (NLS_723, NLS_733 and NLS_<nlsrel>) are different from the server software subdirectory (nls).
11. Which environment variables are involved when I access the client software?
The following environment variables contain paths to elements of the client software (or the relevant server software component):
a) <LIBRARYPATH>: Path to the Oracle client library libclntsh.<ext>
b) ORA_NLS: Path for the NLS files for Oracle 7.2
c) ORA_NLS32: Path for the NLS files for Oracle 7.3
d) ORA_NLS33: Path for the NLS files for Oracle 8 and 9
ORA_NLS is no longer used in current R/3 Systems because no current R/3 kernel is still linked to 7.2. ORA_NLS32 is only required the 3.1| Y2K kernel, since this is still linked to 7.3.4. ORA_NLS33 suffices for all 4.x R/3 kernels.
While most of the NLS files for Oracle 8 were still downward compatible, with Oracle 9 even NLS files within a release (9.2.0.1 and 9.2.0.2, for example) are incompatible. This can cause problems as described in Note 592657 if ORA_NLS33 is set incorrectly.
12. The SAP recommendations for <LIBRARYPATH> are confusing and sometimes appear contradictory. How can I set this environment variable correctly?
Usually, different settings can be made for <LIBRARYPATH>. As a result, many of the suggestions and instructions from SAP notes and guidelines may seem contradictory. The following sections provide explanations and background information for using the <LIBRARYPATH> variable:
- The <LIBRARYPATH> variable has the following minimum requirement with regard to the R/3 kernel and Oracle:
- R/3 kernel 4.0B or lower: The libclntsh.<ext> is statically implemented in the kernel -> No reference required in <LIBRARYPATH>
- R/3 kernel other than 4.5B: The client library is delivered under another name as liboraclnt.<ext> as part of the R/3 kernel and saved in the directory /usr/sap/<sid>/SYS/exe/run -> <LIBRARYPATH> must contain /usr/sap/<sid>/SYS/exe/run
- R/3 kernel 4.6B (patch level 89 or higher), 4.6C, 4.6D: The libclntsh.<ext> is statically implemented in the library dboraslib.<ext> -> No reference required in <LIBRARYPATH>
- R/3 Kernel 6.20 NONUNICODE: The path /oracle/client/81x_<bits>/lib is permanently set in the kernel -> No reference required in <LIBRARYPATH>
- R/3 Kernel 6.20 UNICODE, 6.40: The /oracle/client/92x_<bits>/lib path is permanently set in the kernel -> No reference required in <LIBRARYPATH>
- For the Oracle server, the following minimum requirement applies to the <LIBRARYPATH> variable (for example, for executing svrmgrl or sqlplus):
- LINUX, RELIANT: Oracle does not recognize where the client library is -> <LIBRARYPATH> must contain $ORACLE_HOME/lib[64] Other systems:
- Otherwise: Oracle either does not require the client library or knows where it is -> No reference required in <LIBRARYPATH>
Given that <sid> adm executes both R/3 and Oracle tools, while ora<sid> uses only Oracle tools, the following minimum requirement applies to <LIBRARYPATH> on the DATABASE SERVER from an Oracle perspective:
- R/3 kernel 4.5B on LINUX/RELIANT systems:
- <sid>adm: /usr/sap/<sid>/SYS/exe/run:$ORACLE_HOME/lib[64]
- ora<sid>: $ORACLE_HOME/lib[64]
- R/3 kernel 4.5B on other UNIX systems:
- <sid>adm: /usr/sap/<sid>/SYS/exe/run
- R/3 kernel <> 4.5B on LINUX / RELIANT:
- <sid>adm: $ORACLE_HOME/lib[64]
- ora<sid>: $ORACLE_HOME/lib[64]
- R/3 kernel <> 4.5B on other UNIX systems:
Neither ora<sid> nor $ORACLE_HOME/lib[64] is available on APPLICATION HOSTS. The following settings are required for <LIBRARYPATH> for <sid>adm in relation to Oracle:
- R/3 kernel other than 4.5B: /usr/sap/<sid>/SYS/exe/run
Many notes recommend settings that exceed these minimum prerequisites for Oracle. The recommendations often appear contradictory. However, all of the recommendations are correct when applied individually. It therefore makes sense to always include /usr/sap/<sid>/SYS/exe/run for <sid>adm in <LIBRARYPATH> as well, as this directory contains other libraries (not relevant for Oracle) that are sometimes required by R/3 (see Note 588739, for example).
13. Since ORA_NLS33 and <LIBRARYPATH> do not ultimately point to the client software directories in many cases, is it necessary to install the client software on the database server with R/3?
The NLS files and the client library are unpacked on the database server as part of the client software installation. However, the relevant environment parameters ORA_NLS33 and <LIBRARYPATH> are then set on the server directories (or not at all). The question arises as to whether the client software is actually required on the database server:
a) R/3 <= 3.x linked to Oracle 7.x: The client software must be installed because ORA_NLS and ORA_NLS32 point to client software directories.
b) R/3 <= 4.x linked to Oracle 8.x: The client software is not required on the database server, as it is not referenced by either environment variables or permanently set paths. Nevertheless, you should install the client software so that your setup complies with the standard system and is equipped to deal with exceptional situations (as described in Note 211760, for example).
c) R/3 >= 6.x: The client software must be installed on the database server because the path to the client software is permanently set in the R/3 kernel.
14. Are there exceptions to the rules described above?
Yes, there are a few exceptions to consider:
- On TRU64, the path to the client software was not set permanently in the kernel tools with a Release 6.10 or 6.20 kernel. To correct this problem, you must set LD_LIBRARY_PATH to /oracle/client/81x_64/lib (or /oracle/client/92x_64/lib for the UNICODE kernel) or you must import a corrected database library. Note the corresponding point from Note 538849, as well as Note 400818.
- On SOLARIS, some of the 64-bit 4.6x kernels are linked with the Oracle client software dynamically instead of statically. The result of this, when using tools with s-bit (for example, sapdba), is that libclntsh and libwtc8 from $ORACLE_HOME/lib[64] are no longer accepted (operating system security). These libraries must be copied to a reliable directory such as /lib or /usr/lib instead. In addition, the kernel is linked to 8.1.6 instead of 8.0.5.
- 64-bit kernels on AIX 5.x are generally linked to Oracle 9.2.
- You must not install 9.2 client software on a database server on which Oracle 9.2.0 is installed (see Note 539922). Instead, you must use the CROCLLNK script to create the relevant links to the server software.
15. Where can I find the current patches for the client software?
In general, you do not need to import patches for the client software. You only need to download a more recent patch for the client software in exceptional cases. Note 688980 describes where you can download a current 8.1.7 client patch. Notes 740141 and 886783 contain information for the current 9i client patch.
16. Which errors can be caused by incorrectly installed client software?
Incorrectly installed client software or incorrect environment settings can cause numerous errors that are difficult to analyze.
- Notes 393620 and 592657 describe problems that may arise if ORA_NLS33 is set incorrectly.
- Note 538849 describes errors that may arise if the Oracle client library cannot be found. Notes 361478 and 335515 deal with problems resulting from incorrect libclntsh versions. Another consequence of incorrect client libraries can be performance problems due to an inactive TCP.NODELAY (see Note 619188).
- Incorrect installation of the message files leads to errors as described in Note 634134.
- Note 566051 describes errors that can occur with an incomplete 9I client (without oracore directory).
In addition to the symptoms mentioned in these notes, numerous other problems may also arise.
17. Why does my system run without problems even though ORA_NLS33 is set incorrectly?
ORA_NLS33 is only used if US7ASCII is not used as a code page. If the database is running using US7ASCII and NLS_LANG = AMERICAN_AMERICA.US7ASCII is set in the environment, the ORA_NLS33 environment variable is irrelevant.
18. What do I need to take into account when using sapdba and the BR tools?
Where the client software is concerned, SAPDBA and the BR*TOOLS, referred to as DBA tools in the following, - follow different rules than the R/3 kernel:
- DBA tools 4.6D or lower: The tools are statically linked to the Oracle client software. Therefore, there are no problems with these releases in relation to client libraries (exception: 64-bit SOLARIS, see above).
- DBA tools 6.x or higher: The version of the tools should match the installed Oracle server version. Note 593582 describes problems that may occur when you access client libraries, and steps for troubleshooting.
Note that environment settings (such as ORA_NLS33 and <LIBRARYPATH>) are always based on the R/3 kernel and not on the Oracle version with which SAPDBA and the BR tools are linked. These tools use other mechanisms (dynamic adjustment of ORA_NLS33 during program execution, static or fixed path linkage) to find the necessary files.
19. How must the CROCLLNK links be set if I have several Oracle 9i instances on one machine?
In the CROCLLNK script, links are created from /oracle/client/92x_<bits> to $ORACLE_HOME. If there are several Oracle 9i instances and therefore also several Oracle Homes, you must decide on one of these Oracle Homes. Always set the links to one of the Oracle Homes with the lowest patch level. For example, if there are two Oracle Homes with 9.2.0.3, and one Oracle Home with 9.2.0.2, you must set the links to the NLS files and the libraries in the 9.2.0.2 Home. You have to do this manually on an individual basis.
20. How do I install the client software when using a cluster?
Refer to SAP Note 651797.
21. Does the client software influence performance?
Even if the client software is installed correctly, it can affect the performance of database accesses to a certain extent. However, these effects are usually minimal and similar from version to version.
However, if you use the Oracle 8.1. 7 client software on SOLARIS, see Note 868590 in order to optimize the accesses to orausb.msb.
22. What must I do, if I need different client software patch sets on a single server?
It is necessary under certain circumstances to install several Oracle 9i client software patch sets on a single machine in parallel, for example:
- Operating a database with Oracle 10g with a 9i-linked kernel -> Client 9.2.0.7
- Operating a database with Oracle 9.2.0.6 with a 9i-linked kernel -> Client 9.2.0.6
In such cases, refer to Note 964783.
23. Where can I find more information about the Oracle client software?
A PowerPoint presentation attached to this note contains more information and graphic displays of the contexts.