Какой лучший способ определить, какую версию клиента Oracle я использую?

42

Тема говорит все: Каков наилучший способ определить точную версию клиента oracle, с которой я работаю? Наши клиенты работают под управлением Windows.

Я нашел одно предложение запустить утилиту tnsping без параметров, которая отображает информацию о версии. Есть ли лучший способ?

Установил ли клиент установку этой информации в любой текстовый файл?

  • 1
    Что можно квалифицировать как «лучший путь»?
  • 1
    Вы также можете создать командный файл, состоящий из tnsping > version.txt , и распространить его на все ваши клиентские ПК.
Показать ещё 1 комментарий
Теги:

13 ответов

26

Командная строка TNSPing покажет версию. Аналогично, sqlPlus.exe распечатает свою версию. Вы также можете перейти к файлам readme в каталоге "relnotes" вашей клиентской установки. Например, в версии 10.2 есть файл с именем README_jdbc.txt, который расскажет вам, какая версия была установлена.

  • 0
    Когда я запускаю sqlPlus.exe, он дает мне версию клиента 11.0.1.0, а когда я подключаюсь к БД, я получаю версию сервера 11.0.3.0 (64-битная). Могу ли я предположить, что мой клиент 32-битный, потому что он не указывает 64?
  • 0
    @ TomG: нет, вы не можете. См. Stackoverflow.com/questions/13188670/…
Показать ещё 1 комментарий
21

Вы можете использовать представление v$session_connect_info против текущего идентификатора сеанса (SIDиз пространства имен USERENV в SYS_CONTEXT).

например.

SELECT
  DISTINCT
  s.client_version
FROM
  v$session_connect_info s
WHERE
  s.sid = SYS_CONTEXT('USERENV', 'SID');
  • 0
    Я, будучи новичком в оракуле, как я могу найти 'userenv' из SQLDeveloper?
  • 1
    'userenv' является специальным пространством имен для функции sys_context и является константой.
8

В Unix

Если вы не знаете местоположение или версию установленного продукта Oracle, вы можете найти его из инвентаря, который обычно записывается в /etc/oraInst.loc

> cat /etc/oraInst.loc

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


> cd /export/oracle/oraInventory
> cd ContentsXML

Здесь найдите файл 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">

Как только вы узнаете место установки

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

Простой "sqlplus" предоставит вам версию установленного клиента.

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

В приведенном выше примере версия клиента Oracle 11.2.0.1

В Windows

Переменная местоположения реестра в окнах INST_LOC

Start > Run > regedit > HKLM > Software > Oracle

Проверьте значение записи Inst_loc, которое будет установлено на месте установки программного обеспечения.

Вы можете использовать командную строку, или вы можете перемещаться/исследовать исходное местоположение oracle, а затем cd to bin to lauch sqlplus, который предоставит вам информацию о версии клиента.

6

Проблема №1: Установлены несколько клиентов Oracle.

Очень распространенная проблема, которую я вижу в своей среде, - это то, что я вижу как рабочие станции, так и (приложения) серверы с несколькими клиентами Oracle, иногда целых четыре и, возможно, с разными версиями и архитектурами. Если вы полагаетесь на PATH и запускаете утилиту вроде SQLPLUS или TNSPING, у вас будет один из двух недопустимых результатов:

  • либо ваш PATH успешно разрешает исполняемый файл, и вы получаете результат ОДНОЙ версии
  • или PATH не разрешил исполняемый файл, и вы не получили никаких результатов.

В любом случае, вы слепы к возможностям нескольких клиентских установок.

Проблема №2: Мгновенный клиент не имеет TNSPING и иногда не включает SQL * Plus.

Если на компьютере установлен Instant Instant Client (а не полный клиент), тогда TNSPING не включен, а SQLPLUS является дополнительным аддоном. Поэтому я не могу полагаться на те инструменты, которые там есть. Кроме того, Мгновенный Клиент иногда устанавливается как решение unzip-and-go, поэтому в HKLM нет Oracle Inventory и ничего.

Проблема №3: ​​Клиент был установлен с использованием "Пользовательский", а ODBC, OLEDB, ODP.Net и JDBC не были установлены.

Очевидный случай, не будет чтения ODBC или JDBC для очистки информации о версии.

Решение:

Одна вещь, которая имеет Мгновенный клиент и полный клиент, - это DLL файл с именем oraclient10.dll, oraclient11.dll, как правило: oraclient*.dll. Итак, перейдите на жесткий диск, чтобы найти их и извлечь информацию о своей версии. PowerShell поражает этим и может сделать это в одной строке, напоминает мне о домашнем сладком Unix. Таким образом, вы можете сделать это программно или даже удаленно.

Вот однострочный (извините за правый свиток, но за то, что характер однострочных, а?). Предположим, что вы уже находитесь в PowerShell:

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

И если вы не в PowerShell, т.е. вы просто в CMD-оболочке, тогда нет проблем, просто вызовите powershell " ... " следующим образом:

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

Примеры результатов

