AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

Oracle 19c를 실행하는 Amazon RDS 인스턴스에서 DBMS_QOPATCH를 사용하려면 어떻게 해야 하나요?

5분 분량
0

Oracle 19c를 실행하는 Amazon Relational Database Service(Amazon RDS) 인스턴스가 있습니다. Amazon RDS for Oracle에서 쿼리 가능한 패치 인벤토리(DBMS_QOPATCH) 기능을 사용하려면 어떻게 해야 하나요?

간략한 설명

Oracle 19c에는 쿼리 가능한 패치 인벤토리 기능이 포함되어 있습니다. 이 기능을 사용하면 DBMS_QOPATCH 패키지를 사용하여 사용자가 데이터베이스 내에서 Oracle 소프트웨어 인벤토리 정보를 검색할 수 있습니다. 자세한 내용은 DBMS_QOPATCH에 대한 Oracle 문서를 참조하세요.

이전 버전의 Oracle에서 사용자는 Oracle OPatch 유틸리티를 사용해서만 소프트웨어 인벤토리 정보를 검색할 수 있습니다. Amazon RDS는 기본 운영 체제(OS)에 대한 액세스를 제한하므로 이전 버전에서는 OPatch 유틸리티를 실행할 수 없습니다. Amazon RDS가 있는 Oracle 19c에서 DBMS_QOPATCH 패키지를 실행할 권한이 있는 모든 사용자는 Oracle 소프트웨어 인벤토리 정보를 검색할 수 있습니다.

참고: 이제 Amazon RDS에는 로그 파일에서 OPatch 파일에 액세스할 수 있는 기능이 포함되어 있습니다. 이 기능은 2020년 이후에 출시된 Oracle 인스턴스에 대해 활성화됩니다. Oracle 인스턴스가 2020년 이후에 릴리스된 경우 이 기능을 사용하는 것이 가장 좋습니다. 자세한 내용은 OPatch 파일 액세스를 참조하세요.

해결 방법

쿼리 가능한 패치 인벤토리는 XML 지원 및 외부 테이블과 같은 기존 기능을 사용합니다. 다음 예에서는 쿼리 가능한 패치 인벤토리의 작동 방식을 보여 줍니다.

이 예제에서 OPATCH 쿼리는 세 개의 새로운 디렉터리 객체에서 실행됩니다.

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

다음은 쿼리의 출력 예제입니다.

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

이 예제에서 OPATCH 쿼리는 네 개의 새로운 시스템 테이블에서 실행됩니다.

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

다음은 쿼리의 출력 예제입니다.

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

기본 테이블은 OPATCH_XML_INV이고, XML 형식의 인벤토리의 전체 추출입니다. 이 테이블은 인벤토리에서 읽는 외부 테이블로 구현됩니다.

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

다음은 쿼리의 출력 예제입니다.

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

구현은 PREPROCESSOR 스크립트, qopiprep.bat 에 의해 수행됩니다. 이 스크립트는 OPATCH_SCRIPT_DIR이 가리키는 디렉터리에 있습니다. 자세한 내용은 PREPROCESSOR에 대한 Oracle 문서를 참조하십시오. OPATCH_SCRIPT_DIR을 사용하는 다음 예제 쿼리를 참조하십시오.

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

다음은 쿼리의 출력 예제입니다.

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

qopiprep.bat 스크립트는 쿼리 가능한 패치 인벤토리를 실행합니다. 그런 다음 출력을 외부 테이블 OPATCH_XML_INV에 대한 입력으로 사용할 수 있도록 XML로 출력을 생성합니다. 그런 다음, DBMS_QOPATCH에서 제공하는 패키지와 함수를 사용하여 테이블에서 Oracle 인벤토리 정보를 추출할 수 있습니다. DBMS_QOPATCH 패키지에서 제공하는 함수 및 프로시저를 보려면 Summary of DBMS_QOPATCH Subprograms에 대한 Oracle 문서를 참조하세요.

다음 쿼리를 실행하여 설치된 모든 패치를 나열합니다.

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;

다음은 쿼리의 출력 예제입니다.

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)

opatch lsinventory -detail과 유사한 형식으로 자세한 출력을 얻으려면 다음을 실행합니다.

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

다음은 쿼리의 출력 예제입니다.

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

... 
...

DBMS_QOPATCH 패키지는 다음 프로시저 및 함수도 제공합니다. 특정 패치가 설치되었는지 확인하려면 다음을 실행합니다.

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

설치된 패치로 수정된 버그 목록을 확인하려면 다음을 실행합니다.

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

특정 패치 번호로 수정된 버그를 나열하려면 다음을 실행합니다.

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

관련 정보

Oracle DB 인스턴스 관리

댓글 없음