Oracle 监听的一系列知识
一.Oracle监听的问题对于初学oracle的人一直是一个模棱两可的问题,在此学习总结下相关知识。
1.本地监听配置
1.1正常的1521端口
oracle有自己默认的本地监听,默认端口是1521,所以一般而言配置监听后通过 lsnrctl start 命令就能正常启动监听。启动监听后,可以通过Oracle客户端正常连接到数据库。这是最正常的一种情况。这里放一个我本地数据库的监听.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = host)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = TESTZEX)
(SID_NAME = TESTZEX1)
)
)
1.2其余的端口号
除了正常的1521端口外,如果想配置其他的监听端口,那么就需要注意了,因为默认的1521端口是pmon自动注册的,而新建的端口比如1522,在正常配置后如下:
LISTENER1522 =
(DESCRIPTION_LIST =
(DESCRIPTION =h
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.101.143)(PORT = 1522))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
)
)
SID_LIST_LISTENER1522 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = TESTZEX)
(SID_NAME = TESTZEX1)
此时通过lsnrctl start LISTENER1522启动监听后,lsnrctl status LISTENER1522命令查看发现
等待pmon进程刷新监听后发现,pdb服务名没有被注册上去。原因是动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),因为pmon只会动态注册port等于1521的监听,否则pmon不能动态注册listener,如果需要向非默认监听注册,则需要配置local_listener参数。
在CDB下执行
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=1522))))' scope=both;
在通过lsnrctl status LISTENER1522 命令查看。
监听正常注册
客户端正常登录。
2.TNS
TNS也叫连接串,在本地和远程数据库都可配置(主要为客户端使用),TNS主要的作用其实就是提供一个服务名端口的简写。从上面可以看到,通过TNS连接数据库更为方便,TNS的位置在客户端 一般是配置如下的环境变量 下的export TNS_ADMIN=$ORACLE_HOME/network/admin下tnsnames.ora中。一般写法为:
MCRM1522 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 连接远程数据库ip)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MCRM)
)
)
通过tnsnames能连接到数据库。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版