Здесь некоторые выходы некоторых из моих систем. У этого плохого гражданина есть 3 клиента Oracle 11.2.0.3. Вы можете видеть, что некоторые из них 32-разрядные, а другие 64-бит:

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

Другая система, у которой есть клиент 10g на D:\

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

Предостережения/Проблемы

  • Для этого явно требуется PowerShell, который является стандартным для Windows 7+ и Server 2008 R2+. Если у вас есть XP (который вам больше не нужен), вы можете легко установить PowerShell.

  • Я не пробовал это на 8i/9i или 12c. Если вы используете 8i/9i, то есть хороший шанс, что вы тоже на старой ОС, и у вас нет PowerShell и Heaven. Он должен работать с 12c, так как я вижу, что есть такой файл oraclient12.dll, который устанавливается. У меня просто нет клиента Windows 12c, чтобы играть с ним.

  • 1
    Также можете проверить свойства oci.dll в Windows.
  • 0
    Должен быть принят ответ.
Показать ещё 2 комментария
6

Запустите программу установки, нажмите "Установленные продукты...". Это даст вам более подробный список всех установленных компонентов клиентской установки, например, драйверов, SQL * Plus и т.д.

Типичные установки Oracle будут хранить информацию инвентаря в C:\Program Files\Oracle\Inventory, но выяснение установленных версий - это не просто открытие текстового файла.

Это авторитет AFAIK и показывает любые исправления, которые могли быть применены (что не работает утилитами).

EDIT: Опцией CLI будет использовать утилиту 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

Это дает вам общую версию установленного клиента.

  • 2
    ... и у вас обычно будет один экземпляр установщика для каждого дома оракула (проверьте переменную пути), поэтому вам может потребоваться запустить более одного установщика, чтобы увидеть все установленные клиентские продукты.
3

вы можете использовать следующую команду в SQL Developer или SQLPLUS в командной строке, чтобы узнать номер версии.

select * from v$version;

в моем случае он дал мне приведенную ниже информацию.

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

Вы должны положить точку с запятой в конце select * from v$version;.

Вроде бы вы получите всю необходимую информацию...

Если вы ищете только Oracle, вы можете сделать это как:

SQL> select * from v$version where banner like 'Oracle%';
  • 4
    Я думаю, что это может получить версию сервера, а не клиента.
  • 0
    Я получаю ORA-01039: недостаточно прав для базовых объектов представления. но я верю, что если бы у меня были разрешения, вы правы. На самом деле вопрос был для клиента, а не для сервера. сожалею
3

Это еще один, хотя и не обязательно "лучший" способ:

Определение текущей версии

Чтобы определить, какой клиент Oracle версию, которую вы установили на свой компьютер, запустите sql * плюс для подключения к DW. имена папок могут несколько отличаться на вашей установке Oracle, но должно быть аналогичный. Для запуска sql * plus выберите start > programs > Oracle > Oracle - OUDWclient > Application Development > sqlplus. Введите свой DW имя пользователя, пароль и 'ordj' для имя хоста или имя службы. Эта должен подключить вас к DW через SQLPLUS. На этом этапе вы могли бы напишите свои собственные SQL-выражения, чтобы вытащить информация от DW (если бы вы знали SQL). Версия клиента Oracle может быть определенных в первой строке - 'SQL * Plus: Release 10.2.0.1.0'.

[Ссылка] Информация о клиенте Oracle http://www.ohio.edu/technology

2

Перейдите в "Панель управления" → "Администрирование" и откройте "Источники данных (ODBC)". По умолчанию откроется вкладка "Пользователь-DSN", нажмите "Добавить" и появится диалог:

Изображение 7159

  • 0
    Это работает только в Windows, если используется ODBC для подключения к Oracle
2

В Windows → используйте Command Promt:

tnsping localhost

Показывает версию, и если установлен 32-разрядный 64-разрядный клиент, например:

Утилита TNS Ping для 64-разрядной версии Windows: версия 10.2.0.4.0 - выпуск на 03-MAR-2015 16:47:26

Источник: https://decipherinfosys.wordpress.com/2007/02/10/checking-for-oracle-client-version-on-windows/

1

Я предполагаю, что вы хотите сделать что-то программно.

Вы можете подумать, используя getenv, чтобы вывести значение из переменной окружения ORACLE_HOME. Предполагая, что вы говорите C или С++ или Pro * C.

  • 0
    В Windows ORACLE_HOME обычно не установлен - он находится в реестре. Даже если бы это было, типичным параметром ORACLE_HOME был бы путь, из которого вам нужно было бы проанализировать номер версии (при условии установки по умолчанию - вы могли бы установить ее где угодно), и эта версия (по крайней мере, в 10g) указывается только как ' 10.2.0.
  • 0
    да, вот как мы извлекаем это.
0

Перейдите в ORACLE_HOME/bin и запустите файл sqlplus. см. вывод ниже.

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
  • 1
    Это ничего не говорит о фактической версии Oracle клиента sqlplus.
-1

Просто запустите это: выберите * из v $version

  • 7
    Это скажет мне версию сервера, а не клиента.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню