Oracle 21c XE监听器配置及DBCA创建数据库异常求助
解决Oracle 21c XE监听器异常导致DBCA无法识别的问题
问题定位
从lsnrctl services返回的TNS-01153: Failed to process string: PGD~É错误来看,核心是监听器配置文件或环境变量存在乱码/文件损坏——尽管Windows服务显示监听器运行,但实际解析配置时出错,导致DBCA判定其状态为Down。
修复步骤
1. 备份并重建listener.ora配置文件
当前配置语法看似正常,但可能存在隐藏乱码或损坏:
- 停止监听器:
lsnrctl stop LISTENER - 进入监听器配置目录(通常为
C:\app\ABC.lab\product\21c\dbhomeXE\network\admin),将原listener.ora重命名为listener.ora.bak做备份。 - 新建空白
listener.ora,复制以下干净配置(注意匹配你的ORACLE_HOME和主机名):DEFAULT_SERVICE_LISTENER = XE SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\app\ABC.lab\product\21c\dbhomeXE) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:C:\app\ABC.lab\product\21c\dbhomeXE\bin\oraclr.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = monarch.ABC.lab)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) - 保存文件时选择ANSI编码(Windows记事本默认编码),避免UTF-8带BOM导致解析异常。
2. 检查并修正系统环境变量
- 打开系统环境变量面板,确认以下变量配置正确:
ORACLE_HOME:C:\app\ABC.lab\product\21c\dbhomeXEORACLE_SID:XEPATH:将%ORACLE_HOME%\bin移至最前端,避免其他版本Oracle工具干扰。
- 修正后重启命令行窗口,确保环境变量生效。
3. 重启监听器并验证功能
- 启动监听器:
lsnrctl start LISTENER - 执行以下命令确认无报错:
正常输出应包含监听地址、已注册服务状态等信息,无TNS相关错误。lsnrctl status LISTENER lsnrctl services LISTENER
4. 重新运行DBCA创建数据库
监听器验证正常后,启动DBCA,此时监听器状态会显示为Up,可正常选择并完成数据库创建流程。
额外排查点
若以上步骤无效,可尝试:
- 检查Windows服务
OracleOraDB21Home1TNSListener的登录账户,确保为本地系统账户,排除权限问题。 - 临时关闭Windows防火墙(或添加1521端口的入站允许规则),排除端口阻塞导致的连接异常。
内容的提问来源于stack exchange,提问作者myamulla_ciencia
相关产品推荐
相关产品推荐

