Post-Upgrade Tasks when Upgrading from Operations Manager 2007 R2

 

Updated: May 13, 2016

Applies To: System Center 2012 R2 Operations Manager, System Center 2012 - Operations Manager, System Center 2012 SP1 - Operations Manager

After you have completed the upgrade process for System Center 2012 – Operations Manager, you must perform a number of post-upgrade tasks.

Post-Upgrade Tasks

The following table shows the tasks that you need to complete after you have upgraded to System Center 2012 – Operations Manager. It also indicates when to perform the task.

Task

When to the Perform Task

Re-enable the Notification Subscriptions.

After you complete the upgrade tasks in any upgrade path.

Restart or Re-enable the Connector Services

After you complete the upgrade tasks in any upgrade path, and only if the connector services are installed.

Uninstall the Old RMS

Only if you upgrade the management group on the secondary management server.

Update Overrides

After you upgrade the management group

Verify That the Upgrade Was Successful

After you complete the upgrade tasks in any upgrade path.

Run SQL Query on each Management Group

Run SQL query on each management group to clean up the Localizedtext table and the Publishmessage table.

Assign UNIX/Linux Agents to a Resource Pool

After you complete the upgrade tasks in any upgrade path.

Re-enable the Notification Subscriptions.

After the upgrade has finished, use the following procedure to re-enable subscriptions.

To re-enable the subscriptions

  1. Open the Operations console by using an account that is a member of the Operations Manager Administrators role for the System Center 2012 – Operations Manager management group.

  2. In the Operations console, in the navigation pane, click the Administration button.

    Note

    When you run the Operations console on a computer that is not a management server, the Connect To Server dialog box appears. In the Server name text box, type the name of the System Center 2012 – Operations Manager management server to which you want to connect.

  3. In the Administration pane, under Notifications, click Subscriptions.

  4. In the Actions pane, click Enable for each subscription listed.

Restart or Re-enable the Connector Services

Refer to the third-party documentation for any installed connectors to determine if the connectors are supported for System Center 2012 – Operations Manager.

To restart a connector service

  1. On the taskbar, click Start, click Administrative Tools, and then click Services.

  2. In the Name column, right-click the connector that you want to restart, and then click Start.

Uninstall the Old RMS

If you have upgraded to System Center 2012 – Operations Manager from the secondary management server because the RMS did not meet the supported configurations for System Center 2012 – Operations Manager, the RMS is removed from the management group during upgrade. You can then uninstall the old root management server (RMS).

Note

If you upgraded from the secondary management server, you can build a new management server with the same Windows computer name as the old RMS, rather than change the configuration settings to point to the new management server.

To uninstall the old RMS

  1. Log on to the computer hosting the RMS with an account that has local administrator permissions.

  2. On the taskbar, click Start, and then click Control Panel, and then run Programs and Features.

  3. Right-click Operations Manager 2007 R2, and then click Uninstall.

  4. In the Program and Features dialog box, click Yes to confirm that you want to uninstall.

Update Overrides

If you created any overrides for the Active Directory Integration rules, you must recreate them after the management group upgrade is complete. Delete the old override, and then create a new, matching override that targets the Active Directory Assignment Resource Pools.

Verify That the Upgrade Was Successful

Perform the following tasks to verify that the upgrade was successful.

  • Check the health state of the management servers and agents in the Health Service Watcher state view. In the Administration workspace of the Operations console, ensure that the management servers and agents are healthy. In the Monitoring workspace, check if there are any alerts related to the management group health.

  • Review the event logs of all the management servers for new errors.

  • Sort alerts by the last-modified column to review the new alerts.

  • Check the CPU utilization and disk I/O on your database servers to ensure that they are functioning normally.

  • If the Reporting feature is installed, click Reporting, and then run a generic performance report to ensure that Reporting is functioning correctly.

  • Re-deploy any agents that you uninstalled during the upgrade process.

Run SQL Query on each Management Group

Run the following SQL query on the Operational database in each management group to clean up the Localizedtext table and the Publishmessage table.

-- Create a temporary table to quickly find a PublisherId when you know the MessageId.
BEGIN TRY
CREATE TABLE #PublisherMessageReverseIndex(MessageStringId UNIQUEIDENTIFIER, 
   MessageId INT)
