Rem drv:
Rem
Rem $Header: syshist_pkgbody.sql 07-jul-2006.12:35:16 vkarpura Exp $
Rem
Rem syshist_pkgbody.sql
Rem
Rem Copyright (c) 2006, Oracle. All rights reserved.
Rem
Rem NAME
Rem syshist_pkgbody.sql -
Rem
Rem DESCRIPTION
Rem
Rem
Rem NOTES
Rem
Rem
Rem MODIFIED (MM/DD/YY)
Rem vkarpura 04/14/06 - Creation
Rem vkarpura 04/14/06 - Creation
Rem vkarpura 04/14/06 - Created
Rem
CREATE OR REPLACE PACKAGE BODY SYST_HIST AS
PROCEDURE RECORD_CHANGES( p_system IN SMP_EMD_NVPAIR,
v_system_list IN SMP_EMD_NVPAIR_ARRAY)
IS
l_current_user mgmt_targets.owner%TYPE;
BEGIN
l_current_user := MGMT_USER.get_current_em_user();
RECORD_CHANGES(p_system, v_system_list, l_current_user);
END;
PROCEDURE RECORD_CHANGES( p_system IN SMP_EMD_NVPAIR,
v_system_list IN SMP_EMD_NVPAIR_ARRAY,
modified_by IN VARCHAR2)
IS
l_targets_list SMP_EMD_NVPAIR_ARRAY := SMP_EMD_NVPAIR_ARRAY();
l_system_guid MGMT_TARGETS.TARGET_GUID%TYPE;
l_member_guid MGMT_TARGETS.TARGET_GUID%TYPE;
l_member_name MGMT_TARGETS.TARGET_NAME%TYPE;
l_member_type MGMT_TARGETS.TARGET_TYPE%TYPE;
--ecm precall back
l_precall_arr SMP_EMD_NVPAIR_ARRAY := SMP_EMD_NVPAIR_ARRAY();
l_preload_out SMP_EMD_NVPAIR_ARRAY := SMP_EMD_NVPAIR_ARRAY();
l_nvpair SMP_EMD_NVPAIR;
snapshot_id RAW(16) := NULL;
l_name VARCHAR(100);
l_system_name MGMT_TARGETS.TARGET_NAME%TYPE;
l_system_type MGMT_TARGETS.TARGET_TYPE%TYPE;
BEGIN
IF (p_system IS NOT NULL AND
p_system.name IS NOT NULL AND
p_system.value IS NOT NULL ) THEN
BEGIN
l_system_name := p_system.name;
l_system_type := p_system.value;
END;
ELSE
RETURN;
END IF;
--dbms_output.put_line('Updating Sytem changes for :'||l_system_name || ' of ' || l_system_type);
IF (IS_TRACKED_SYSTEM(p_system)) THEN
l_system_guid := MGMT_TARGET.GET_TARGET_GUID(l_system_name, l_system_type);
l_precall_arr.extend(4);
l_nvpair := SMP_EMD_NVPAIR(ECM_CT.G_TARGET_GUID, l_system_guid);
l_precall_arr(1) := l_nvpair;
l_nvpair := SMP_EMD_NVPAIR(ECM_CT.G_COLLECTION_NAME, 'system_change_config');
l_precall_arr(2) := l_nvpair;
l_nvpair := SMP_EMD_NVPAIR(ECM_CT.G_COLLECTION_TIMESTAMP,
to_char(sysdate, MGMT_GLOBAL.G_AGENT_DATE_FORMAT));
l_precall_arr(3) := l_nvpair;
l_nvpair := SMP_EMD_NVPAIR(ECM_CT.G_CONFIG_METADATA_VERSION, '1');
l_precall_arr(4) := l_nvpair;
ECM_CT.PRELOAD_CALLBACK(l_precall_arr, l_preload_out);
IF l_preload_out IS NOT NULL AND l_preload_out.COUNT > 0 THEN
l_name := UPPER(l_preload_out(1).NAME);
IF (l_name = ECM_CT.G_ECM_SNAPSHOT_ID) THEN
snapshot_id := l_preload_out(1).VALUE;
END IF;
END IF;
IF snapshot_id IS NULL THEN
RETURN;
END IF;
IF v_system_list IS NOT NULL AND v_system_list.COUNT > 0
THEN
--dbms_output.put_line('Adding the following :');
--debug_me(v_system_list);
FOR i IN 1..v_system_list.COUNT
LOOP
--dbms_output.put_line('Adding the :'|| v_system_list(i).name || v_system_list(i).value);
select target_guid, target_name, target_type
INTO l_member_guid, l_member_name, l_member_type
FROM mgmt_targets
where target_name = v_system_list(i).name
and target_type = v_system_list(i).value;
insert into MGMT_SYSTEM_CHANGES(ECM_SNAPSHOT_ID, SYSTEM_NAME,
SYSTEM_TYPE, MEMBER_NAME, MEMBER_TYPE, MODIFIED_BY)
VALUES (snapshot_id, l_system_name, l_system_type,
l_member_name, l_member_type, 'NONE');
END LOOP;
END IF;
ECM_CT.POSTLOAD_CALLBACK(l_precall_arr, l_preload_out);
update MGMT_SYSTEM_CHANGES set MODIFIED_BY=modified_by
where ECM_SNAPSHOT_ID = snapshot_id;
END IF;
END RECORD_CHANGES;
FUNCTION IS_TRACKED_SYSTEM(p_system IN SMP_EMD_NVPAIR)
RETURN BOOLEAN
IS
PROP_VALUE VARCHAR2(100);
l_system_name MGMT_TARGETS.TARGET_NAME%TYPE;
l_system_type MGMT_TARGETS.TARGET_TYPE%TYPE;
BEGIN
IF (p_system IS NOT NULL AND
p_system.name IS NOT NULL AND
p_system.value IS NOT NULL ) THEN
BEGIN
l_system_name := p_system.name;
l_system_type := p_system.value;
END;
ELSE
RETURN FALSE;
END IF;
--return TRUE;
BEGIN
SELECT P.PROPERTY_VALUE
INTO PROP_VALUE
FROM MGMT_TARGETS T, MGMT_TARGET_PROPERTIES P
WHERE T.TARGET_NAME = l_system_name
AND T.TARGET_TYPE = l_system_type
AND T.TARGET_GUID = P.TARGET_GUID
AND P.PROPERTY_TYPE = 'INSTANCE'
AND P.PROPERTY_NAME = 'creationType';
EXCEPTION WHEN NO_DATA_FOUND THEN
RETURN FALSE;
END;
IF PROP_VALUE IS NOT NULL AND PROP_VALUE = 'auto'
THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END;
PROCEDURE GET_SYSTEM_HISTORY_INFO(P_TARGET_NAME IN MGMT_TARGETS.TARGET_NAME%TYPE,
P_TARGET_TYPE IN MGMT_TARGETS.TARGET_TYPE%TYPE,
P_DURATION IN INTEGER,
IS_AUTO_CREATED OUT INTEGER,
CATEGORY_TYPE OUT VARCHAR2,
CHANGES_COUNT OUT INTEGER)
IS
CNT INTEGER;
L_TARGET_GUID MGMT_TARGETS.TARGET_GUID%TYPE;
BEGIN
CNT :=0;
IS_AUTO_CREATED := 0;
BEGIN
L_TARGET_GUID := MGMT_TARGET.GET_TARGET_GUID(P_TARGET_NAME,P_TARGET_TYPE);
SELECT COUNT(*) INTO CNT
FROM MGMT_TARGET_PROPERTIES
WHERE TARGET_GUID = L_TARGET_GUID
AND PROPERTY_TYPE = 'INSTANCE'
AND PROPERTY_NAME = 'creationType'
AND PROPERTY_VALUE = 'auto';
IF CNT > 0 THEN
IS_AUTO_CREATED := 1;
SELECT category, COUNT(DISTINCT DELTAGUID)
INTO CATEGORY_TYPE, CHANGES_COUNT
FROM mgmt$ecm_config_history hist
WHERE (DELTATIME >= TRUNC(SYSDATE - P_DURATION))
AND hist.target_name=P_TARGET_NAME
AND hist.target_type=P_TARGET_TYPE
GROUP BY target_type, snapshottype, category;
END IF;
EXCEPTION WHEN NO_DATA_FOUND THEN
CATEGORY_TYPE := NULL;
CHANGES_COUNT := 0;
END;
END GET_SYSTEM_HISTORY_INFO;
END SYST_HIST;
/
COMMIT;
show errors;