tagspaces tag files and windows oracle

windows - tag - ¿Cuál es la mejor manera de determinar qué versión de cliente de Oracle estoy ejecutando?



tag folders (13)

En Unix

Si no conoce la ubicación o la versión del producto Oracle instalado, puede encontrarlo en el inventario que generalmente se registra en /etc/oraInst.loc.

> cat /etc/oraInst.loc inventory_loc=/export/oracle/oraInventory **--> Inventory location** inst_group=dba > cd /export/oracle/oraInventory > cd ContentsXML

Aquí busca un archivo inventory.xml

> cat inventory.xml <?xml version="1.0" standalone="yes" ?> <!-- Copyright (c) 1999, 2010, Oracle. All rights reserved. --> <!-- Do not modify the contents of this file by hand. --> <INVENTORY> <VERSION_INFO> <SAVED_WITH>11.2.0.2.0</SAVED_WITH> <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER> </VERSION_INFO> <HOME_LIST> <HOME NAME="OraDB_11G" LOC="/export/oracle/product/11.2.0.2" TYPE="O" IDX="2">

Una vez que conozca la ubicación de instalación

export ORACLE_HOME=full path to install location export ORACLE_HOME=/export/oracle/product/11.2.0.2 export PATH=$ORACLE_HOME/bin:$PATH

Un simple "sqlplus" le dará la versión del cliente instalado.

> sqlplus SQL*Plus: Release 11.2.0.1.0 Production on Fri Mar 23 14:51:09 2012 Copyright (c) 1982, 2010, Oracle. All rights reserved. Enter user-name:

En el ejemplo anterior, la versión del cliente de Oracle es 11.2.0.1

En Windows

La variable de ubicación del registro en Windows es INST_LOC

Start > Run > regedit > HKLM > Software > Oracle

Compruebe el valor de entrada Inst_loc que será la ubicación instalada del software.

Puede usar el símbolo del sistema o puede navegar / explorar a la ubicación principal de Oracle y luego acceder al directorio bin para agregar sqlplus, que le proporcionará la información de la versión del cliente.

El sujeto lo dice todo: ¿Cuál es la mejor forma de determinar la versión exacta del cliente Oracle que estoy ejecutando? Nuestros clientes están ejecutando Windows.

Encontré una sugerencia para ejecutar la utilidad de tnsping, sin parámetros, que muestra la información de la versión. ¿Hay una mejor manera?

¿El cliente instala esta información en cualquier tipo de archivo de texto?


Debe poner un punto y coma al final de select * from v$version; .

Así obtendrá toda la información que necesita ...

Si busca solo Oracle, por ejemplo, puede hacer lo siguiente:

SQL> select * from v$version where banner like ''Oracle%'';


Ejecute el instalador, haga clic en "Productos instalados ...". Esto le dará una lista más detallada de todos los componentes instalados de la instalación del cliente, por ejemplo, controladores, SQL * Plus, etc.

Las instalaciones típicas de Oracle almacenarán información de inventario en C: / Archivos de programa / Oracle / Inventory, pero descubrir las versiones instaladas no es simplemente cuestión de abrir un archivo de texto.

Esto es autorizado por AFAIK y muestra cualquier parche que también se haya aplicado (lo que no funciona con las utilidades).

EDITAR: Una opción CLI sería usar la utilidad OPatch:

c:/> path=%path%;<path to OPatch directory in client home, e.g., C:/oracle/product/10.2.0/client_1/OPatch> c:/>set ORACLE_HOME=<oracle home directory of client, e.g., C:/Oracle/product/10.2.0/client_1> c:/>opatch lsinventory

Esto le proporciona la versión general del cliente instalado.



Esta es otra forma, aunque no necesariamente "mejor":

Determinar su versión actual

Para determinar qué versión de cliente de Oracle ha instalado en su PC, ejecute sql * plus para conectarse a DW. Los nombres de las carpetas pueden variar un poco en función de la configuración de Oracle, pero deberían ser similares. Para ejecutar sql * plus, seleccione start > programs > Oracle > Oracle - OUDWclient > Application Development > sqlplus . Ingrese su nombre de usuario DW, contraseña y ''ordj'' para el nombre de host o nombre del servicio. Esto debería conectarte al DW a través de sqlplus. En este punto, podría escribir sus propias instrucciones sql para extraer información del DW (si sabía sql). La versión del cliente de Oracle se puede determinar en la primera línea: ''SQL * Plus: versión 10.2.0.1.0''.

[Reference] Oracle Client Information http://www.ohio.edu/technology


La línea de comando de TNSPing mostrará la versión. de manera similar, sqlPlus.exe imprimirá su versión. También puede ir a los archivos léame en el directorio ''relnotes'' de su instalación de cliente. La versión 10.2 tiene un archivo llamado README_jdbc.txt, por ejemplo, que le indicará qué versión se ha instalado.


Puede usar la vista v$session_connect_info con la ID de sesión actual ( SID del espacio de nombres SYS_CONTEXT en SYS_CONTEXT ).

p.ej

SELECT DISTINCT s.client_version FROM v$session_connect_info s WHERE s.sid = SYS_CONTEXT(''USERENV'', ''SID'');


Simplemente ejecute esto: seleccione * de v $ versión


