ORACLE 11G RAC环境:
no servers/no listener, and scan_listener modify.
no servers and no listener 的问题大多都和 local_listener 参数有关系,就是当前节点监听的IP和端口
首先查看监听日志根据监听日志找问题/u01/app/grid/diag/tnslsnr/rac01/listener/alert/log.xml
如果找不到问题所在
一:.检查环境变量 cat /home/oracle/.bash_profile cat /home/grid/.bash_profil
二:.检查监听数据库监听IP和端口:
grid和oracle用户登入数据库查看:
show parameter local_l
select instance_name,status from v$instance;
如果发现监听IP或端口不对
用以下命令:
(grid是单独的,但是oracle更改如果不加scop的话,所有节点都会更改,所有oracle的需要指定节点,建议grid和oracle都要指定)
local_listener都是public的vip
grid:(节点一)
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST=10.10.11.27)(PORT=1521))))' scope=both sid='+ASM1';
oracle:
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST=10.10.11.27)(PORT=1521))))' scope=both sid='racdb1';
grid:(节点二)
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST=10.10.11.47)(PORT=1521))))' scope=both sid='+ASM2';
oracle:
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST=10.10.11.47)(PORT=1521))))' scope=both sid='racdb2';
三:.检查grid家目录:listener.ora ,oracle家目录:tnsnames.ora的配置
RAC中建议使用动态注册,所有节点listener.ora信息都一样,tnsnames.ora如下
PS:监听IP都是本地public的vip , tnsname.ora数据库IP 最好用scan IP ###实现负载均衡,故障转移等功能。
listener.ora:
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))) # line added by Agent
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))) # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent
tnsname.ora:
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0.3/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
RACDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521)) ###ps:连接数据库用scan ip
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
)
)
ASM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.11.27)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(ORACLE_SID = +ASM1)
)
)
RMAN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = bask_server)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rman)
)
)
四:.关于scan_listener
srvctl modify scan_listener -p 1521 修改scan的端口
srvctl status scan_listener
srvctl config scan_listener
srvctl start scan_listener
alter system set remote_listener='rac-scan:1521'; 数据库中修改远程监听
alter system set remote_listener='';
srvctl stop listener
srvctl stop scan_listener
srvctl start listener
srvctl start scan_listener