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          |
  |________________________|                 |_________________________|