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.
En Windows -> use Command Promt:
tnsping localhost
Muestra la versión y si está instalado un cliente de 32 o 64 bits, por ejemplo:
TNS Ping Utility para Windows de 64 bits: Versión 10.2.0.4.0 - Producción el 03-MAR-2015 16:47:26
Fuente: https://decipherinfosys.wordpress.com/2007/02/10/checking-for-oracle-client-version-on-windows/
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, seleccionestart > 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 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.