Oracle 19c를 실행하는 Amazon RDS 인스턴스에서 DBMS_QOPATCH를 사용하려면 어떻게 해야 하나요?
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;
관련 정보
관련 콘텐츠
- 질문됨 2달 전lg...
- 질문됨 7달 전lg...
- 질문됨 4달 전lg...
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 5년 전