Tipps & Tricks: Februar 2016
Bereich:
DBA
Erstellung:
02/2016 CK
Versionsinfo:
12.1
Letzte Überarbeitung:
02/2016 CK
Oracle 12c Datenbank Patchstand abfragen
Ab Oracle 12c gibt es das neue Utility datapatch (unter $ORACLE_HOME/OPatch) und die dazugehörigen
Datenbankobjekte:
View DBA_REGISTRY_SQLPATCH
externe Tabelle OPATCH_XML_INV
Package DBMS_QOPATCH
Hinweis
Sie benötigen SYS-Rechte um mit dem Package DBMS_QOPATCH arbeiten zu können.
Viele Oracle Patche, inclusive PSU's benötigen zwei Schritte zur Implementierung:
Erster Schritt
Mit dem OPatch Utility wird das entsprechende Oracle Home gepatcht.
Zweiter Schritt
Die Patche müssen in allen, von $ORACLE_HOME abhängigen Datenbanken installiert werden.
Bis Oracle 11g wurde der zweite Schritt wie folgt durchgeführt:
SQL> @catbundle.sql psu apply
Ab Oracle 12c wird Schritt zwei folgendermaßen durchgeführt:
cd $ORACLE_HOME/OPatch
./datapatch -verbose
Bei der Erstellung einer 12c Datenbank werden drei Directories erstellt:
set linesize 200
col owner format A6
col directory_name format A20
col directory_path format A40
select owner, directory_name, directory_path
from dba_directories
where directory_name like 'OPATCH%' order by 2;
OWNER DIRECTORY_NAME
DIRECTORY_PATH
------ -------------------- ---------------------------------------SYS
OPATCH_INST_DIR
/u01/oracle/product/12.1.0/db_1/Opatch
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 1 von 4
from dba_directories
where directory_name like 'OPATCH%' order by 2;
OWNER DIRECTORY_NAME
DIRECTORY_PATH
------ -------------------- ---------------------------------------SYS
OPATCH_INST_DIR
/u01/oracle/product/12.1.0/db_1/Opatch
SYS
OPATCH_LOG_DIR
/u01/oracle/product/12.1.0/db_1/QOpatch
SYS
OPATCH_SCRIPT_DIR
/u01/oracle/product/12.1.0/db_1/QOpatch
Im Verzeichnis $ORACLE_HOME/QOpatch liegt die Batch-Datei qopiprep.bat und die Logdatei qopatch_log.log.
Das OPatch Utility benutzt die Datei qopiprep.bat unter UNIX, Linux und Windows. Mit der Datei qopiprep.bat
erstellt Oracle die externe Tabelle OPATCH_XML_INV.
select owner, table_name
from dba_external_tables
where table_name like 'OPATCH%' order by 1,2
;
OWNER TABLE_NAME
------ -----------------------------SYS
OPATCH_XML_INV
Die Abfrage auf die Tabelle OPATCH_XML_INV liefert einen XMLTYP als Ergebnis.
select * from OPATCH_XML_INV;
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <InventoryInstance>
<oracleHome> <UId>OracleHome-650ace1c-2c85-4c42-94c2-e2d25e223f55</UId>
<targetTypeId>oracle_home</targetTypeId> <inventoryLocation>/u01/oraInventory
</inventoryLocation>
.
.
.
(Ausgabe abgeschnitten)
Mit dem Package DBMS_QOPATCH lässt sich die Ausgabe komfortabler gestalten.
Als Beispiel wird abgefragt, ob der Patch 22139235 installiert ist:
select
xmltransform(dbms_qopatch.is_patch_installed('22139235'),
dbms_qopatch.get_opatch_xslt)
from dual;
Patch Information:
22139235:
applied on 2016-01-25T17:42:27+01:00
select xmltransform(dbms_qopatch.get_opatch_bugs, dbms_qopatch.get_opatch_xslt)
from dual;
Bugs fixed:
18093615 17716305 17257820 17034172 16694728 16042673 18096714
17439871 16320173 14664684 17762256 18002100 18436307 16450169
17006570 17753428 17552800
.
.
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 2 von 4
.
(Ausgabe abgeschnitten)
Das Equivalent vom Betriebssystem Kommando opatch lsinventory lautet von SQL:
select xmltransform(dbms_qopatch.get_opatch_lsinventory,
dbms_qopatch.get_opatch_xslt)
from dual;
Oracle Querayable Patch Interface 1.0
-------------------------------------------------------------------------------Oracle Home
: /u01/oracle/product/12.1.0/db_1
Inventory
: /u01/oraInventory
-------------------------------------------------------------------------------Installed Top-level Products (1):
12.1.0.1.0
Installed Products ( 120)
Oracle Database 12c
.
.
.
(Ausgabe abgeschnitten)
12.1.0.1.0
Abfragen aller installierter PSU's:
col applied_date format A27
col description format A55
col sql_patch format A10
with a as (select dbms_qopatch.get_opatch_lsinventory patch_output from dual)
select x.*
from a, xmltable('InventoryInstance/patches/*'
passing a.patch_output
columns
patch_id number path 'patchID',
patch_uid number path 'uniquePatchID',
description varchar2(80) path 'patchDescription',
applied_date varchar2(30) path 'appliedDate',
sql_patch varchar2(8) path 'sqlPatch',
rollbackable varchar2(8) path 'rollbackable'
)x
;
PATCH_ID PATCH_UID DESCRIPTION
APPLIED_DATE
SQL_PATCH ROLLBACKABLE
---------- ---------- --------------------------------------------------------------------------------- ---------- --------------22139235 19705919 OJVM PATCH SET UPDATE 12.1.0.1.160119
2016-01-25T17:42:27+01:00 true
true
21951844 19567210 Database Patch Set Update : 12.1.0.1.160119 (21951844)
2016-01-25T17:38:39+01:00 true
true
21352619 19194200 Database Patch Set Update : 12.1.0.1.9 (21352619)
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 3 von 4
2016-01-25T17:38:36+01:00 true
true
20831107 18888731 Database Patch Set Update : 12.1.0.1.8 (20831107)
2015-07-27T21:15:32+02:00 true
true
20299016 18536956 Database Patch Set Update : 12.1.0.1.7 (20299016)
2015-07-27T21:15:26+02:00 true
true
19769486 18246488 Database Patch Set Update : 12.1.0.1.6 (19769486)
2015-02-05T07:03:16+01:00 true
true
6 rows selected
Hinweis:
Ab 2016 hat sich die Logik der Patchnummern geändert. 12.1.0.1.160119, es wird nun das Datum (YYMMDD,
also 19.01.2016) der Veröffentlichung verwendet.
Fazit:
Mit dem Package DBMS_QOPATCH ist die Möglichkeit gegeben, unabhängig vom Betriebssystem, per SQL die
Patchstände abzufragen. Weitere Abfragekombinationen (z. B.: ist das $ORACLE_HOME und die dazugehörige
Instanz gepatcht) sind möglich. Für weitere Unterstützung steht Ihnen unser Consulting-Team gerne zur
Verfügung.
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 4 von 4