scripts/collector/oracle/sql/extracts/opatch.sql (42 lines of code) (raw):
--
-- Copyright 2024 Google LLC
--
-- Licensed under the Apache License, Version 2.0 (the "License").
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- https://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
spool &outputdir/opdb__opatch__&v_tag
column c_patchinfo new_value p_patchinfo noprint
variable v_patchinfo VARCHAR2(500);
DECLARE
cnt NUMBER;
BEGIN
SELECT count(1) INTO cnt FROM all_objects WHERE object_name = 'DBMS_QOPATCH';
IF cnt = 1 THEN
:v_patchinfo := 'sys.dbms_qopatch.get_opatch_lsinventory';
ELSE
:v_patchinfo := 'xmltype(' || chr(39) || '<InventoryInstance>
<patches>
<patch>
<patchID>0</patchID>
<uniquePatchID>0</uniquePatchID>
<patchDescription>No Data</patchDescription>
<patchType>NA</patchType>
<appliedDate>NA</appliedDate>
</patch>
</patches>
</InventoryInstance>' || chr(39) ||')' ;
END IF;
END;
/
SELECT :v_patchinfo
AS c_patchinfo FROM dual;
WITH xml AS (
SELECT &p_patchinfo
AS x
FROM
dual ),
vopatch as (
SELECT
extractvalue(column_value, '/patch/patchID') patch_id,
extractvalue(column_value, '/patch/uniquePatchID') unique_patch_id,
extractvalue(column_value, '/patch/patchDescription') patch_descr,
extractvalue(column_value, '/patch/patchType') patch_type,
extractvalue(column_value, '/patch/appliedDate') applied_date,
extractvalue(column_value, '/patch/bugs[1]/bug[1]/description[1]') bug_descr
FROM
xml x,
TABLE ( xmlsequence(extract(x.x, '/InventoryInstance/patches/*')) ) rws
order by 1
)
SELECT :v_pkey AS pkey,
patch_id, unique_patch_id, patch_type, applied_date, patch_descr, bug_descr,
:v_dma_source_id AS DMA_SOURCE_ID, :v_manual_unique_id AS DMA_MANUAL_ID
FROM vopatch;
spool off