Inhaltsverzeichnis
Die Datenbank Version im Detail unter Oracle 12c versus 19c auslesen
Mit der Version 19c ändert sich leider das Verhalten der Datenbank, um einfach die aktuelle Version auszulesen.
In den bisherigen Spalten steht nur noch die Mayor Version, die eigentliche Release Version muss nun in neuen Spalten ausgelesen werden.
Das ist in gemischten Umgebung sehr lästig, da ja nun pro DB Version ein anders SQL verwendet werden muss.
Unterschiedliche Anzeige mit den normale Abfragen:
--================================= SELECT banner FROM v$version; -- 19c Oracle DATABASE 19c Enterprise Edition Release 19.0.0.0.0 - Production --12c Oracle DATABASE 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production --================================= SELECT version FROM v$instance; --19c 19.0.0.0.0 --12c 12.2.0.1.0 --================================= SELECT version FROM dba_registry WHERE comp_id = 'CATALOG'; --19c 19.0.0.0.0 --12c 12.2.0.1.0 --================================= SET serveroutput ON DECLARE v_ver varchar2(32); v_comp varchar2(32); BEGIN DBMS_UTILITY.DB_VERSION ( version => v_ver , compatibility => v_comp ); dbms_output.put_line('Datenbank Version ::'||v_ver); dbms_output.put_line('Datenbank Compabiltity ::'||v_ver); END; / --19c Datenbank Version ::19.0.0.0.0 Datenbank Compabiltity ::19.0.0.0.0 --12c Datenbank Version ::12.2.0.1.0 Datenbank Compabiltity ::12.2.0.1.0 --================================= SET serveroutput ON BEGIN dbms_output.put_line('Datenbank Version :: '||DBMS_DB_VERSION.VERSION); dbms_output.put_line('Datenbank Release :: '||DBMS_DB_VERSION.RELEASE); END; / --19c Datenbank Version :: 19 Datenbank Release :: 0 --12c Datenbank Version :: 12 Datenbank Release :: 2
D.h. die Minor Version der Datenbank lässt sich in 19c so nicht mehr auslesen.
In 19c die vollständige Version abfragen
Die passende Information befindet sich nun in den neuen Spalten xxxx_full wie:
--================================= SELECT banner_full FROM v$version; BANNER_FULL ------------------------------------------------------------------------------ Oracle DATABASE 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 --================================= SELECT version_full FROM v$instance; VERSION_FULL ------------------------------------------------ 19.3.0.0.0 --================================= SELECT version_full FROM dba_registry WHERE comp_id = 'CATALOG'; VERSION_FULL ------------------------------------------------------------------------------- 19.3.0.0.0 --================================= SELECT version_full FROM DBA_REGISTRY_HIERARCHY WHERE comp_id='1 CATALOG' VERSION_FULL ------------- 19.3.0.0.0 --================================= SELECT VERSION_FULL FROM PRODUCT_COMPONENT_VERSION; VERSION_FULL ------------- 19.3.0.0.0
Patch Stand abfragen
Ist die DB schon mal gepatchet worden, kann das auch über diese Info ausgelesen werden:
COLUMN a_time format a10 COLUMN action format a16 COLUMN namespace format a8 COLUMN version format a15 COLUMN id format a20 COLUMN comments format a35 COLUMN bundle_series format a6 SELECT to_char(action_time, 'dd.mm.yyyy') AS a_time , action , namespace , version , comments FROM sys.registry$history ORDER BY action_time DESC NULLS LAST /
Ab 12c (hier nur die Spalten die in 12c und 19c zur Verfügung stehen):
SELECT patch_id , STATUS , action_time , description FROM dba_registry_sqlpatch ORDER BY action_time DESC /
Allerdings ist zu beachten, das ab 19c die View auch einige Spalten mehr hat!
Java Version
SELECT dbms_java.get_ojvm_property(PROPSTRING=>'java.version') AS JAVA_VERSION FROM dual; JAVA_VERSION ------------------------------------------------------------------------------------------------------ 1.8.0_201
Bit Version
So kann überprüft werden ob ursprünglich das eine 32 Bit DB war:
--10.2.0.3 Note:412271.1 SELECT decode(instr(metadata,'B023'),0,'64bit Database','32bit Database') AS "DB Creation" FROM kopm$ /