共用方式為


從 Operations Manager 2007 R2 升級時的升級後工作

 

適用於: System Center 2012 R2 Operations Manager, System Center 2012 - Operations Manager, System Center 2012 SP1 - Operations Manager

在完成 System Center 2012 – Operations Manager 的升級程序之後,您必須執行數項升級後工作。

升級後工作

下表顯示升級至 System Center 2012 – Operations Manager 後需要完成的工作, 並指出何時要執行該項工作。

工作

何時執行工作

重新啟用通知訂閱。

在任何升級路徑中完成升級工作之後。

重新啟動或重新啟用連接器服務

在完成任何升級路徑中的升級工作後,並且只有在裝有連接器服務的情況下。

解除安裝舊版 RMS

只有在升級次要管理伺服器上的管理群組的情況下。

更新覆寫

升級管理群組之後

確認升級已成功

在任何升級路徑中完成升級工作之後。

在每個管理群組上執行 SQL 查詢

在每個管理群組上執行 SQL 查詢,以清除 Localizedtext 表格和 Publishmessage 表格。

將 UNIX/Linux 代理程式指派給資源集區

在任何升級路徑中完成升級工作之後。

重新啟用通知訂閱。

完成升級後,請依照下列程序重新啟用訂閱。

若要重新啟用訂閱

  1. 使用屬於 Operations Manager 管理群組之 System Center 2012 – Operations Manager 系統管理員角色成員的帳戶開啟 Operations 主控台。

  2. 在 Operations 主控台的瀏覽窗格中,按一下 [系統管理] 按鈕。

    System_CAPS_note注意事項

    當您在非管理伺服器的電腦上執行 Operations 主控台時,會出現 [連線至伺服器] 對話方塊。 在 [伺服器名稱] 文字方塊中,輸入您要連線的 System Center 2012 – Operations Manager 管理伺服器名稱。

  3. 在 [系統管理] 窗格的 [通知] 底下,按一下 [訂閱]。

  4. 在 [動作] 窗格中,針對列出的每個訂閱按一下 [啟用]。

重新啟動或重新啟用連接器服務

請參閱任何安裝的連接器的協力廠商文件,判斷連接器是否支援 System Center 2012 – Operations Manager。

若要重新啟動連接器服務

  1. 在工作列上,依序按一下 [開始]、[系統管理工具] 和 [服務]。

  2. 在 [名稱] 欄中,以滑鼠右鍵按一下您要重新啟動的連接器,然後按一下 [啟動]。

解除安裝舊版 RMS

如果您是因為 RMS 不符合 System Center 2012 – Operations Manager 的支援設定而從次要管理伺服器升級到 System Center 2012 – Operations Manager,RMS 在升級期間會從管理群組移除。 您接著可以解除安裝舊版 Root Management Server (RMS)。

System_CAPS_note注意事項

如果您是從次要管理伺服器升級,可以建立 Windows 電腦名稱與舊版 RMS 相同的新管理伺服器,而不必變更組態設定來指向新的管理伺服器。

若要解除安裝舊版 RMS

  1. 使用具有本機系統管理員權限的帳戶登入裝載 RMS 的電腦。

  2. 在工作列上,依序按一下 [開始] 和 [控制台],然後執行 [程式和功能]。

  3. 以滑鼠右鍵按一下 Operations Manager 2007 R2,然後按一下 [解除安裝]。

  4. 在 [程式和功能] 對話方塊中,按一下 [是] 確認要解除安裝。

更新覆寫

如果您針對 Active Directory 整合規則建立了任何覆寫,就必須在管理群組升級完成之後重新建立。 請刪除舊覆寫,然後建立以 Active Directory 指派資源集區為目標的新相符覆寫。

確認升級已成功

請執行下列工作來確認升級是否成功。

  • 在健全狀況服務監看員狀態檢視中,檢查管理伺服器和代理程式的健全狀況狀態。 在 Operations 主控台的 [系統管理] 工作區中,確定管理伺服器和代理程式的狀況良好。 在 [監視] 工作區中,檢查是否有與管理群組健全狀況相關的任何警示。

  • 檢閱所有管理伺服器的事件記錄檔,查看是否有新的錯誤。

  • 依上次修改時間欄排序警示,檢閱新的警示。

  • 檢查資料庫伺服器上的 CPU 使用率和磁碟 I/O,確定資料庫伺服器是否正常運作。

  • 如裝有報表功能,請按一下 [報表],然後執行一般效能報表,確定報表功能正常運作。

  • 重新部署升級程序期間解除安裝的任何代理程式。

在每個管理群組上執行 SQL 查詢

在每個管理群組的操作資料庫上執行下列 SQL 查詢,以清除 Localizedtext 表格和 Publishmessage 表格。

-- 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

將 UNIX/Linux 代理程式指派給資源集區

在完成升級之後,必須將 UNIX/Linux 代理程式指派給資源集區,以啟用高可用性監視和代理程式系統管理。 如需建立資源集區的詳細資訊,請參閱How to Create a Resource Pool (如何建立資源集區)

  1. 使用屬於 om12short 管理群組之 Operations Manager 系統管理員角色成員的帳戶開啟 Operations 主控台。

  2. 在 Operations 主控台的瀏覽窗格中,按一下 [系統管理] 按鈕。

  3. 在 [系統管理] 窗格的 [裝置管理] 底下,按一下 [UNIX/Linux 電腦]。

  4. 選取要指派給資源集區的 UNIX/Linux 電腦,然後在 [動作] 窗格中按一下 [變更資源集區]。

  5. 完成 [變更資源集區] 精靈,將電腦指派給選取的資源集區。