web-dev-qa-db-fra.com

Quelle est la meilleure façon de déterminer quelle version du client Oracle que je cours?

Le sujet dit tout: quel est le meilleur moyen de déterminer la version exacte du client Oracle que j'utilise? Nos clients utilisent tous Windows.

J'ai trouvé une suggestion pour exécuter l'utilitaire tnsping, sans paramètres, qui affiche les informations de version. Y a-t-il un meilleur moyen?

Est-ce que l'installation du client met cette information dans une sorte de fichier texte?

64
chris

Vous pouvez utiliser le v$session_connect_info vue sur l’ID de session en cours (SID à partir de l’espace de noms USERENV dans SYS_CONTEXT ).

par exemple.

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

La ligne de commande TNSPing affiche la version. De même, sqlPlus.exe imprimera sa version. Vous pouvez également accéder aux fichiers readme du répertoire 'relnotes' de votre installation client. La version 10.2 contient un fichier nommé README_jdbc.txt, par exemple, qui vous indiquera quelle version a été installée.

32
akf

Problème n ° 1: plusieurs clients Oracle sont installés.

Un problème très courant que je vois dans mon environnement est que je vois à la fois des stations de travail et des serveurs (d'application) avec plusieurs clients Oracle, parfois jusqu'à quatre, et éventuellement avec des versions et architectures différentes. Si vous utilisez le PATH et exécutez un utilitaire tel que SQLPLUS ou TNSPING, vous obtiendrez l'un des deux résultats inacceptables:

  • soit votre PATH résout avec succès l'exécutable et vous obtenez UN résultat de version
  • ou bien le PATH n'a pas résolu l'exécutable et vous n'obtenez aucun résultat.

Dans les deux cas, vous êtes éventuellement aveugle à plusieurs installations client.

Problème n ° 2: Instant Client n'a pas TNSPING et n'inclut pas parfois SQL * Plus.

Si un ordinateur dispose du client instantané Oracle (pas du client complet), alors TNSPING n'est pas inclus et SQLPLUS est un addon facultatif. Donc, ne peut pas compter sur ces outils étant là. De plus, Instant Client est parfois installé en tant que solution unzip-and-go. Il n’existe donc pas d’inventaire Oracle et rien dans HKLM.

Problème n ° 3: le client a été installé avec "Personnalisé" et ODBC, OLEDB, ODP.Net et JDBC n'étaient pas installés.

Cas évident, il n'y aura pas de ODBC ou du fichier lisez-moi JDBC pour extraire les informations de version.

Solution:

Le client Instant et le client complet ont en commun un fichier DLL appelé oraclient10.dll, oraclient11.dll, généralement: oraclient*.dll. Parcourons donc le disque dur pour les trouver et extraire leurs informations de version. PowerShell est incroyable à cela et peut le faire en une seule ligne, ça me rappelle un doux chez moi. Donc, vous pouvez le faire par programme ou même à distance.

Voici le one-liner (désolé pour le bon parchemin, mais c'est la nature des one-liners, hein?). Si vous êtes déjà dans un PowerShell:

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

Et si vous n’êtes pas dans PowerShell, c’est-à-dire que vous êtes simplement dans un shell CMD, alors pas de problème, appelez simplement powershell " ... ", comme suit:

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

Exemple de sorties

Voici quelques résultats de certains de mes systèmes. Ce mauvais citoyen a 3 clients Oracle 11.2.0.3. Vous pouvez voir que certains d'entre eux sont en 32 bits et d'autres en 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

Un autre système, celui-ci a 10g client sur le D: \

FileVersion           FileName
-----------           --------
10.2.0.4.0 Production D:\Oracle\product\10.2\BIN\oraclient10.dll

mises en garde/issues

  • Cela nécessite évidemment PowerShell, qui est standard dans Windows 7+ et Server 2008 R2 +. Si vous avez XP (ce que vous ne devriez plus faire)), vous pouvez facilement installer PowerShell.

  • Je n'ai pas essayé cela sur 8i/9i ou 12c. Si vous utilisez 8i/9i, il y a de fortes chances que vous utilisiez également un ancien système d'exploitation et que PowerShell et Heaven ne vous assistent pas. Cela devrait fonctionner avec 12c, car je vois qu'il existe un tel fichier oraclient12.dll qui est installé. Je n'ai pas encore de client Windows 12c avec lequel jouer.

14
Joshua Huber

Sous Unix

Si vous ne connaissez pas l'emplacement ou la version du produit Oracle installé, vous pouvez le trouver dans l'inventaire, qui est généralement enregistré dans /etc/oraInst.loc.

> cat /etc/oraInst.loc

inventory_loc=/export/Oracle/oraInventory       **--> Inventory location**
inst_group=dba


> cd /export/Oracle/oraInventory
> cd ContentsXML

Ici chercher un fichier 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">

Une fois que vous connaissez l'emplacement d'installation

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" vous donnera la version du client installé.

> 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:

Dans l'exemple ci-dessus, la version du client Oracle est 11.2.0.1.

Sous Windows

La variable d'emplacement du registre dans Windows est INST_LOC

Start > Run > regedit > HKLM > Software > Oracle

Vérifiez la valeur d'entrée Inst_loc qui sera l'emplacement du logiciel installé.

Vous pouvez utiliser la commande Invite ou vous pouvez naviguer/explorer vers le site d’origine Oracle puis cd dans le répertoire bin pour lancer sqlplus, qui vous donnera les informations de version du client.

8

Exécutez le programme d'installation, cliquez sur "Produits installés ...". Cela vous donnera une liste plus détaillée de tous les composants installés de l'installation du client, par exemple, les pilotes, SQL * Plus, etc.

Les installations Oracle classiques stockent les informations d'inventaire dans C:\Program Files\Oracle\Inventory, mais pour déterminer les versions installées, il ne suffit pas d'ouvrir un fichier texte.

C’est une référence AFAIK qui montre tous les correctifs éventuellement appliqués (ce que l’exécution des utilitaires ne permet pas).

EDIT: Une option de la CLI consisterait à utiliser l’utilitaire 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

Cela vous donne la version globale du client installé.

6
DCookie

Sous Windows -> utilisez Command Promt:

tnsping localhost

Il montre la version et si est installé 32 o client 64 bits, par exemple:

Utilitaire TNS Ping pour Windows 64 bits: Version 10.2.0.4.0 - Production au 03-MAR-2015 16:47:26

Source: https://decipherinfosys.wordpress.com/2007/02/10/checking-for-Oracle-client-version-on-windows/

4

vous pouvez utiliser la commande suivante dans SQL Developer ou SQLPLUS dans la commande Invite pour connaître le numéro de version.

select * from v$version;

dans mon cas, il m'a donné les informations mentionnées ci-dessous.

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
3
ICEMAN

Allez dans "Panneau de configuration" -> "Outils d'administration" et ouvrez "Sources de données (ODBC)". Par défaut, l'onglet "User-DSN" sera ouvert, cliquez sur "Ajouter" et un dialogue s'ouvrira:

enter image description here

3
Boern

Vous devriez mettre un point-virgule à la fin de select * from v$version;.

Comme cela, vous obtiendrez toutes les informations dont vous avez besoin ...

Si vous recherchez uniquement Oracle par exemple, vous pouvez procéder comme suit:

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

C'est une autre façon, mais pas nécessairement "meilleure":

Détermination de votre version actuelle

Pour déterminer la version du client Oracle que vous avez installée sur votre ordinateur, exécutez sql*plus pour vous connecter au DW. Les noms de dossier peuvent varier quelque peu en fonction de votre configuration Oracle mais doivent être similaires. Pour exécuter sql*plus choisissez start > programs > Oracle > Oracle - OUDWclient > Application Development > sqlplus. Entrez votre nom d'utilisateur DW, votre mot de passe et "ordj" pour le nom d'hôte ou le nom du service. Cela devrait vous connecter au DW via sqlplus. À ce stade, vous pouvez écrire vos propres instructions SQL pour extraire des informations du DW (si vous connaissiez SQL). La version du client Oracle peut être déterminée dans la première ligne - "SQL * Plus: Version 10.2.0.1.0".

[Référence] Informations sur le client Oracle http://www.ohio.edu/technology

2
Daniel F. Thornton

Je suppose que vous voulez faire quelque chose par programme.

Vous pourriez envisager d'utiliser getenv pour extraire la valeur de la variable d'environnement Oracle_HOME. En supposant que vous parlez C ou C++ ou Pro * C.

1
EvilTeach

Accédez à Oracle_HOME/bin et exécutez 'fichier sqlplus'. voir la sortie ci-dessous.

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
0
Manu Verma