Supongo que quieres hacer algo programáticamente.

Puede considerar usar getenv para extraer el valor de la variable de entorno ORACLE_HOME. Asumiendo que estás hablando de C o C ++ o Pro * C.


Vaya a "Panel de control" -> "Herramientas administrativas" y abra "Fuentes de datos (ODBC)". De forma predeterminada, se abrirá la pestaña "Usuario-DSN", haga clic en "Agregar" y aparecerá un cuadro de diálogo:


Vaya a ORACLE_HOME / bin y ejecute '' file sqlplus ''. ver salida a continuación.

64-Bit:- cd /tech/oracle/product/v11/bin $ file sqlplus sqlplus: **ELF 64-bit** LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped 32-Bit $ cd /tech/oracle/product/11204_32bit/bin $ file sqlplus sqlplus: **ELF 32-bit** LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped


puede usar el siguiente comando en SQL Developer o SQLPLUS en el símbolo del sistema para averiguar el número de versión.

select * from v$version;

en mi caso, me dio la información a continuación mencionada.

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production PL/SQL Release 11.2.0.1.0 - Production "CORE 11.2.0.1.0 Production" TNS for 64-bit Windows: Version 11.2.0.1.0 - Production NLSRTL Version 11.2.0.1.0 - Production


Problema n. ° 1: se instalaron varios clientes de Oracle.

Un problema muy común que veo en mi entorno es que veo estaciones de trabajo y servidores (de la) con múltiples clientes de Oracle, a veces hasta cuatro, y posiblemente con diferentes versiones y arquitecturas. Si confía en la PATH y ejecuta una utilidad como SQLPLUS o TNSPING , tendrá uno de los dos resultados inaceptables:

  • tu PATH resuelve con éxito el ejecutable y obtienes UN resultado de la versión
  • o, el PATH no resolvió el ejecutable, y no obtiene ningún resultado.

De cualquier manera, usted es ciego a las posibles instalaciones de múltiples clientes.

Problema n. ° 2: Instant Client no tiene TNSPING, y algunas veces no incluye SQL * Plus.

Si una computadora tiene Oracle Instant Client (no el cliente completo), entonces TNSPING no está incluido, y SQLPLUS es un complemento opcional. Entonces no puedo confiar en que esas herramientas estén ahí. Además, Instant Client a veces se instala como una solución de descomprimir, por lo que no hay ningún inventario de Oracle ni nada en HKLM.

Problema n. ° 3: El cliente se instaló utilizando "Personalizado" y ODBC, OLEDB, ODP.Net y JDBC no se instalaron.

Caso obvio, no habrá archivos léxicos ODBC o JDBC para raspar la información de la versión.

Solución:

Una cosa que el cliente Instant y el cliente completo tienen en común es un archivo DLL llamado oraclient10.dll , oraclient11.dll , generalmente: oraclient*.dll . Así que recorramos el disco duro para encontrarlos y extraer su información de versión. PowerShell es increíble en esto y puede hacerlo en una sola línea, me recuerda al dulce hogar de Unix. Entonces puedes hacer esto programáticamente o incluso remotamente.

Aquí está el delineador (perdón por el pergamino correcto, pero esa es la naturaleza de las frases ingeniosas, ¿eh?). Supongamos que ya está en una PowerShell:

gci C:/,D:/ -recurse -filter ''oraclient*.dll'' -ErrorAction SilentlyContinue | %{ $_.VersionInfo } | ft -Property FileVersion, FileName -AutoSize

Y si no está en PowerShell, es decir, simplemente está en un shell CMD, entonces no hay problema, simplemente llame a powershell " ... " , de la siguiente manera:

powershell "gci C:/,D:/ -recurse -filter ''oraclient*.dll'' -ErrorAction SilentlyContinue | %{ $_.VersionInfo } | ft -Property FileVersion, FileName -AutoSize"

Salidas de ejemplo

Aquí hay algunos resultados de algunos de mis sistemas. Este mal ciudadano tiene 3 clientes Oracle 11.2.0.3. Puede ver que algunos de ellos son de 32 bits y otros de 64 bits:

FileVersion FileName ----------- -------- 11.2.0.3.0 Production C:/NoSync/app/oracle/product/11.2/client_1/bin/oraclient... 11.2.0.3.0 Production C:/oracle/product/11.2.0/client_1/bin/oraclient11.dll 11.2.0.3.0 Production C:/oracle64/product/11.2.0/client_1/bin/oraclient11.dll

Otro sistema, este tiene 10g de cliente en D: /

FileVersion FileName ----------- -------- 10.2.0.4.0 Production D:/oracle/product/10.2/BIN/oraclient10.dll

Advertencias / Problemas

  • Obviamente, esto requiere PowerShell, que es estándar en Windows 7+ y Server 2008 R2 +. Si tiene XP (que ya no debería), puede instalar PowerShell fácilmente.

  • No he probado esto en 8i / 9i o 12c. Si está ejecutando 8i / 9i, entonces hay una buena probabilidad de que también tenga un sistema operativo anterior y no tenga PowerShell y Heaven lo ayude. Debería funcionar con 12c, ya que veo que hay un archivo como oraclient12.dll que se instala. Simplemente no tengo un cliente Windows 12c con quien jugar.