Wie verwende ich den DBMS_QOPATCH auf einer Amazon RDS-Instance, auf der Oracle 19c ausgeführt wird?

Lesedauer: 5 Minute
0

Ich habe eine Amazon Relational Database Service (Amazon RDS) -Instance, auf der Oracle 19c ausgeführt wird. Wie kann ich das Feature„abfragbares Patch-Inventar“ (DBMS_QOPATCH) in Amazon RDS für Oracle verwenden?

Kurzbeschreibung

Oracle 19c enthält ein abfragbares Patch-Inventar-Feature. Mit diesem Feature können Benutzer Oracle-Softwareinventarinformationen aus der Datenbank abrufen, indem sie das Paket DBMS\ _QOPATCH verwenden. Weitere Informationen finden Sie in der Oracle-Dokumentation für DBMS_QOPATCH.

In früheren Versionen von Oracle konnten Benutzer Softwareinventarinformationen nur mithilfe des Oracle OPatch-Hilfsprogramms abrufen. Da Amazon RDS den Zugriff auf das zugrunde liegende Betriebssystem (OS) einschränkt, können frühere Versionen das Dienstprogramm OPatch nicht ausführen. In Oracle 19c mit Amazon RDS können alle Benutzer mit Rechten zur Ausführung des DBMS_QOPATCH-Pakets Oracle-Softwareinventarinformationen abrufen.

**Hinweis:**Amazon RDS enthält jetzt ein Feature, mit der Sie von der Protokolldatei aus auf OPatch-Dateien zugreifen können. Dieses Feature ist für Oracle-Instances aktiviert, die 2020 oder später veröffentlicht wurden. Wenn Ihre Oracle-Instances 2020 oder später veröffentlicht wurden, empfiehlt es sich, dieses Feature zu verwenden. Weitere Informationen finden Sie unter Zugreifen auf Patch-Dateien.

Behebung

Das abfragbare Patch-Inventar verwendet vorhandene Features wie XML-Unterstützung und externe Tabellen. Diese Beispiele zeigen, wie das abfragbare Patch-Inventar funktioniert.

In diesem Beispiel wird die OPATCH-Abfrage für drei neue Verzeichnisobjekte ausgeführt:

SQL> select owner,directory_name,directory_path from dba_directories where directory_name like 'OPATCH%'

Dies ist eine Beispielausgabe aus der Abfrage:

OWNER      DIRECTORY_NAME       DIRECTORY_PATH
---------- -------------------- --------------------------------------------------
SYS        OPATCH_SCRIPT_DIR    /rdsdbbin/oracle/QOpatch
SYS        OPATCH_LOG_DIR       /rdsdbbin/oracle/QOpatch
SYS        OPATCH_INST_DIR      /rdsdbbin/oracle/OPatch

In diesem Beispiel wird die OPATCH-Abfrage auf vier neuen Systemtabellen ausgeführt:

SQL> select owner,table_name from dba_tables where table_name like 'OPATCH%';

Dies ist eine Beispielausgabe aus der Abfrage:

OWNER           TABLE_NAME
--------------- ------------------------------
SYS             OPATCH_XML_INV
SYS             OPATCH_XINV_TAB
SYS             OPATCH_INST_PATCH
SYS             OPATCH_SQL_PATCHES
SYS             OPATCH_INST_JOB

Die Haupttabelle ist OPATCH_XML_INV, bei der es sich um einen vollständigen Auszug des Inventars im XML-Format handelt. Die Tabelle ist als externe Tabelle implementiert, die aus dem Inventar liest:

SQL> select dbms_metadata.get_ddl('TABLE','OPATCH_XML_INV','SYS') from dual;

Dies ist eine Beispielausgabe aus der Abfrage:

DBMS_METADATA.GET_DDL('TABLE','OPATCH_XML_INV','SYS')
--------------------------------------------------------------------------------

  CREATE TABLE "SYS"."OPATCH_XML_INV"
   (    "XML_INVENTORY" CLOB
   )
   ORGANIZATION EXTERNAL
    ( TYPE ORACLE_LOADER
      DEFAULT DIRECTORY "OPATCH_SCRIPT_DIR"
      ACCESS PARAMETERS
      ( RECORDS DELIMITED BY NEWLINE CHARACTERSET UTF8
      DISABLE_DIRECTORY_LINK_CHECK
      READSIZE 8388608
      preprocessor opatch_script_dir:'qopiprep.bat'
      BADFILE opatch_script_dir:'qopatch_bad.bad'
      LOGFILE opatch_log_dir:'qopatch_log.log'
      FIELDS TERMINATED BY 'UIJSVTBOEIZBEFFQBL'
      MISSING FIELD VALUES ARE NULL
      REJECT ROWS WITH ALL NULL FIELDS
      (
    xml_inventory     CHAR(100000000)
      )
    )
      LOCATION
       ( "OPATCH_SCRIPT_DIR":'qopiprep.bat'
       )
    )
   REJECT LIMIT UNLIMITED

Die Implementierung erfolgt durch das PREPROCESSOR-Skript, qopiprep.bat. Dieses Skript befindet sich in dem Verzeichnis, auf das OPATCH_SCRIPT_DIR zeigt. Weitere Informationen finden Sie in der Oracle-Dokumentation für PREPROCESSOR. Sehen Sie sich die folgende Beispielabfrage an, die OPATCH_SCRIPT_DIR verwendet:

SQL> select owner,directory_name,directory_path from dba_directories where directory_name='OPATCH_SCRIPT_DIR';

Dies ist eine Beispielausgabe aus der Abfrage:

