Oracle EMCC 13.5 安装中断后的 OMS 数据库深度清理方案
故障背景与现象
在部署 Oracle Enterprise Manager Cloud Control (EMCC) 13.5 时,若因图形界面(如 VNC)无响应等意外情况导致安装进程强行中断,直接清理文件系统并重新运行安装程序往往会触发以下错误:
The referenced database doesn't contain a valid management Repository
该错误表明 OMS (Oracle Management Service) 底层数据库并非处于初始干净状态。前次失败的安装已经在数据库中注入了部分 Schema 用户和元数据对象。虽然最彻底的解决方式是重建 OMS 数据库,但这会消耗大量时间。本文将介绍如何通过手动清理数据库残留对象来恢复安装环境。
深度清理实施方案
请使用具有 DBA 权限的账号(如 sysdba)连接到 OMS 数据库,并按顺序执行以下清理操作。
1. 移除核心管理用户
首先,强制删除 EMCC 核心组件所关联的默认用户及其所有附属对象:
DROP USER SYSMAN CASCADE;
DROP USER SYSMAN_MDS CASCADE;
DROP USER SYSMAN_RO CASCADE;
DROP USER SYSMAN_STB CASCADE;
2. 批量清除关联同义词
核心用户删除后,数据库中可能残留大量指向这些用户的同义词。通过以下 PL/SQL 脚本进行动态遍历和清理。此脚本对原逻辑进行了优化,使用 DECODE 函数简化了 SQL 拼接,并增强了异常输出的可读性:
DECLARE
CURSOR cur_orphan_synonyms IS
SELECT 'DROP ' ||
DECODE(owner, 'PUBLIC', 'PUBLIC SYNONYM ', 'SYNONYM ' || owner || '.') ||
synonym_name AS drop_command
FROM dba_synonyms
WHERE table_owner IN ('SYSMAN', 'SYSMAN_MDS', 'MGMT_VIEW', 'SYSMAN_BIP',
'SYSMAN_APM', 'BIP', 'SYSMAN_OPSS', 'SYSMAN_RO');
v_sql_stmt VARCHAR2(1000);
BEGIN
FOR rec_syn IN cur_orphan_synonyms LOOP
v_sql_stmt := rec_syn.drop_command;
BEGIN
EXECUTE IMMEDIATE v_sql_stmt;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Execution failed: ' || v_sql_stmt);
DBMS_OUTPUT.PUT_LINE('Error details: ' || SQLERRM);
END;
END LOOP;
END;
/
3. 清理视图用户与专属表空间
删除用于监控视图的特定用户,并销毁 EMCC 专属的表空间及其物理数据文件:
-- 移除视图用户
DROP USER MGMT_VIEW CASCADE;
-- 销毁残留表空间
DROP TABLESPACE mgmt_ecm_depot_ts INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
DROP TABLESPACE mgmt_tablespace INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
DROP TABLESPACE mgmt_ad4j_ts INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
4. 重置组件注册表记录
EMCC 安装时会在 schema_version_registry 中注册组件信息。必须清除这些脏数据,否则安装程序会误判组件已存在:
DELETE FROM schema_version_registry
WHERE (comp_name, owner) IN (
('Authorization Policy Manager', 'SYSMAN_APM'),
('Metadata Services', 'SYSMAN_MDS'),
('Oracle Platform Security Services', 'SYSMAN_OPSS')
);
COMMIT;
5. 排查并移除边缘辅助用户
最后,检查是否还有云引擎或 OPSS 相关的辅助用户未被清理。先执行查询确认:
SELECT username, account_status
FROM dba_users
WHERE username IN ('CLOUD_ENGINE_USER', 'CLOUD_SWLIB_USER', 'MGMT_VIEW',
'SYSMAN_TYPES', 'SYSMAN_OPSS', 'SYSMAN_STB', 'SYSMAN_RO');
若查询结果返回任何记录,请根据实际存在的用户名执行级联删除:
DROP USER CLOUD_ENGINE_USER CASCADE;
DROP USER CLOUD_SWLIB_USER CASCADE;
DROP USER SYSMAN_TYPES CASCADE;
DROP USER SYSMAN_OPSS CASCADE;
验证与继续安装
完成上述数据库层面的清理后,无需重启数据库实例。直接返回 EMCC 安装向导界面,重新点击下一步继续 OMS 的配置流程。此时安装程序将正确识别到干净的数据库环境,不再抛出 Repository 无效的错误,安装流程即可顺利推进。