Windows11下安装APEX 22.2遇catcon初始化错误如何解决?
问题场景
在Windows 11系统中安装APEX 22.2,已通过@apxremov.sql卸载旧版本,但执行安装命令:
SQL> @apexins APEX APEX TEMP /i/
时触发catcon初始化错误,核心报错信息:
catcon::validate_con_names: PDB$SEED is not open
catcon::get_affected_containers: Unexpected error returned by validate_con_names for default Container list
catcon::catconInit2: Unexpected error returned by get_affected_containers
Unexpected error encountered in catconInit2; exiting
安装进程异常退出。
解决方案
1. 打开PDB$SEED种子库
APEX在多租户CDB环境安装时,要求PDB$SEED处于打开状态。登录CDB根容器(CDB$ROOT),执行以下操作:
-- 确认当前容器为CDB$ROOT SHOW CON_NAME; -- 打开PDB$SEED ALTER PLUGGABLE DATABASE PDB$SEED OPEN READ ONLY; -- 验证打开状态 SELECT name, open_mode FROM v$pdbs WHERE name = 'PDB$SEED';
确保查询结果中OPEN_MODE字段值为READ ONLY。
2. 彻底清理旧APEX残留
若之前的卸载不彻底,可能导致安装冲突。在CDB$ROOT容器中重新执行卸载脚本:
@?/apex/apxremov.sql
执行完成后,检查是否存在残留的APEX用户和对象:
-- 检查APEX相关用户 SELECT username FROM dba_users WHERE username LIKE 'APEX_%'; -- 检查APEX相关对象 SELECT owner, object_name FROM dba_objects WHERE owner LIKE 'APEX_%';
如果发现残留,手动删除对应用户(需替换为实际残留的用户名):
DROP USER APEX_220200 CASCADE;
3. 重新执行APEX安装命令
确保当前处于CDB$ROOT容器,且PDB$SEED已打开,再次运行安装命令:
@apexins APEX APEX TEMP /i/
安装过程中可通过目录下的apexins_cdb*.log日志文件跟踪进度,若出现异常可通过以下命令快速定位错误:
grep ORA- *.log grep PLS- *.log
原因说明
APEX 22.2的安装脚本依赖catcon工具在多租户环境的所有容器中部署组件,PDB$SEED作为所有新PDB的模板,必须处于打开状态才能完成初始化检测,否则会触发catcon初始化失败,导致安装退出。
内容的提问来源于stack exchange,提问作者Simon Suarez

