IPC是Inter Process Communication即进程间通讯
是指多个进程之间相互通信,交换信息的方法
同一主机的至少两个进程间进行通讯可以使用IPC,不能跨物理机器,IPC包括共享内存、队列、信号量等几种方式
在使用时要给IPC定义KEY,来唯一标示这个IPC,key就是IPC结构的外部名
如果两个进程在不同的物理机上或在不同的操作平台,则不能用IPC,这时可以用TCP/IP通讯
中使用IPC可以使程序在本地直接连接Oracle的Listener
如果多个程序的定义使用了IPC并且KEY值相同
这样会造成多个在启动时发生冲突
导致后启动的无法启动成功
处理方法有两种
1、把有相同IPC key值的的KEY值修改成不同的值
2、直接把定义中的IPC协议的使用删除或注释掉
就是直接把(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))这一行注释掉
或者把这一行中的KEY的值修改为不同的值
3)lsnrctl命令要注意的地方
在使用lsnrctl命令时
可以进入LSNRCTL>状态
[oracle@redhat4 ~]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 28-JAN-2018 07:32:50
Welcome to LSNRCTL, type "help" for information.
LSNRCTL>
在文件内容改变后
要先退出LSNRCTL>状态
LSNRCTL> exit
[oracle@redhat4 ~]$
然后重新进入
否则在执行命令时会出现一些不该有的错误
因为在进入LSNRCTL>后
使用的都是进入LSNRCTL>时的状态和信息
这时即使listener.ora文件改变了
当前LSNRCTL>中使用的信息并不会随之改变
仍然使用的是进入时的状态信息
所以要先退出然后重新进入才能得到最新的listener.ora文件状态信息
4)多配置中的一个特殊情况
在listener.ora文件中添加了多个程序后情况会有些复杂
这里在程序配置时就有一个特殊的情况
就是一般总会自动建立一个名为LISTENER端口为1521的默认程序
不管listener.ora中有没有定义这么个
当有使用1521端口的其它的定义时它也会被自动建立
但当定义中LISTENER名的指定了其它端口
这时名为LISTENER的就不是默认了
这时仍会建立一个默认在1521端口上只是没有名字
就是这个特殊情况:默认建立的有端口号但是没有名字
可以通过实验证明
a)当local_listener参数为默认即没有指定值时
在没有其它使用1521的时候
LISTENER名的使用了非1521端口
这时LISTENER名的没有动态注册信息
在这时对1521端口执行
sqlplus hr/hr@192.168.3.47:1521/jiagulun
可以连接上
[oracle@redhat4 ~]$ sqlplus hr/hr@192.168.3.47:1521/jiagulun
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jan 28 08:45:36 2018
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-71958-25.html