OWNER           DIRECTORY_NAME                     DIRECTORY_PATH
--------------- ---------------------------------  ----------------------------------------
SYS             OPATCH_SCRIPT_DIR                  /rdsdbbin/oracle/QOpatch

Das Skript qopiprep.bat führt das abfragbare Patch-Inventar aus. Anschließend generiert es die Ausgabe in XML, sodass die Ausgabe als Eingabe für die externe Tabelle OPATCH_XML_INV verwendet werden kann. Anschließend können das von DBMS_QOPATCH bereitgestellte Paket und die Features verwendet werden, um Oracle-Inventarinformationen aus der Tabelle zu extrahieren. Die Features und Prozeduren, die vom Paket DBMS_QOPATCH bereitgestellt werden, finden Sie in der Oracle-Dokumentation für die Zusammenfassung der DBMS_QOPATCH-Unterprogramme.

Führen Sie die folgende Abfrage aus, um alle installierten Patches aufzulisten:

with a as (select dbms_qopatch.get_opatch_lsinventory patch_output from dual)
select x.patch_id, x.patch_uid, x.description 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') x;

Dies ist eine Beispielausgabe aus der Abfrage:

PATCH_ID     PATCH_UID  DESCRIPTION
----------   ---------- ---------------------------------------------------------------
33613833     24537804   DSTV37 UPDATE - TZDATA2021E - NEED OJVM FIX
33613829     24529874   RDBMS - DSTV37 UPDATE - TZDATA2021E
32327201     24049836   RDBMS - DSTV36 UPDATE - TZDATA2020E
31335037     23600477   RDBMS - DSTV35 UPDATE - TZDATA2020A
29997937     23062124   RDBMS - DSTV34 UPDATE - TZDATA2019B
28852325     23061696   RDBMS - DSTV33 UPDATE - TZDATA2018G
29213893     24595383   DBMS_STATS FAILING WITH ERROR ORA-01422 WHEN GATHERING STATS FOR USER$ TABLE
28730253     23062304   SUPPORT NEW ERA REIWA FOR JAPANESE IMPERIAL CALENDAR
33561310     24538862   OJVM RELEASE UPDATE: 19.14.0.0.220118 (33561310)
33515361     24589353   Database Release Update : 19.14.0.0.220118 (33515361)
29585399     22840393   OCW RELEASE UPDATE 19.3.0.0.0 (29585399)

Führen Sie den folgenden Befehl aus, um eine detailliertere Ausgabe in einem Format zu erhalten, das dem von opatch lsinventory -detail, ähnelt:

set long 200000 pages 0 lines 200
select xmltransform(DBMS_QOPATCH.GET_OPATCH_LSINVENTORY, DBMS_QOPATCH.GET_OPATCH_XSLT) from dual;

Dies ist eine Beispielausgabe aus der Abfrage:

Oracle Querayable Patch Interface 1.0
--------------------------------------------------------------------------------
Oracle Home : /rdsdbbin/oracle
Inventory : /rdsdbbin/oraInventory
--------------------------------------------------------------------------------Installed Top-level Products (1):
19.0.0.0.0
Installed Products ( 128)
Oracle Database 19c 19.0.0.0.0
Java Development Kit 1.8.0.201.0
oracle.swd.oui.core.min 12.2.0.7.0
Installer SDK Component 12.2.0.7.0
Oracle One-Off Patch Installer 12.2.0.1.15
Oracle Universal Installer 12.2.0.7.0
oracle.swd.commonlogging 13.3.0.0.0
Trace File Analyzer for DB 19.0.0.0.0
Oracle USM Deconfiguration 19.0.0.0.0
Oracle DBCA Deconfiguration 19.0.0.0.0
...
...
Oracle Advanced Security 19.0.0.0.0
Oracle Internet Directory Client 19.0.0.0.0
Oracle Net Listener 19.0.0.0.0
HAS Files for DB 19.0.0.0.0
Oracle Database Provider for DRDA 19.0.0.0.0
Oracle Text 19.0.0.0.0
Oracle Net Services 19.0.0.0.0
Oracle Database 19c 19.0.0.0.0
Oracle OLAP 19.0.0.0.0
Oracle Spatial and Graph 19.0.0.0.0
Oracle Partitioning 19.0.0.0.0
Enterprise Edition Options 19.0.0.0.0

Interim patches:

Patch 33613833: applied on 2022-02-07T08:53:35Z
Unique Patch ID: 24537804
Patch Description: DSTV37 UPDATE - TZDATA2021E - NEED OJVM FIX
Created on : 9 Dec 2021, 01:32:48 hrs PST8PDT
Bugs fixed:
33613833
Files Touched:

tzdb.dat
fixTZa.sql
fixTZb.sql

...	
...

Das Paket DBMS_QOPATCH stellt außerdem die folgenden Prozeduren und Features bereit. Führen Sie Folgendes aus, um zu überprüfen, ob ein bestimmter Patch installiert ist:

select xmltransform(dbms_qopatch.is_patch_installed('<patch number>'), dbms_qopatch.get_opatch_xslt) from dual;

Führen Sie den folgenden Befehl aus, um eine Liste der Fehler zu erhalten, die durch die installierten Patches behoben wurden:

select xmltransform(dbms_qopatch.get_opatch_bugs, dbms_qopatch.get_opatch_xslt) from dual;

Führen Sie den folgenden Befehl aus, um die durch eine bestimmte Patchnummer behobenen Fehler aufzulisten:

select xmltransform(dbms_qopatch.get_opatch_bugs(<patch number>), dbms_qopatch.get_opatch_xslt) from dual;

Ähnliche Informationen

Verwaltung Ihrer Oracle-DB-Instance

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr