LOCAL_LISTENER 引起的错误
1. 如果你的LOCAL_LISTENER 指定的是一个别名 比如L2
*.local_listener='L2'
启动实例的时候 会先到 tnsnames.ora 文件里取查找定义名为L2的TNS服务名.实例起来后会尝试把数据库服务注册到ADDRESS指定地址。
而这个地址就是你自己定义的Listener所监听的地址,这样Oracle实例就会把数据库服务自动注册到非默认的监听器了。
文件:tnsnames.ora
L2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME = m_oracle)
)
)
1. 如果HOST是一个不能识别的主机名,启动的时候会报错提示监听地址不对.
SQL> startup
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00130: invalid listener address '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=1111qqq)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=m_oracle)))'
2. 如果主机名正确,端口不对,数据库能正常启动,只是不能注册成功.运行命令 lsnrctl status L2 会发现数据库服务没有注册成功.
3. 如果 tnsnames.ora 文件中没有名字为L2的定义条目,那么ORA-00132提示L2名字不能解析.
SQL> startup
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'L2'
2. 如果 LOCAL_LISTENER的值是一个地址描述符或者一个地址描述符列表(address_list/address)
例如 *.local_listener='(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT = 1522)))'
那么实例启动的时候会知道尝试到指定地址注册数据库服务,这个时候只可能出现上面提到的前两种错误.