Document ID: 12001.1
Subject: V6 AND V7 TOOLS COEXISTENCE
Last Modified: 06 November 1996
Author: Vivekanandhna Raja
Installing V6 and V7 Tools on a PC running WINDOWS
--------------------------------------------------
Question : What do we mean by mean by "V7" and "V6" tool??
----------
Answer : All ORACLE applications are developed using API's that ORACLE provi-
---------- -ides. These are the EMBEDDED SQL and OCI API's. A V6 tool would be
using V6 API's and thus linked with corresponding libraries whereas
a V7 application would use the V7 API's (which is a superset of the
V6 API's) and thus be linked in with V7 specific libraries.
Question : If the only difference is in the libraries that have already been
---------- linked into the application then what can go wrong if one installed
both the V6 and V7 tools under a single directory?
Answer : The obvious difference between the old V6 tools and the new V7 tools
---------- will be the installation itself. While V6 tools used the DOS install,
the V7 tools rely on the WINDOWS version of the install.
The next important difference is the way in which V6 and V7 tools
look for configuration files and parameters. V6 tools will look for
ORACLE specific parameters (like LOCAL , REMOTE, etc.) i n the DOS
environment as well as in the file that is pointed to by the CONFIG
environment variable, whereas V7 tools will look for parameters in
the file pointed to by the ORA_CONFIG entry in WIN.INI or by the DOS
environment variable ORA_CONFIG.
Moreover message files used by a V7 version and a V6 versions of
the same tool will be named identically and thus be overwritten by
the installers. The installer for V6 tools will overwrite the instal-
-ler for V7 tools or vice-versa.
Question : What should one do?
----------
Answer :
----------
(1) V6 tools are typically installed under the directory ORACLE6 while V7
tools are installed under the directory ORAWIN. Under the BIN
subdirectory of either of these are located the DLL's that the tools
use. So, both these subdirectories should be part of the DOS environ-
-ment variable "PATH" so that WINDOWS won't have trouble locating any
of these DLLs. e.g.
SET PATH=.....;C:\ORAWIN\BIN;C:\ORACLE6\PBIN;C:\ORACLE6\BIN;....
(2) V7 tools need the ORA_CONFIG to point to an initialization file which
defaults to ORACLE.INI in the WINDOWS directory. If you use V7 tools
for DOS (like the V7 SQLDBA utility) you must set the ORA_CONFIG
environment variable to point to ORACLE.INI. V6 tools need the DOS
environment variable to point to a configuration file which defaults
to CONFIG.ORA in the ORACLE6 directory irrespective of whether the
tools is a WINDOWS app. or a DOS app. e.g.
SET ORA_CONFIG=C:\WINDOWS\ORACLE.INI
SET CONFIG=C:\ORACLE6\CONFIG.ORA
in the AUTOEXEC.BAT and
[ORACLE]
ora_config=c:\windows\oracle.ini
in the WIN.INI.
(3) In case DOS based SQL*Net drivers are used for connecting to remote
databases from a V7 tool, the INTERRUPT parameter must be the same in
both the ORACLE.INI and CONFIG.ORA (i.e. either both have the same
setting or both make no mention of it.). If there is a mismatch , you
will receive ORA-3121 during connect attempts. This is due to the fact
that the SQL*Net TSR hooks the Interrupt Vector speciied in the CONFI-
-G.ORA while the V7 tool uses the INTERRUPT from ORACLE.INI to try and
locate the SQL*Net driver. Also the TCP services and hosts file specs.
must be present in the CONFIG.ORA.
in the ORACLE.INI in the CONFIG.ORA
ORACLE_HOME=C:\ORAWIN ORACLE_HOME=C:\ORACLE6
...... ......
INTERRUPT=101 INTERRUPT=101
XMMITR=102 XMMITR=102
TCP_SERVICES_FILE=...
TCP_HOSTS_FILE=......
The DOS Interrupt Table
|
v
|__________| INTERRUPT=y
INTERRUPT=x --->>>|//////////| from the CONFIG.ORA
from ORACLE.INI |//////////| SQL*Net DOS TSR hooks
ORACLE libs try |----------| this vector !
to use INT VECTOR | | |
to locate DOS |__________| | __________________
SQL*Net TSR !! |\\\\\\\\\\| | | SQL*Net Driver |
|
|\\\\\\\\\\|<<--------| | Header ....... |
|----------|----------------->>>|_________________|
| | | Driver Entry |
| Points ... |
|_________________|
(4) On the otherhand if V6 tools use SQL*Net WINDOWS DLL drivers, then
SQL*Net-relevant settings like the HOSTS file and the SERVICES file
specifications must be placed in ORACLE.INI. e.g.
TCP_SERVICES_FILE=.....
TCP_HOSTS_FILE=........
in ORACLE.INI.
(5) Also connect related information like the LOCAL,REMOTE parameters must
be placed in the correct configuration file - for a V7 application in
the ORACLE.INI and for a V6 application in CONFIG.ORA. This is irresp-
-ective of whether you use the DOS SQL*Net TSRs or the WINDOWS SQL*Net
DLLs to connect to your remote database.
(6) In case you are using WINDOWS based applications and use the DOS based
SQL*Net TSR's to connect to a remote database, you may need to use
the NETINIT.EXE utility to get rid of ORA-3112 errors during connect
attempts. Now if it is a V7 application like DataBrowser,you will need
NETINIT7.EXE (in the ORAWIN\BIN dir.) instead of NETINT.EXE. The way
things work is V7 WINDOWS apps. use the ORACLE DLL ORA7WIN.DLL which
is also linked into NETINIT7.EXE. NETINIT7.EXE preallocates DOS memory
required number of remote and local sessions and passes the pointers to
these areas to ORA7WIN.DLL where subsequent connect attempts can use
them.
In this case the ORA7WIN.DLL is a common area where the exchange of
this information occurs. So, as one can see running NETINIT7.EXE to
get rid of ORA-3112 erros from a V6 app. will not get us anywhere !!!!
Running NETINIT7.EXE and a V7 Windows app.
------------------------------------------
_________________ ___________________
| | | |
| Netinit7.EXE | | V7 Windows APP |
|_______________| |_________________|
| |
Preallocate Mem Attempt To Connect
In the DOS are |
(uses ORACLE.INI settings) |
(for WIN_LOCAL_SESSIONS ) (parameters LOCAL etc.)
(and WIN_REMOTE_SESSIONS) (from ORACLE.INI )
| Call To ORA7WIN.DLL
Pass Pointers To |
ORA7WIN.DLL __________________________ |
| |global pointers for conn| |
|___________|memory |______|
|------------------------|
| ORA7WIN.DLL |
|________________________|
Running NETINIT.EXE and a V7 WINDOWS app.
-----------------------------------------
you will not get rid of your ORA-3112 in this case
_________________ ___________________
| | | |
| Netinit.EXE | | V7 Windows APP |
|_______________| |_________________|
| |
Preallocate Mem Attempt To Connect
In the DOS are |
(uses CONFIG.ORA settings) |
(for WIN_LOCAL_SESSIONS ) |
(and WIN_REMOTE_SESSIONS) |
| Call To ORA7WIN.DLL
Pass Pointers To |
ORA6WIN.DLL |
___________|____________ ___________|_______________
| | | Nothing preallocated for|
|global pointers for conn| | connections in the DOS |
|memory in the DOS area | | area. |
|------------------------| |-------------------------|
| ORA6WIN.DLL | | ORA7WIN.DLL |
|________________________| |_________________________|