新闻详情

新闻详情

首页 / 资讯中心 / 详情

Oracle数据库基础之4_网络配置

发布时间:2026/10/1 21:40:33来源:尧图网络
Oracle数据库基础之4_网络配置
我们连接数据库要知道数据库服务器的ip、协议、端口、数据库名这些信息oracle数据库有很多后台进程这些后台进程在数据库服务器本地都有一个随机的端口没有所谓的主进程的概念所以该怎么连接数据库呢为了解决这个问题oracle提出了一个监听器的概念监听器也是数据库服务器上的一个后台进程它独立于oracle数据库它本身有ip、协议、端口这些信息如果要连接数据库就去连接监听器。我们知道连接数据库除了要知道数据库服务器的ip、协议、端口外还要知道数据库名。那连上监听器了又该怎么去找数据库名呢进而引申出注册的概念数据库启动的时候会动态的注册service_name和instance_name两个参数信息到监听器里面监听器自己启动的时候会静态注册监听器配置文件中全局数据库名和实例名两个信息到监听器里面。这样监听器里面就有了数据库的信息所以客户端通过监听就可以连接到数据库。我们常说的oracle默认端口1521这个端口不是oracle某个后台进程的端口而是监听器的端口。客户端tnsname.ora—数据库服务器的监听程序listener.ora—数据库服务器的数据库服务监听器监听器就是一个后台服务它提供数据库对外连接的服务器信息、协议、端口。查看监听器的命令:lsnrctl status已经连接成功的请求不再受监听器的影响新的请求要和数据库连接受监听器的影响。也就是如果监听器进程关闭了新的请求是连接不上来的已经连接的请求不受影响工厂保安的那个例子保安下班了已经进去的客户不受影响新来的客户进不去。如何配置监听器配置监听器可以使用netca或netmgr也可以直接手工修改监听的配置文件$ORACLE_HOME/network/admin/listener.ora。netca或netmgr的本质就是去修改监听器的配置文件。netca不能配置SID_LIST_listenername这部分netmgr可以配置SID_LIST_listenername这部分当监听配置文件listener.ora没有的场景下lsnrctl start也会默认启动listener的默认监听器多个监听器的情况多个监听器是也只是一个配置文件listener.ora而非多个配置文件除listener以外的监听器外还可以存在其他名称的监听器前提是两个监听中的port不能一样启动关闭则操作方式如下。lsnrctl start listenername lsnrctl status listenername lsnrctl stop listenername lsnrctlstartlsnrctl start listener lsnrctlstatuslsnrctl status listener lsnrctlstoplsnrctl stop listener客户端网络服务名也叫tns别名配置tns别名可以使用netca或netmgr也可以直接手工修改监听的配置文件$ORACLE_HOME/network/admin/tnsnames.ora。netca或netmgr的本质就是去修改监听器的配置文件。netca无法配置tns的LOAD_BALANCE和FAILOVERnetmgr可以配置tns的LOAD_BALANCE和FAILOVEREasy Connect Naming Method(不使用tns别名)简单连接命名方法消除了在TCP/IP环境的tnsname.ora文件中查找服务名称的需要。实际上如果使用此方法则不需要任何命名或目录系统。CONNECT username[//]host[:port][/[service_name][:server]][/instance_name]]sqlplus system/oracle192.168.10.101:1521/ocpLocal Naming Method使用tns别名The local naming method adds net service names to the tnsnames.ora file.本地命名方法将网络服务名称添加到tnsname.ora文件中上面192.168.10.101:1521/orcl按如下配置到tnsname.ora文件中后就可以直接sqlplus system/oracleOCPTESTOCPTEST(DESCRIPTION(ADDRESS(PROTOCOLTCP)(HOST192.168.10.101)(PORT1521))(CONNECT_DATA(SERVERDEDICATED)(SERVICE_NAMEocp)))验证tns别名ocp是否正常使用tnsping命令[oracleocp ~]$ tnsping ocp TNS Ping UtilityforLinux: Version11.2.0.3.0 - Production on20-APR-201912:50:18 Copyright(c)1997,2011, Oracle. All rights reserved. Used parameter files: /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve thealiasAttempting to contact(DESCRIPTION(ADDRESS(PROTOCOLTCP)(HOSTocp)(PORT1521))(CONNECT_DATA(SERVERDEDICATED)(SERVICE_NAMEocp)))OK(10msec)TNSNAMES.ORA中SERVICE_NAME、SID的区别SID只指定一个实例而SERVICE_NAME在RAC环境中指定多个实例。如果要配置RAC的某一台机器的话就在tns里面配置SID如果要配置负载均衡的话就在tns配置service_name当然在service_name下面在指定instance_name也可以指定单独的实例注册注册是把数据库信息作为一个服务注册注册内容是servcice_name和instance_name到监听中的host和port中listener.ora中如果host配置的信息为ip但是实际服务器上不存在这个ip则无法注册如果host中配置的是服务器名称而服务器名称不存在或服务器名在/etc/hosts中对应的ip不存在或与实际IP不一致则无法注册DB默认监听器的host是hostname。客户端不需要知道数据库名和实例名只需要知道该数据库监听对外提供的服务名或SID就可以申请连接到数据库。这个服务名或SID可能与实例名一样也有可能不一样。相当于是这样在数据库服务器和客户端之间有一监听程序Listener在监听程序中会记录相应数据库对应的服务名一个数据库可能对应有多个服务名当客户端需要连接数据库时只需要提供服务名就可以建立客户端和数据库之间的连接。Service registration enables the listener to determine whether a database service and its service handlers are available. A service handler is a dedicated server process or dispatcher that acts as a connection point to a database. During registration, the PMON process provides the listener with the instance name, database service names, and the type and addresses of service handlers. This information enables the listener to start a service handler when a client request arrives.服务注册使监听器能够确定数据库服务和它的服务处理程序是否可用。服务处理程序是一个专用的服务器进程或分派器它充当数据库的连接点。在注册过程中PMON进程为监听器提供实例名、数据库服务名称和服务处理程序的类型和地址。此信息使监听器在客户机请求到达时启动服务处理程序。不管是动态注册还是静态注册前提就是lsnrctl start listenername要先运行区别就是静态注册是监听启动时读取到的监听配置文件中除默认监听以外的信息动态注册就是数据库实例启动时或每隔一分钟PMON注册到默认监听中的信息动态注册数据库实例启动的时候PMON进程根据spfile.ora中的值将instance_name,service_names两个参数值注册到默认监听中不管有没有listener.ora文件默认监听都是存在的,监听器名称是LISTENER、端口是1521、协议是TCP即lsnrctl status时显示的Service和Instance。不管什么时候PMON进程都会每隔一分钟根据spfile.ora中的值将instance_name,service_names两个参数值注册到默认监听中.如果需要向使用其他协议和端口的监听器注册则要配置local_listener参数动态注册发生的时间数据库实例启动的时候、每隔一分钟(时间间隔是1分钟的前提是服务端已经启动)动态注册的进程PMON手工注册命令SQL alter system register;Oracle 19C遇到的问题默认监听是正常的但是就是无法正常实现动态注册查看local_listener参数才发现有值说明动态注册到了local_listener参数指定的监听器执行alter system set local_listener后实现了正常的动态注册。很奇怪为什么Oracle 19C的local_listener参数会有值。一个动态注册的案例lsnrctl status发现没有动态注册发现默认监听配置的host服务器名称查看ifconfig发现ip是192.168.189.128而/etc/hosts中服务器名称对应的ip是192.168.182.128至此找到原因把/etc/hosts中182改为189即可说明动态注册是把数据库信息当作服务注册到监听中的host和port中如果host中配置的信息为ip但是实际服务器上不存在这个ip则无法动态注册如果host中配置的是服务器名称而服务器名称不存在或服务器名称在/etc/hosts中对应的ip实际上不存在则无法动态注册静态注册监听程序启动时读取listener.ora文件内容中SID_LIST_listenername的实例名(SID_NAME)和全局数据库名GLOBAL_DBNAME注册到监听器中。如果listener.ora没有GLOBAL_DBNAME则默认GLOBAL_DBNAMESID_NAME注册到监听器中监听器的名字存在listener.ora文件中。静态注册时listener.ora中的GLOBAL_DBNAME向外提供服务名listener.ora中的SID_NAME提供注册的实例名。采取静态注册方法时listener.ora中的内容如下LISTENER(DESCRIPTION_LIST(DESCRIPTION(ADDRESS(PROTOCOLIPC)(KEYEXTPROC1521))(ADDRESS(PROTOCOLTCP)(HOSTlocalhost)(PORT1521))))LISTENER2(DESCRIPTION_LIST(DESCRIPTION(ADDRESS(PROTOCOLIPC)(KEYEXTPROC1))(ADDRESS(PROTOCOLTCP)(HOSTlocalhost)(PORT1521))))SID_LIST_LISTENER2(SID_LIST(SID_DESC(GLOBAL_DBNAMEorcl)(ORACLE_HOME/opt/oracle/product/11.2.0/db_1)(SID_NAMEorcl))(SID_DESC(GLOBAL_DBNAMEorcl1)(ORACLE_HOME/opt/oracle/product/11.2.0/db_1)(SID_NAMEorcl)))ADR_BASE_LISTENER/opt/oracle/product/11.2.0/db_1该文件表明数据库实例名为orcl默认监听为listener静态监听listener2则向外提供了两个服务orcl和orcl1$ORACLE_HOME/network/admin/listener.ora内容如下表示一个监听器名称是LISTENER、一个监听器名称是LISTENER1。LISTENER(DESCRIPTION(ADDRESS(PROTOCOLTCP)(HOSTocp)(PORT1521)))LISTENER1(DESCRIPTION(ADDRESS(PROTOCOLTCP)(HOSTocp)(PORT1522)))–问题为何如上配置通过1522端口无法连接到数据库–答案主要是因为没有配置静态注册所需的SID_LIST_listenername动态注册默认不会注册到1522端口操作系统验证需要先登录到数据库服务器本机现实中也就是DBA维护数据库时会用。外部验证又称操作系统验证。创建好用户后以oracle账号身份登录到操作系统然后在直接输入sqlplus / 进行登录并连接到数据库。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

OpenClaw本地部署全指南:从WSL2到Docker Compose 2026/10/1 22:40:34

OpenClaw本地部署全指南:从WSL2到Docker Compose

说起来有点意思,我第一次在本地把 OpenClaw 跑起来,是在一台配置并不算高的办公笔记本上。那时候周围的朋友还在研究怎么给各种云端 AI 助手充会员,我这边已经在命令行里敲下 docker compose up -d ,几分钟后一个完全属于自己的…

阅读更多 →
VCS +define+ 用法详解:语法、Verdi 联调与编译避坑 2026/10/1 22:40:34

VCS +define+ 用法详解:语法、Verdi 联调与编译避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
RustDesk编译内嵌自建服务器与key:打造免配置远程桌面客户端 2026/10/1 22:40:34

RustDesk编译内嵌自建服务器与key:打造免配置远程桌面客户端

自己编译RustDesk,把自建ID服务器和key写进客户端,是我折腾过最值回票价的一件事。远程桌面这玩意儿,日常用TeamViewer、向日葵倒是方便,可一旦动了“这台机器归我管,数据不想经过第三方”的念头,自建就成了…

阅读更多 →
ANSYS Fluent实战指南:网格策略、模型选型与高频问题排查 2026/10/1 22:40:34

ANSYS Fluent实战指南:网格策略、模型选型与高频问题排查

1. 先说清楚:fluent到底是个什么工具,你又该怎么看待它大概没有人会在搜索引擎里只敲一个"fluent"就去查资料,除非是刚开始接触流体仿真,或者刚被导师/领导布置了一个"用fluent算一下"的任务。真正上手之后你…

阅读更多 →
OpenClaw Linux部署教程:自托管AI助理网关全流程 2026/10/1 22:40:34

OpenClaw Linux部署教程:自托管AI助理网关全流程

OpenClaw 这名字,最近在技术社区里冒头很快。先花一句话交代背景:它是一款开源的、可以完整自托管的 AI 助理网关,底层用 Node.js 开发,核心定位是让 Slack、Discord、Microsoft Teams、Telegram 这类聊天平台,和你的 …

阅读更多 →
EVE-NG自定义镜像制作:从qcow2到QEMU模板与串口控制台配置 2026/10/1 22:40:27

EVE-NG自定义镜像制作:从qcow2到QEMU模板与串口控制台配置

手里有一台自己配好的 Linux 小机器,或者从别的项目里导出来的一份 vmdk,想直接拖进 EVE-NG 当节点用,结果打开"添加节点"的列表翻了三遍,发现根本没有这一类。这事我遇到过不止一次,最后都是老老实实自己动…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