오라클 버전을 확인하는 쿼리가 필요한 경우가 있습니다. 왜냐하면, 오라클 버전에 따라 사용할 수 있는 함수가 다른 경우가 있기 때문입니다. 그리하여 현재 오라클 버전을 조회하는 SQL을 안내해드리겠습니다.
V$VERSION
오라클 버전 뷰에서 확인하는 쿼리는 다음과 같습니다. 컬럼은 BANNER를 출력합니다.
SELECT * FROM V$VERSION;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
PL/SQL Release 11.2.0.2.0 - Production
CORE 11.2.0.2.0 Production
TNS for 32-bit Windows: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production
PRODUCT_COMPONENT_VERSION
오라클 버전을 확인하는 다른 뷰를 안내해드리겠습니다. 해당 뷰는 V$VERSION을 약간 가공한 뷰입니다.
SELECT * FROM PRODUCT_COMPONENT_VERSION;
PRODUCT
-------
VERSION
-------
STATUS
-------
NLSRTL
11.2.0.2.0
Production
Oracle Database 11g Express Edition
11.2.0.2.0
Production
PL/SQL
11.2.0.2.0
Production
TNS for 32-bit Windows:
11.2.0.2.0
Production
참고로 PRODUCT_COMPONENT_VERSION의 실제 스크립트는 다음과 같습니다.
CREATE OR REPLACE FORCE VIEW SYS.PRODUCT_COMPONENT_VERSION
(
PRODUCT,
VERSION,
STATUS
)
AS
(SELECT SUBSTR (banner, 1, INSTR (banner, 'Version') - 1),
SUBSTR (banner,
INSTR (banner, 'Version') + 8,
INSTR (banner, ' - ') - (INSTR (banner, 'Version') + 8)),
SUBSTR (banner, INSTR (banner, ' - ') + 3)
FROM v$version
WHERE INSTR (banner, 'Version') > 0
AND ( (INSTR (banner, 'Version') < INSTR (banner, 'Release'))
OR INSTR (banner, 'Release') = 0))
UNION
(SELECT SUBSTR (banner, 1, INSTR (banner, 'Release') - 1),
SUBSTR (banner,
INSTR (banner, 'Release') + 8,
INSTR (banner, ' - ') - (INSTR (banner, 'Release') + 8)),
SUBSTR (banner, INSTR (banner, ' - ') + 3)
FROM v$version
WHERE INSTR (banner, 'Release') > 0
AND INSTR (banner, 'Release') < INSTR (banner, ' - '));
오라클 현재 버전 가져오기
V$VERSION 뷰를 조회하여 가공한 함수입니다. 해당 오라클 버전이 10인지, 11인지 등을 확인할 수 있도록 하였으며, 필요시 가공하여 사용해 주십시오.
SELECT SUBSTR (VERSION, 1, INSTR (VERSION, '.') - 1) VER
FROM (SELECT SUBSTR (BANNER, 1, INSTR (BANNER, 'Release') - 1) PRODUCT,
SUBSTR (
BANNER,
INSTR (BANNER, 'Release') + 8,
INSTR (BANNER, ' - ') - (INSTR (BANNER, 'Release') + 8))
VERSION,
SUBSTR (BANNER, INSTR (BANNER, ' - ') + 3) STATUS
FROM V$VERSION
WHERE INSTR (BANNER, 'Release') > 0
AND INSTR (BANNER, 'Release') < INSTR (BANNER, ' - '))
WHERE PRODUCT LIKE 'Oracle%';
VER
---
11
V$VERSION
오라클 버전 확인에 가장 많이 쓰이는 건 V$VERSION 입니다.
SELECT * FROM V$VERSION;
SELECT * FROM SYS.V_$VERSION;
GV$VERSION
V$ 뷰는 GV$로 구성이 되어 있고 이 뷰는 또 X$ (fixed view)로 구성되어 있습니다.
참고사항으로 표시했습니다. V$VERSION 으로 확인하셔도 무방합니다.
SELECT * FROM GV$VERSION;
SELECT * FROM SYS.GV_$VERSION;
PRODUCT_COMPONENT_VERSION
PRODUCT_COMPONENT_VERSION 뷰는 V$VERSION 을 가공하여 제공해드리는 뷰입니다.
SELECT * FROM PRODUCT_COMPONENT_VERSION;
PRODUCT_COMPONENT_VERSION 뷰 스크립트는 상기와 같습니다.
만약 버전정보를 가공하여 조회할 필요가 있다면, 처음에 소개해드린 V$VERSION을 이용하시면 됩니다.
(SELECT SUBSTR (banner, 1, INSTR (banner, 'Version') - 1),
SUBSTR (banner,
INSTR (banner, 'Version') + 8,
INSTR (banner, ' - ') - (INSTR (banner, 'Version') + 8)),
SUBSTR (banner, INSTR (banner, ' - ') + 3)
FROM v$version
WHERE INSTR (banner, 'Version') > 0
AND ( (INSTR (banner, 'Version') < INSTR (banner, 'Release'))
OR INSTR (banner, 'Release') = 0))
UNION
(SELECT SUBSTR (banner, 1, INSTR (banner, 'Release') - 1),
SUBSTR (banner,
INSTR (banner, 'Release') + 8,
INSTR (banner, ' - ') - (INSTR (banner, 'Release') + 8)),
SUBSTR (banner, INSTR (banner, ' - ') + 3)
FROM v$version
WHERE INSTR (banner, 'Release') > 0
AND INSTR (banner, 'Release') < INSTR (banner, ' - '));