如何修改Oracle服务器的主机名_listener和tnsnames同步调整

改主机名后需同步更新listener.ora中的HOST、/etc/hosts映射、spfile/pfile中local_listener参数及tnsnames.ora服务名,否则引发TNS-12541、ORA-12154等连接故障。改完主机名后 lsnrctl status 报 "TNS-12541: No listener"oracle 监听器启动时会绑定到 listener.ora 里配置的主机名或 ip。如果只改了系统主机名(比如用 hostnamectl set-hostname newhost),但没更新 listener.ora,监听器仍尝试绑定旧主机名------而该主机名已解析不到当前机器,lsnrctl start 表面成功,实际监听失败,lsnrctl status 就会报这个错。实操建议:查当前监听器配置路径:lsnrctl status 输出里看 "Listener Parameter File",通常是 ORACLE_HOME/network/admin/listener.ora打开该文件,找到 ADDRESS 段里的 (HOST = ...),替换成新主机名(或更稳妥:直接写成 (HOST = 0.0.0.0) 或本机实际 IP)别只改 HOST,顺手检查 SID_LIST_LISTENER 下的 GLOBAL_DBNAME 和 ORACLE_SID 是否还匹配实例名(尤其跨主机迁移时容易漏)改完执行:lsnrctl reload(比 stop/start 更安全,不中断已有连接)tnsping 能通但应用连不上,报 "ORA-12154: TNS:could not resolve the connect identifier"这说明客户端能访问监听器,但监听器收不到有效服务名------大概率是 tnsnames.ora 里写的 SERVICE_NAME 或 SID 和数据库实际注册的服务不一致,或者监听器根本没加载该服务。实操建议:在数据库服务器上运行:lsnrctl services,看输出里列出的 Service "xxx" 名字,必须和 tnsnames.ora 中 SERVICE_NAME 完全一致(区分大小写)确认数据库是否已动态注册:SELECT value FROM vparameter WHERE name = 'service_names';;如果为空,需手动注册:ALTER SYSTEM REGISTER;tnsnames.ora 文件位置要明确:客户端程序读的是它自己环境下的 $TNS_ADMIN/tnsnames.ora,不是服务器上的;Java 应用可能走 jdbc:oracle:thin:@... 直连,根本不读这个文件改主机名后数据库实例起不来,报 "ORA-01078: failure in processing system parameters"这不是监听器问题,而是 spfile 或 pfile 里硬编码了旧主机名,比如 local_listener 参数指向了旧地址,导致实例启动时无法联系监听器完成注册,卡在初始化阶段。 AI Code Reviewer AI自动审核代码

相关推荐
YOU OU2 小时前
Redis基础常识与命令
数据库·redis·缓存
Scott9999HH2 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
AI云海3 小时前
python 列表、元组、集合和字典
开发语言·python
二十雨辰4 小时前
[爬虫]-Urllib
爬虫·python
Database_Cool_4 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
爱写代码的阿森5 小时前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_5 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
玉鸯5 小时前
Agent Hook:在概率推理之上,为 Agent 叠加确定性控制
python·langchain·agent
姜太小白6 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql