从Vmware 克隆出一个原本正常的包含ORACLE的系统。
由于IP地址冲突,修改了IP地址,地址从132.147.100.101 132.147.100.102 修改为 但没有修改机器名,仍然为primary (机器名没有冲突)。
发现数据库监听不能正常启动,如下:
LSNRCTL> status
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=primary)(PORT=1521)))
TNS-01189: 监听程序无法验证用户
由于Listener.ora文件中配置的是机器名而不是IP地址,所以不知道是什么原因引起的。
偶尔ping下主机:
D:\>ping primary
Pinging primary [132.147.100.101] with 32 bytes of data:
Control-C
^C
发现primary的IP地址仍为132.147.100.101
原来在系统的hosts (windows 下C:\WINDOWS\system32\drivers\etc\) 文件中定义了
132.147.100.101 Primary
将这里的地址改为132.147.100.102
再启动监听:
LSNRCTL> start
启动tnslsnr: 请稍候...
TNSLSNR for 32-bit Windows: Version 10.2.0.3.0 - Production
系统参数文件为D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
写入D:\oracle\product\10.2.0\db_1\network\log\listener.log的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Priamry)(PORT=1521)))
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=primary)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.3.0 - Produ
ction
启动日期 02-2月 -2009 09:23:48
正常运行时间 0 天 0 小时 0 分 3 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 D:\oracle\product\10.2.0\db_1\network\admin\listener.o
ra
监听程序日志文件 D:\oracle\product\10.2.0\db_1\network\log\listener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Priamry)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
小结: windows 系统判断本机主机名的地址时,首先会使用HOST文件查找,再查找本机地址。如果有遇到TNS-01189 类似问题,不妨先ping 下,看看IP地址是否正确。在上面的例子中,由于监听启动的不是本机的监听,自然需要密码验证,因此也自然报上面的错误。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9036/viewspace-545001/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9036/viewspace-545001/