CREATE CLUSTERED INDEX #PublisherMessageReverseIndex_CI ON #PublisherMessageReverseIndex(MessageStringId)
INSERT INTO #PublisherMessageReverseIndex (MessageStringId, MessageId)
SELECT MessageStringId, MessageId
FROM dbo.PublisherMessages

-- Create a temporary table of message lengths, message IDs, and message hashes with the
-- MessageStringId to quickly determine whether a message is duplicated. Index the table. 

CREATE TABLE #LTHashStrings (MessageStringId UNIQUEIDENTIFIER, 
 LTValueLen INT, 
 LTValueHash VARBINARY(32),
 MessageId INT NULL)
CREATE CLUSTERED INDEX #LTHashStrings_CI ON #LTHashStrings(MessageStringId)
CREATE NONCLUSTERED INDEX #LTHashStrings_NCI1 ON #LTHashStrings(LTValueLen, MessageId, LTValueHash)

-- Create a temporary table for the orphaned PublisherStrings that you find. Orphaned PublisherStrings 
-- are rows in PublisherMessages whose corresponding events have already been groomed. They still
-- have corresponding rows in LocalizedText.  Do not add rows for PublisherMessages; they are not
-- for duplicated messages.

CREATE TABLE #OrphanedPublisherStrings (PublisherId UNIQUEIDENTIFIER, 
MessageStringId UNIQUEIDENTIFIER)
CREATE CLUSTERED INDEX #OrphanedPublisherStrings_CI ON #OrphanedPublisherStrings(MessageStringId)

-- Create a temporary table so that you can determine whether a PublisherMessages row still
-- has a corresponding event. These events do not have an index on the PublisherId, so do 
-- not query the EventAllView. If a PublisherId occurs multiple times in the event tables,
-- it is only needed one time in the temp table; therefore, the unique clustered index
-- must contain IGNORE_DUP_KEY. This keeps the temporary table relatively small and saves
-- time when you want to see the orphaned PublisherMessages.

CREATE TABLE #EventAllPublishers (PublisherId UNIQUEIDENTIFIER)
CREATE UNIQUE CLUSTERED INDEX #EventAllPublishers_CI ON #EventAllPublishers (PublisherId)
WITH (IGNORE_DUP_KEY = ON)

-- Populate the temporary table by scanning EventAllView one time.
INSERT INTO #EventAllPublishers(PublisherId) 
SELECT PublisherId 
FROM EventAllView

-- Populate the first temporary table to determine which messages are duplicated.
INSERT INTO #LTHashStrings (MessageStringId, LTValueLen, LTValueHash, MessageId)
SELECT LTStringId, len(LTValue), HashBytes('SHA1', LTValue), MessageId
FROM dbo.LocalizedText LT 
JOIN #PublisherMessageReverseIndex PM ON PM.MessageStringId = LTStringId

-- Create the second table to determine which messages are duplicated.  
CREATE TABLE #LTCountByMessage( LTValueLen INT, 
MessageId INT, 
LTValueHash VARBINARY(32), 
MsgCount INT)
CREATE CLUSTERED INDEX #LTCountByMessage_CI ON #LTCountByMessage(LTValueLen, MessageId, LTValueHash)

-- Populate second message for duplicate message detection by scanning the INDEX of
-- the first one and by doing a grouped count.
INSERT INTO #LTCountByMessage (LTValueLen, MessageId, LTValueHash, MsgCount)
SELECT LTValueLen, MessageId, LTValueHash, COUNT(1) 
FROM #LTHashStrings
GROUP BY LTValueLen, MessageId, LTValueHash

-- You are now set up to detect both orphaned PublisherStrings and duplicated messages
-- by joining to our relatively small (and correctly indexed) temporary tables.
-- Determine the OrphanedPublisherStrings that have duplicate messages.
INSERT INTO #OrphanedPublisherStrings (PublisherId, MessageStringId)
SELECT PM.PublisherId, PM.MessageStringId 
FROM dbo.PublisherMessages PM 
JOIN #LTHashStrings LTS ON (LTS.MessageStringId = PM.MessageStringId AND LTS.MessageId = PM.MessageId)
JOIN #LTCountByMessage LTC ON (LTC.LTValueLen = LTS.LTValueLen AND
LTC.MessageId = LTS.MessageId AND LTC.LTValueHash = LTS.LTValueHash)
WHERE PM.PublisherId NOT IN (SELECT PublisherId FROM #EventAllPublishers) AND
LTC.MsgCount > 1

-- Deleting all the OrphanedPublisherStrings and all the corresponding LocalizedText rows
-- at one time may be too large for the transaction log to handle.  Create a numbered
-- or ordered table so that you can delete them in relatively small batches and not
-- overtax the transaction log.
CREATE TABLE #NumberOrphanPublisherStrings(OrphanNum INT IDENTITY,
   PublisherId UNIQUEIDENTIFIER, 
   MessageStringId UNIQUEIDENTIFIER)
