Тема говорит все: Каков наилучший способ определить точную версию клиента oracle, с которой я работаю? Наши клиенты работают под управлением Windows.
Я нашел одно предложение запустить утилиту tnsping без параметров, которая отображает информацию о версии. Есть ли лучший способ?
Установил ли клиент установку этой информации в любой текстовый файл?
Командная строка TNSPing покажет версию. Аналогично, sqlPlus.exe распечатает свою версию. Вы также можете перейти к файлам readme в каталоге "relnotes" вашей клиентской установки. Например, в версии 10.2 есть файл с именем README_jdbc.txt, который расскажет вам, какая версия была установлена.
Вы можете использовать представление 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');
'userenv'
является специальным пространством имен для функции sys_context
и является константой.
Если вы не знаете местоположение или версию установленного продукта 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
Переменная местоположения реестра в окнах INST_LOC
Start > Run > regedit > HKLM > Software > Oracle
Проверьте значение записи Inst_loc, которое будет установлено на месте установки программного обеспечения.
Вы можете использовать командную строку, или вы можете перемещаться/исследовать исходное местоположение oracle, а затем cd to bin to lauch sqlplus, который предоставит вам информацию о версии клиента.
Проблема №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, чтобы играть с ним.
oci.dll
в Windows.
Запустите программу установки, нажмите "Установленные продукты...". Это даст вам более подробный список всех установленных компонентов клиентской установки, например, драйверов, 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
Это дает вам общую версию установленного клиента.
вы можете использовать следующую команду в 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
Вы должны положить точку с запятой в конце select * from v$version;
.
Вроде бы вы получите всю необходимую информацию...
Если вы ищете только Oracle, вы можете сделать это как:
SQL> select * from v$version where banner like 'Oracle%';
Это еще один, хотя и не обязательно "лучший" способ:
Определение текущей версии
Чтобы определить, какой клиент 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
Перейдите в "Панель управления" → "Администрирование" и откройте "Источники данных (ODBC)". По умолчанию откроется вкладка "Пользователь-DSN", нажмите "Добавить" и появится диалог:
В 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/
Я предполагаю, что вы хотите сделать что-то программно.
Вы можете подумать, используя getenv, чтобы вывести значение из переменной окружения ORACLE_HOME. Предполагая, что вы говорите C или С++ или Pro * C.
Перейдите в 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
Просто запустите это: выберите * из v $version
tnsping > version.txt
, и распространить его на все ваши клиентские ПК.