Rem drv:
Rem
Rem $Header: group_data_upgrade.sql 26-jul-2005.19:32:12 chyu Exp $
Rem
Rem group_data_upgrade.sql
Rem
Rem Copyright (c) 2004, 2005, Oracle. All rights reserved.
Rem
Rem NAME
Rem group_data_upgrade.sql -
Rem
Rem DESCRIPTION
Rem
Rem
Rem NOTES
Rem
Rem
Rem MODIFIED (MM/DD/YY)
Rem chyu 07/26/05 - modifying the migrate header position
Rem chyu 07/18/05 - updating the new rep manager header
Rem rpatti 07/14/05 - fix
Rem pmodi 06/27/05 - Bug:4428988 - Use DISTINCT in SQL qry
Rem rpatti 06/27/05 - disallow templates for grps
Rem pmodi 06/20/05 - Bug:4305824 -Uncomment drop table
Rem mgmt_target_comp_def
Rem jpyang 05/11/05 - add missing type properties
Rem pmodi 04/19/05 - Exception handling while adding chart
Rem neearora 03/14/05 - Corrected the typo
Rem eujang 03/03/05 - commenting out the dropping of the
Rem mgmt_comp_target_def to sync up with the
Rem creation
Rem pmodi 02/21/05 - update of user privilege/grants
Rem pmodi 02/17/05 - pmodi_em_group_migration1
Rem pmodi 02/10/05 - chart migration
Rem ktlaw 01/13/05 - add repmgr header
Rem ramalhot 01/10/05 - ramalhot_goup_migration
Rem ramalhot 12/30/04 - Created
Rem
DECLARE
l_member_targets SMP_EMD_NVPAIR_ARRAY;
l_new_target_guid mgmt_targets.target_guid%TYPE;
l_targets_to_add SMP_EMD_NVPAIR_ARRAY;
l_targets_to_remove SMP_EMD_NVPAIR_ARRAY;
l_charts MGMT_GRP_CHART_ARRAY;
l_mgmt_guid_array MGMT_GUID_ARRAY := MGMT_GUID_ARRAY();
metric_not_exists EXCEPTION;
PRAGMA EXCEPTION_INIT(metric_not_exists, -20216);
BEGIN
-- Migrate Database Group to Generic groups
FOR rec IN ( SELECT a.target_name prev_target_name,
a.target_guid prev_target_guid,
a.timezone_region tzr,
CASE
WHEN B.target_name IS NULL THEN
a.target_name
ELSE
'database_' || a.target_name
END new_target_name
FROM (SELECT *
FROM mgmt_targets
WHERE target_type = 'oracle_database_group'
) a,
(SELECT *
FROM mgmt_targets
WHERE target_type = 'composite'
) b
WHERE a.target_name = b.target_name(+)
)
LOOP
l_member_targets := new SMP_EMD_NVPAIR_ARRAY();
SELECT SMP_EMD_NVPAIR(member_target_name, member_target_type) BULK COLLECT
INTO l_member_targets
FROM mgmt_target_memberships
WHERE composite_target_guid = rec.prev_target_guid;
-- Create Group
MGMT_TARGET.add_group(p_group_name => rec.new_target_name,
p_group_type => 'composite',
p_member_targets => l_member_targets,
p_timezone_rgn => rec.tzr);
l_new_target_guid := MGMT_TARGET.get_target_guid(rec.new_target_name,'composite');
-- Register Charts
l_charts := new MGMT_GRP_CHART_ARRAY();
l_charts.extend;
l_charts(l_charts.LAST) := new MGMT_GRP_CHART('oracle_database',
'wait_bottlenecks',
'user_wait_time_pct',
MGMT_GROUP.CHART_PEAK_TARGETS,
1,3,NULL,NULL,NULL,NULL,NULL,NULL );
BEGIN
EM_GROUP.create_charts(rec.new_target_name,'composite',l_charts);
EXCEPTION
WHEN metric_not_exists THEN
NULL;
WHEN OTHERS THEN
raise_application_error(-20001, sqlerrm);
END;
l_targets_to_add := new SMP_EMD_NVPAIR_ARRAY();
l_targets_to_add.extend;
l_targets_to_add(l_targets_to_add.LAST) := new SMP_EMD_NVPAIR(rec.new_target_name,'composite');
l_targets_to_remove := new SMP_EMD_NVPAIR_ARRAY();
l_targets_to_remove.extend;
l_targets_to_remove(l_targets_to_remove.LAST) := new SMP_EMD_NVPAIR(rec.prev_target_name,'oracle_database_group');
-- Modifiy Parent Targets
FOR parent IN (SELECT composite_target_name , composite_target_type, composite_target_guid
FROM mgmt_target_memberships
WHERE member_target_guid = rec.prev_target_guid
)
LOOP
MGMT_TARGET.modify_group(parent.composite_target_name,
parent.composite_target_type,
l_targets_to_add,
l_targets_to_remove);
END LOOP;
-- resubmit the jobs here
UPDATE mgmt_job_target
SET target_guid = l_new_target_guid
WHERE target_guid = rec.prev_target_guid;
UPDATE mgmt_job_ext_targets
SET target_guid = l_new_target_guid
WHERE target_guid = rec.prev_target_guid;
UPDATE mgmt_job_step_targets
SET target_guid = l_new_target_guid
WHERE target_guid = rec.prev_target_guid;
-- modify the blackouts here
UPDATE mgmt_blackout_target_details
SET target_guid = l_new_target_guid
WHERE target_guid = rec.prev_target_guid;
UPDATE mgmt_blackout_flat_targets
SET target_guid = l_new_target_guid
WHERE target_guid = rec.prev_target_guid;
-- Update user privilege/grants for oracle_database_group
UPDATE mgmt_priv_grants
SET guid = l_new_target_guid
WHERE guid = rec.prev_target_guid ;
--Delete the original database group
MGMT_ADMIN.delete_target_sync(rec.prev_target_name,'oracle_database_group');
END LOOP;
-- Migrate Host Group to Generic groups
FOR rec IN ( SELECT a.target_name prev_target_name,
a.target_guid prev_target_guid,
a.timezone_region tzr,
CASE
WHEN B.target_name IS NULL THEN
a.target_name
ELSE
'host_' || a.target_name
END new_target_name
FROM (SELECT *
FROM mgmt_targets
WHERE target_type = 'host_group'
) a,
(SELECT *
FROM mgmt_targets
WHERE target_type = 'composite'
) b
WHERE a.target_name = b.target_name(+)
)
LOOP
l_member_targets := new SMP_EMD_NVPAIR_ARRAY();
SELECT SMP_EMD_NVPAIR(member_target_name, member_target_type) BULK COLLECT
INTO l_member_targets
FROM mgmt_target_memberships
WHERE composite_target_guid = rec.prev_target_guid;
-- Create Group
MGMT_TARGET.add_group(p_group_name => rec.new_target_name,
p_group_type => 'composite',
p_member_targets => l_member_targets,
p_timezone_rgn => rec.tzr);
l_new_target_guid := MGMT_TARGET.get_target_guid(rec.new_target_name,'composite');
-- Register Charts
l_charts := new MGMT_GRP_CHART_ARRAY();
l_charts.extend;
l_charts(l_charts.LAST) := new MGMT_GRP_CHART('host',
'Load',
'cpuUtil',
MGMT_GROUP.CHART_PEAK_TARGETS,
1,3,NULL,NULL,NULL,NULL,NULL,NULL );
l_charts.extend;
l_charts(l_charts.LAST) := new MGMT_GRP_CHART('host',
'Load',
'totIO',
MGMT_GROUP.CHART_PEAK_TARGETS,
3,3,NULL,NULL,NULL,NULL,NULL,NULL );
l_charts.extend;
l_charts(l_charts.LAST) := new MGMT_GRP_CHART('host',
'Load',
'memUsedPct',
MGMT_GROUP.CHART_PEAK_TARGETS,
2,3,NULL,NULL,NULL,NULL,NULL,NULL );
EM_GROUP.create_charts(rec.new_target_name,'composite',l_charts);
l_targets_to_add := new SMP_EMD_NVPAIR_ARRAY();
l_targets_to_add.extend;
l_targets_to_add(l_targets_to_add.LAST) := new SMP_EMD_NVPAIR(rec.new_target_name,'composite');
l_targets_to_remove := new SMP_EMD_NVPAIR_ARRAY();
l_targets_to_remove.extend;
l_targets_to_remove(l_targets_to_remove.LAST) := new SMP_EMD_NVPAIR(rec.prev_target_name,'host_group');
-- Modifiy Parent Targets
FOR parent IN (SELECT composite_target_name , composite_target_type, composite_target_guid
FROM mgmt_target_memberships
WHERE member_target_guid = rec.prev_target_guid
)
LOOP
MGMT_TARGET.modify_group(parent.composite_target_name,
parent.composite_target_type,
l_targets_to_add,
l_targets_to_remove);
END LOOP;
-- resubmit the jobs here
UPDATE mgmt_job_target
SET target_guid = l_new_target_guid
WHERE target_guid = rec.prev_target_guid;
UPDATE mgmt_job_ext_targets
SET target_guid = l_new_target_guid
WHERE target_guid = rec.prev_target_guid;
UPDATE mgmt_job_step_targets
SET target_guid = l_new_target_guid
WHERE target_guid = rec.prev_target_guid;
-- modify the blackouts here
UPDATE mgmt_blackout_target_details
SET target_guid = l_new_target_guid
WHERE target_guid = rec.prev_target_guid;
UPDATE mgmt_blackout_flat_targets
SET target_guid = l_new_target_guid
WHERE target_guid = rec.prev_target_guid;
-- Update user privilege/grants for oracle_database_group
UPDATE mgmt_priv_grants
SET guid = l_new_target_guid
WHERE guid = rec.prev_target_guid ;
--Delete the original host group
MGMT_ADMIN.delete_target_sync(rec.prev_target_name,'host_group');
END LOOP;
-- Migrate summary metrics to chart for group
-- Select group GUID and name
SELECT MGMT_GUID_OBJ(comp_target_guid, target_name) BULK COLLECT
INTO l_mgmt_guid_array
FROM ( SELECT DISTINCT c.comp_target_guid comp_target_guid, t.target_name target_name
FROM mgmt_comp_target_def c, mgmt_targets t
WHERE c.comp_target_guid = t.target_guid
) ;
FOR c IN 1 .. l_mgmt_guid_array.count LOOP
l_charts := new MGMT_GRP_CHART_ARRAY();
-- for each of the group get summary metrics of and create a chart
FOR rec IN (SELECT DISTINCT m.target_type member_target_type, m.metric_name member_metric_name, m.metric_column member_metric_column
FROM mgmt_comp_target_def def, mgmt_metrics m
WHERE def.metric_guid = m.metric_guid
AND def.comp_target_guid = l_mgmt_guid_array(c).guid
)
LOOP
l_charts.extend;
-- Setting MIN/MAX/AVG chart to "1" and SUM/STDEV chart to "0", default value
l_charts(l_charts.LAST) := new MGMT_GRP_CHART(rec.member_target_type,
rec.member_metric_name,
rec.member_metric_column,
MGMT_GROUP.CHART_SUMMARY_METRIC,
1, 3, 1, 1, 1, 0, 0, NULL );
END LOOP;
EM_GROUP.create_charts(p_target_name => l_mgmt_guid_array(c).name,
p_target_type => MGMT_GLOBAL.G_COMPOSITE_TARGET_TYPE,
p_charts_list => l_charts );
END LOOP;
-- register type properties
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_HOST_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_REDUNDANCY_GROUP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_AGENT_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_REDUNDANCY_GROUP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_DATABASE_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_REDUNDANCY_GROUP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_REPOSITORY_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_REDUNDANCY_GROUP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_BEACON_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_REDUNDANCY_GROUP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_IAS_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_REDUNDANCY_GROUP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_IAS_TARGET_TYPE,
MGMT_GLOBAL.G_IS_COMPOSITE_PROP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_OC4J_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_REDUNDANCY_GROUP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_OC4J_TARGET_TYPE,
MGMT_GLOBAL.G_IS_COMPOSITE_PROP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_WEBCACHE_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_REDUNDANCY_GROUP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_HTTP_SERVER_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_REDUNDANCY_GROUP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_COMPOSITE_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_REDUNDANCY_GROUP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_COMPOSITE_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_TEMPLATE_PROP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_CLUSTER_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_REDUNDANCY_GROUP,
'1');
MGMT_TARGET.add_target_type_property(MGMT_GLOBAL.G_RAC_DATABASE_TARGET_TYPE,
MGMT_GLOBAL.G_DISALLOW_REDUNDANCY_GROUP,
'1');
COMMIT;
END;
/
-- drop the old summary matrics table
rem This table CAN NOT be dropped along with group_schema upgrade as we need this table data upgrade.
rem This table have been removed from latest code
DROP TABLE mgmt_comp_target_def ;