CREATE CLUSTERED INDEX #NumberOrphanPublisherStrings_CI on #NumberOrphanPublisherStrings(OrphanNum)

-- Populate the numbered table.
INSERT INTO #NumberOrphanPublisherStrings (PublisherId, MessageStringId)
SELECT PublisherId, MessageStringId FROM #OrphanedPublisherStrings
END TRY
BEGIN CATCH
GOTO Error
END CATCH

-- Set up variables so that you can delete the orphaned rows.
-- If the transaction log fills up, try to reduce the @OrphanIncrement value,
-- which controls the number of rows that are delete at the same time.
DECLARE @OrphanNum INT
DECLARE @OrphanIncrement INT
DECLARE @OrphanLimit INT
SET @OrphanNum = 0
SET @OrphanIncrement = 10000
SELECT @OrphanLimit = MAX(OrphanNum) FROM #NumberOrphanPublisherStrings
BEGIN TRY
WHILE @OrphanNum < @OrphanLimit
BEGIN
DELETE dbo.LocalizedText FROM
#NumberOrphanPublisherStrings OPS JOIN dbo.LocalizedText LT
ON LT.LTStringId = OPS.MessageStringId
WHERE OPS.OrphanNum >= @OrphanNum AND OPS.OrphanNum < @OrphanNum + @OrphanIncrement
DELETE dbo.PublisherMessages FROM
#NumberOrphanPublisherStrings OPS JOIN dbo.PublisherMessages PM
ON PM.PublisherId = OPS.PublisherId
WHERE OPS.OrphanNum >= @OrphanNum AND OPS.OrphanNum < @OrphanNum + @OrphanIncrement
SET @OrphanNum = @OrphanNum + @OrphanIncrement
END
END TRY
BEGIN CATCH
GOTO Error
END CATCH

Error:
IF @@ERROR <> 0
   SELECT 
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_MESSAGE() AS ErrorMessage;

-- Try to drop all the temporary tables
BEGIN TRY
IF EXISTS (SELECT 1 FROM tempdb.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '#PublisherMessage%')
DROP TABLE #PublisherMessageReverseIndex
IF EXISTS (SELECT 1 FROM tempdb.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '#OrphanedPublisherStrings%')
DROP TABLE #OrphanedPublisherStrings
IF EXISTS (SELECT 1 FROM tempdb.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '#LTHashStrings%')
DROP TABLE #LTHashStrings
IF EXISTS (SELECT 1 FROM tempdb.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '#EventAllPublishers%')
DROP TABLE #EventAllPublishers
IF EXISTS (SELECT 1 FROM tempdb.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '#LTCountByMessage%')
DROP TABLE #LTCountByMessage
IF EXISTS (SELECT 1 FROM tempdb.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '#NumberOrphanPublisherStrings%')
DROP TABLE #NumberOrphanPublisherStrings
END TRY
BEGIN CATCH
   SELECT 
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_MESSAGE() AS ErrorMessage;
END CATCH

Assign UNIX/Linux Agents to a Resource Pool

After completing the upgrade, UNIX/Linux agents must be assigned to a resource pool to enable highly-available monitoring and agent administration. For more information on creating resource pools, see How to Create a Resource Pool.

  1. Open the Operations console by using an account that is a member of the Operations Manager Administrators role for the om12short management group.

  2. In the Operations console, in the navigation pane, click the Administration button.

  3. In the Administration pane, under Device Management, click UNIX/Linux Computers.

  4. Select the UNIX/Linux computers to assign to a resource pool, and in the Actions pane, click Change Resource Pool.

  5. Complete the Change Resource Pool wizard to assign the computers to the selected resource pool.