IT박스

실행중인 Oracle 클라이언트 버전을 확인하는 가장 좋은 방법은 무엇입니까?

itboxs 2020. 11. 18. 08:48
반응형

실행중인 Oracle 클라이언트 버전을 확인하는 가장 좋은 방법은 무엇입니까?


주제는 모든 것을 말합니다. 실행중인 Oracle 클라이언트의 정확한 버전을 확인하는 가장 좋은 방법은 무엇입니까? 우리 고객은 모두 Windows를 실행하고 있습니다.

버전 정보를 표시하는 매개 변수없이 tnsping 유틸리티를 실행하라는 제안이 하나 있습니다. 더 좋은 방법이 있습니까?

클라이언트 설치시이 정보를 텍스트 파일에 저장합니까?


네임 스페이스에서 v$session_connect_info현재 세션 ID에 대해보기를 사용할 수 있습니다 .SIDUSERENVSYS_CONTEXT

예 :

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

TNSPing 명령 줄에 버전이 표시됩니다. 마찬가지로 sqlPlus.exe는 버전을 인쇄합니다. 클라이언트 설치의 'relnotes'디렉토리에있는 readme 파일로 이동할 수도 있습니다. 버전 10.2에는 README_jdbc.txt라는 파일이 있습니다. 예를 들어 설치된 버전을 알려줍니다.


문제 # 1 : 여러 Oracle 클라이언트가 설치되었습니다.

내 환경에서 볼 수있는 매우 일반적인 문제는 여러 Oracle 클라이언트가있는 워크 스테이션과 (앱) 서버를 모두 볼 수 있다는 것입니다. 때로는 4 개까지 가능하며 버전과 아키텍처가 다를 수도 있습니다. 또는 PATH같은 유틸리티 에 의존 하고 실행하는 경우 두 가지 허용되지 않는 결과 중 하나가 나타납니다.SQLPLUSTNSPING

  • 중 당신이 PATH성공적으로 실행을 해결하고 당신은 ONE 버전의 결과를 얻을 수
  • 또는 PATH실행 파일을 확인하지 않았고 결과가 없습니다.

어느 쪽이든 여러 클라이언트 설치에 대해 눈이 멀어 있습니다.

문제 # 2 : Instant Client에는 TNSPING이 없으며 때때로 SQL * Plus가 포함되지 않습니다.

컴퓨터에 Oracle Instant Client (전체 클라이언트 TNSPING가 아님 ) 가있는 경우 포함되지 않으며 SQLPLUS선택적 addon입니다. 따라서 그 도구에 의존 할 수 없습니다. 또한 Instant Client는 압축 해제 솔루션으로 설치되기도하므로 Oracle 인벤토리가없고 HKLM에 아무것도 없습니다.

문제 # 3 : "사용자 지정"을 사용하여 클라이언트가 설치되었고 ODBC, OLEDB, ODP.Net 및 JDBC가 설치되지 않았습니다.

명백한 경우, 버전 정보를 스크랩 할 ODBC 또는 JDBC readme가 없습니다.

해결책:

인스턴트 클라이언트와 전체 클라이언트가 공통적으로 가지고있는 것을 한 가지라는 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

다른 시스템,이 시스템은 D : \에 10g 클라이언트가 있습니다.

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

주의 사항 / 문제

  • 이를 위해서는 Windows 7+ 및 Server 2008 R2 +의 표준 인 PowerShell이 ​​필요합니다. XP가있는 경우 (더 이상 필요하지 않음) PowerShell을 쉽게 설치할 수 있습니다.

  • 나는 8i / 9i 또는 12c에서 이것을 시도하지 않았습니다. 8i / 9i를 실행하는 경우 이전 OS도 사용 중이고 PowerShell과 Heaven이 도움이되지 않을 가능성이 높습니다. 그것은 해야 나는 그런 파일이 볼 수 있기 때문에, 12C에서 작동 oraclient12.dll설치됩니다. 아직 사용할 Windows 12c 클라이언트가 없습니다.


유닉스에서

설치된 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에서

Windows의 레지스트리 위치 변수는 INST_LOC입니다.

Start > Run > regedit > HKLM > Software > Oracle

소프트웨어 설치 위치가 될 Inst_loc 항목 값을 확인하십시오.

명령 프롬프트를 사용하거나 oracle 홈 위치로 이동 / 탐색 한 다음 클라이언트 버전 정보를 제공하는 lauch sqlplus에 대한 bin 디렉토리로 cd 할 수 있습니다.


설치 프로그램을 실행하고 "설치된 제품 ..."을 클릭합니다. 그러면 드라이버, SQL * Plus 등과 같은 클라이언트 설치의 모든 설치된 구성 요소에 대한 자세한 목록이 제공됩니다.

일반적인 Oracle 설치는 인벤토리 정보를 C : \ Program Files \ Oracle \ Inventory에 저장하지만 설치된 버전을 알아내는 것은 단순히 텍스트 파일을 여는 문제가 아닙니다.

This is AFAIK authoritative, and shows any patches that might have been applied as well (which running the utilities does not do).

EDIT: A CLI option would be to use the OPatch utility:

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

This gives you the overall version of the client installed.


In Windows -> use Command Promt:

tnsping localhost

It show the version and if is installed 32 o 64 bit client, for example:

TNS Ping Utility for 64-bit Windows: Version 10.2.0.4.0 - Production on 03-MAR-2015 16:47:26

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


Go to "Control Panel" -> "Administrative Tools" and open "Datasources (ODBC)". By default, the tab "User-DSN" will be opened, click "Add" and a dialogue will pop up:

enter image description here


you can use the following command in SQL Developer or SQLPLUS in command prompt to find out the version number .

select * from v$version;

in my case it gave me the below mentioned info.

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

You should put a semicolon at the end of select * from v$version;.

Like this you will get all info you need...

If you are looking just for Oracle for example you can do as:

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

This is another, though not necessarily "better", way:

Determining Your Current Version

To determine which Oracle client version you have installed on your pc, run sql*plus to connect to the DW. The folder names may vary somewhat based on your Oracle setup but should be similar. To run sql*plus choose start > programs > Oracle > Oracle - OUDWclient > Application Development > sqlplus. Enter your DW user name, password, and 'ordj' for the host name or service name. This should connect you to the DW via sqlplus. At this point, you could write your own sql statements to pull information from the DW (if you knew sql). The Oracle client version can be determined in the first line - 'SQL*Plus: Release 10.2.0.1.0'.

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


I am assuming you want to do something programatically.

You might consider, using getenv to pull the value out of the ORACLE_HOME environmental variable. Assuming you are talking C or C++ or Pro*C.


Go to ORACLE_HOME/bin and run 'file sqlplus'. see output below.

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

Just run this: select * from v$version

참고URL : https://stackoverflow.com/questions/1171643/whats-the-best-way-to-determine-which-version-of-oracle-client-im-running

반응형