TNS-01185: Registration attempted from a remote node

本文讨论了在Oracle RAC环境中,如何确保不同节点能够正确监听到各自及对方的数据库实例,通过修改local_listener参数及启动监听服务来解决节点间监听不全的问题。

状况:在节点一可以监听到ASM实例和数据库实例(racdb),但是节点二就只能监听到ASM实例,监听不到节点二的实例


监听日志:


这里和 local_listener参数有关,就是设置的监听IP不对,监听IP都是  public  的  vip   

我的节点2配置监听节点1的IP了(上面的监听日志是节点1 的),设置节点2监听自己的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和oracle用户

grid是单独的,但是oracle更改如果不加scop的话,所有节点都会更改,所有oracle的需要指定节点,建议grid和oracle都要指定)





srvctlstop listener
srvctl stop scan_listener



srvctlstart listener
srvctl start scan_listener

======================================OK







### ### Oracle TNS-12555 和 TNS-00525 错误解决方案 Oracle 数据库连接错误 **TNS-12555** 和 **TNS-00525** 通常表示 **权限不足** 或 **操作系统权限配置错误**,尤其是在 Linux 或 Unix 环境中。该错误堆栈通常为: ``` TNS-12555: TNS:permission denied TNS-12560: TNS:protocol adapter error TNS-00525: Insufficient privilege for operation Linux Error: 1: Operation not permitted ``` 此错误表明 Oracle 监听器无法在指定的地址上启动,主要原因是监听器进程没有足够的权限绑定到相关端口或使用特定的 IPC 资源。例如,在尝试使用 `IPC` 协议监听 `(KEY=EXTPROC1521)` 时,如果 Oracle 用户没有对 `/var/tmp/.oracle` 目录的访问权限,则会导致此类错误[^3]。 #### 解决方案 1. **检查 IPC 资源权限** 如果监听器使用了 `IPC` 协议(如 `(PROTOCOL=IPC)`),则需要确保 Oracle 用户对 `/var/tmp/.oracle` 目录具有读写权限。若该目录不存在,可手动创建并设置权限: ```bash mkdir -p /var/tmp/.oracle chown oracle:oinstall /var/tmp/.oracle chmod 775 /var/tmp/.oracle ``` 该目录用于 Oracle 的本地 IPC 通信,若权限不正确,会导致监听器启动失败[^3]。 2. **检查监听器配置文件 `listener.ora`** 确保 `listener.ora` 中配置的地址和端口未被其他服务占用,且协议配置正确。例如: ```bash LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) ``` 若使用了 `IPC` 协议,确保该配置符合系统环境要求,并与 Oracle 的运行时权限匹配。 3. **以 root 权限启动监听器(临时测试)** 若怀疑是权限问题,可尝试使用 `root` 用户启动监听器以验证是否为权限限制: ```bash sudo /opt/oracle/11g/bin/lsnrctl start ``` 如果监听器成功启动,则表明 Oracle 用户权限不足,需调整系统权限配置。 4. **检查 SELinux 或 AppArmor 限制** 在某些 Linux 发行版中,SELinux 或 AppArmor 可能限制了 Oracle 进程的网络访问权限。可临时禁用 SELinux 进行测试: ```bash setenforce 0 ``` 若禁用后监听器可正常启动,则需调整 SELinux 策略或配置 Oracle 用户的上下文权限。 5. **确认 Oracle 用户具备绑定特权端口权限** 若监听器配置使用了特权端口(如 1521),但 Oracle 用户未被授权绑定这些端口,也可能导致此错误。可以通过设置 `CAP_NET_BIND_SERVICE` 权限来允许非 root 用户绑定特权端口: ```bash setcap CAP_NET_BIND_SERVICE=+eip /opt/oracle/11g/bin/tnslsnr ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值