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