首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 11g EM 重建遭遇 ORA-00001 唯一約束衝突解決實錄

     編輯:Oracle 資料庫相關知識

手動重建 Oracle 11g Enterprise Manager (EM) 儲存庫時,emca -config dbcontrol db -repos recreate 過程中噴出:

WARNING: ORA-00001: unique constraint (SYSMAN.PARAMETERS_PRIMARY_KEY) violated
ORA-06512: at "SYSMAN.EMD_LOADER", line 4986

環境資訊

  • DB: 11.2.0.3.0 64-bit Linux
  • SID: test

根因分析

Drop Repository 階段未完全清除 SYSMAN 物件,導致 Create Repository 時主鍵衝突。Metalink 文檔 (Doc ID 1367997.1) 指出此為已知 Bug,需手動清理殘留物件。

解決步驟

  1. 完全停止 EM:
    emctl stop dbconsole
  2. 以 SYS 登入清理 SYSMAN 殘留物件:
    DROP USER sysman CASCADE;
    DROP PUBLIC SYNONYM SETEMVIEW;
    DROP PUBLIC SYNONYM MGMT_TARGET_BLACKOUTS;
    DROP ROLE MGMT_USER;
    DROP PUBLIC SYNONYM MGMT_VERSIONS_ROOT;
  3. 刪除 EM 相關表空間資料檔(可選,若重用表空間則必須):
    DROP TABLESPACE MGMT_TABLESPACE INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
    DROP TABLESPACE MGMT_ECM_DEPOT_TS INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
  4. 重新執行 EMCA:
    emca -config dbcontrol db -repos create

驗證

EMCA 成功完成,emctl status dbconsole 顯示運行中,瀏覽器存取 https://host:1158/em 正常。

避坑提醒

  • 執行前備份 $ORACLE_HOME/hostname_sid/sysman/config/emd.properties。
  • 若為 RAC 環境,需在所有節點執行清理。
  • 11.2.0.4 及 12c 已修復此 Bug,升級為長久之計。

記住:Drop 不乾淨,Create 必報錯,徹底清理是關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved