图文深入理解Oracle Network配置管理(二)

news2024/9/29 0:23:58
  1. 本篇图文深入介绍Oracle Network配置管理。

Oracle网络配置的目的

为了方便对Oracle 数据库进行管理,一般以下情况应该对Oracle进行网络配置。
• 在客户端对服务器端数据库进行管理(网络客户端管理)
• 在一台服务器上管理多个数据库(本地管理)
在客户端上管理,只需要安装客户端管理软件即可。客户端为了连接特定的服务器和数据库,需要对网络进行配置,通过网络可以连接到不同的Oracle 数据库服务器。如图所示,首先需要在数据库服务器端配置侦听程序,然后需要在客户端配置网络服务名。
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/782d6513585c4c8c959f2f0b62eb7857.png

配置服务端侦听器(LISTENER)

网络配置可以使用网络配置管理器 Net Manager 来完成。Net Manager 用于网络连接服务名、侦听器等的创建和设置。在同一台服务器上可以配置多个侦听器,但侦听的端口号不能相同。不同的侦听器可以侦听对同一个数据库的请求,同一个侦听器也可以侦听对不同数据库的请求。这样当一个侦听器忙时,另外的侦听器仍然可以为客户端请求提供服务,减少用户连接的等待时间。侦听器的配置信息存入对应的配置文件listener.ora(注:使用Net Manager工具配置侦听器相当于修改该文件),该文件的默认路径为 O R A C L E H O M E / n e t w o r k / a d m i n ,其中 ORACLE_HOME/network/admin,其 中 ORACLEHOME/network/admin,其中ORACLE_HOME代表服务器软件的安装目录。另外通过设置环境变量TNS_ADMIN可以改变侦听器配置文件的位置(.bash_profile文件中设置)。侦听器的设置主要包括侦听位置和对应的数据库服务,侦听位置包括主机、端口和使用的通讯协议,Oracle 默认的标准端口是1521,通常采用的协议是TCP/IP。
1.启动NetManager
[oracle@oracle ~]$ netmgr
2.弹出页面,可以增加和删除侦听器。
在这里插入图片描述
3. 点击“+”增加一个监听器,并且输入监听名称。
在这里插入图片描述
• 协议:用于指定监听程序要使用的网络协议,监听程序可以使用多种网络协议,但最常用的是“TCP/IP”协议。
• 主机:用于指定Oracle 服务器所在机器的主机名或IP 地址。因为侦听器和Oracle服务器位于同一台机器,主机名在这里也可以输入LOCALHOST。
• 端口号:用于指定监听程序所要使用的TCP/IP 端口号,默认监听端口号为1521。如果要指定其他端口号,则必须是操作系统未占用的端口。
例如:为了区别于LISTENER与LISTENER1,将LISTENER1 端口号改为1522。
注意:如果网络客户端想要通过LISTENER1 连接数据库,其用于连接数据库的网络服务名配置,也要使用同样的端口号。
在这里插入图片描述
• 全局数据库名:一般设置为DB_NAME.DB_DOMAIN(DB_NAME 和DB_DOMAIN为初始化参数),这里设为orcl。
• Oracle 主目录:应该设置为Oracle 软件的安装路径。
• SID:设置为数据库的 SID,这里设置为 orcl。

配置客户端网络服务名

通过客户端访问服务器端的数据库,就需要进行网络配置。客户端通过提供必要的参数,包括要连接的服务器名称、连接的端口号、使用的通讯协议等连接到服务器端。对于普通用户,这些参数不便于理解和记忆。通过网络配置,可以把网络服务名同配置联系起来,一旦配置完成,以后就可以使用该网络服务名进行数据库的连接,使连接过程得
到简化。当安装Oracle 数据库产品时,系统会自动在服务器端为数据库配置相应的网络服务名,默认网络服务名与实例标识(SID)相同。为了便于访问同一台服务器上的多个Oracle 数据库,应该为新数据库配置相应的网络服务名。网络服务名对应的配置文件名称为 tnsnames.ora,该文件的默认路径为$ORACLE_HOME/network/admin。同样,通过设置环境变量 TNS_ADMIN 可以改变该配置文件的位置。配置网络服务名也可以使用工具 Net Manager 来完成。
1. 填写客户端网络服务名
在这里插入图片描述
2. 选择协议
在这里插入图片描述
3. 填写主机名
在这里插入图片描述
4. 填写数据库的服务名(Service_names)
在这里插入图片描述
5. 点击“Finish”完成配置。

注册的意义

  1. 什么是注册:
    注册就是将数据库作为一个服务注册到监听程序。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库。这个服务名可能与实例名一样,也有可能不一样。在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务(无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务。)相当于是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序中,会记录相应数据库对应的服务名(一个数据库可能对应有多个服务名),当客户端需要连接数据库时,只需要提供服务名,就可以建立客户端和服务器之间的连接。
    2.关于注册的两个参数
  1. instance_name:
    注册到监听器中的实例值从参数文件中的 instance_name 参数取得。如果该参数没有设定值,那么它将取参数文件中的 db_name 的值。如果在 RAC 中配置,您必须将集群中每个实例的 instance_name 参数设置为一个唯一的值。
  2. service_names:
    注册到监听器中的服务值从参数文件中的参数 service_names 取得。如果该参数没有设定值,数据库将拼接参数文件中的 db_name 和 db_domain 的值来注册自己。
//修改参数 service_names
SQL> alter system set service_names='orcl,aaa';
System altered.
SQL> show parameter service_names;
NAME                    TYPE                 VALUE
---------------------------------- ------- ----------------
service_names        string                orcl,aaa
//查看监听状态
[oracle@oracle admin]$ lsnrctl stat
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.example.com)
(PORT=1521)))
STATUS of the LISTENER
------------------------
Listener Parameter File
/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File
/u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.example.com)(PORT
=1521)))
Services Summary...
Service "aaa" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl_XPT" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
//查看 listener.ora 内容
[oracle@oracle admin]$ more listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/n
etwork/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT =
1521))
)
//没有写 list,动态注册
//查看 tnsnames.ora 内容
[oracle@oracle admin]$ more tnsnames.ora
ORCL_S =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT =
1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
AAA_S =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT =
1521))
)
(CONNECT_DATA =
(SERVICE_NAME = aaa)
)
)
//验证能否通过 orcl_s 成功登录
[oracle@oracle admin]$ sqlplus sys/oracle@orcl_s as sysdba
//验证能否通过 aaa_s 成功登录
[oracle@oracle admin]$ sqlplus sys/oracle@aaa_s as sysdba
/验证 oracle 注册 service_names 的值
SQL> alter system set service_names='bbb';
System altered.
//aaa_s 无法正常连接
[oracle@oracle admin]$ sqlplus sys/oracle@aaa_s as sysdba
//orcl_s 仍然可以正常连接(oracle 会自动注册)
//测试 service_names 参数的值
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- -----------
db_name string orcl
//当前 db_domain 的值为空
SQL> show parameter domain
NAME TYPE VALUE
------------------------------------ ----------- ------------
db_domain string
//当前 servcie_names 的值为非默认值
SQL> show parameter service_names
NAME TYPE VALUE
------------------------------------ ----------- -----------
db_name string bbb
//定义 db_domain 的值
SQL> alter system set db_domain='oracle.com' scope=spfile;
System altered.
//重置 service_names 的值
SQL> alter system reset service_names scope=spfile sid='*';
System altered.
//重启数据库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 92276304 bytes
Database Buffers 188743680 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> show parameter domain
NAME TYPE VALUE
------------------------------------ ----------- ---------------
db_domain string oracle.com
SQL> show parameter service
//验证 service_names 的值为 db_name+db_domain
NAME TYPE VALUE
------------------------------------ ----------- --------------------
service_names string orcl.oracle.com
  1. 动态注册
    动态注册是在 instance 启动的时候 PMON 进程根据参数文件中的 instance_name,service_names 两个参数将实例和服务动态注册到 listener 中。首先要在参数文件中指定 instance_name,service_names 两个参数的值。在 sqlplus 下通过 show parameter service_names 和 show parameter instance_name 可以查看这两个参数的值。可选择的是,您可以在 service_names 参数中指定多个服务值,值之间用逗号格开,这对于共享服务器配置是很有用的。动态注册默认只注册到默认的监听器上(名称是 LISTENER、端口是1521、协议是TCP),因为 pmon 只会动态注册 port 等于1521的监听,否则 pmon 不能动态注册 listener,如果需要向非默认监听注册,则需要配置 local_listener 参数!
  1. Pmon 进程注册(默认端口):
//为方便实验,将 db_domain 参数改回来
SQL> alter system set db_domain='' scope=spfile;
System altered.
//重启数据库使参数生效
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 92276304 bytes
Database Buffers 188743680 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
//验证参数
SQL> show parameter service_names
NAME TYPE VALUE
------------------------------------ ----------- --------------
service_names string orcl
//查看 listener.ora
[oracle@oracle admin]$ more listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0/db_1/n
etwork/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT =
1521))
)
//查看监听器状态
[oracle@oracle admin]$ lsnrctl stat
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.example.com)(PORT=15
21)))
//查看 tnsnames.ora
[oracle@oracle admin]$ more tnsnames.ora
ORCL_S =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT
= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
//尝试连接
[oracle@oracle admin]$ sqlplus sys/oracle@orcl_s as sysdba
  1. 修改参数注册(非默认端口):
    演示过程省去。
  1. 静态注册
    静态注册就是实例启动时读取 listener.ora 文件中实例和服务的配置,将实例和服务注
    册到监听程序。
//示例:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = orcl)
)
(SID_DESC =
(GLOBAL_DBNAME = emrep)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = emrep)
)
)

List 列表中的即是需要静态注册的服务。

如何查询某服务是静态还是动态注册

可以使用命令 lsnrctl status 来查看某服务是静态注册还是动态注册。
• 实例状态为 UNKNOWN 值时表明此服务是静态注册的。这时监听器用来表明它不知道关于该实例的任何信息,只有当客户发出连接请求时,才检查该实例是否存在。
• 实例状态为 READY 或 BLOCKED(数据库 nomount 时)表明是此服务是动态注册的。

完结。
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,后续不定期分享DB基本知识和排障案例及经验、性能调优等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2175233.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

性能测试学习1:性能测试的理论与目的,与功能测试的区别

一.什么是性能? 1)性能:就是软件质量属性中的“效率”特性 2)效率特性: ①时间特性:表示系统处理用户请求的响应时间【通俗来说,就是使用系统是否流畅】 ②资源特性:表示系统运行过程中&…

青动CRM-仓储云V1.1.2

多平台(微信公众号(高级授权)、微信小程序(高级授权)、H5网页(高级授权)、Android-App(高级授权)、iOS-App(高级授权))仓库管理系统,拥有强大的表单设计、多角色员工权限、出入库管理、仓库管理、送货管理、自定义审批流、绩效管理、客户管理、合同管理等功能。提供…

抖音支付回调验签 go 版本

序言 最近在做抖音小程序支付,由于抖音开放平台的文档写的较为简陋,让人踩了不少坑,在这里整理一下做小程序支付的整个过程,以通用交易系统为例子。 准备条件 1)申请小程序,开通支付功能 这里需要明确你小…

Linux--基本指令

目录 1.ls指令 ​2.pwd指令 3.cd指令 4.tree指令 5.touch/mkdir/rmdir(rm)指令 6.cp/mv/cat/tac指令 7.head/tail/管道 8.date 9.find/which/grep 10.其它小知识 1.ls指令 补充知识: 2.pwd指令 补充知识: 3.cd指令 补充知识: 4.tree指令 …

Java语法-类和对象之抽象类和接口

1.抽象类 1.1 抽象类的概念 一个类中没有足够的信息来描述一个具体的对象,这样的类就是抽象类 比如: 从图中我们可以看出,只有继承了的类,我们产生的实例,调用的draw方法都是他们本身重写的draw方法,不会调用父类Shape的draw()方法,因此我们可以不管父类里面的draw()方法里面的…

MySQL 之多表设计详解

在实际应用场景中,我们经常需要处理包含多种数据实体及其之间复杂关系的业务逻辑,例如电商平台的用户、商品、订单,社交网络的用户、帖子、评论等等。如果将所有数据都堆砌在一张表中,不仅会造成数据冗余、难以维护,还…

MySQL 8.0.34 从C盘迁移到D盘

因为开始C盘够用,没注意mysql安装位置,如今C盘爆满,只能把mysql转移到D盘,以腾出更多的空间让我折腾。 一、关闭mysql服务 二、找到C盘MySQL安装文件和Data文件 1.找到C盘mysql bin文件目录安装文件路径: C:\Progra…

行为设计模式 -模板方法模式- JAVA

模板方法模式 一 .简介二. 案例2.1 抽象类(Abstract Class)2.2 具体子类(Concrete Class)2.3 测试 三. 结论3.1 优缺点3.2 适用场景3.3 要点 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接…

linux从入门到精通--从基础学起,逐步提升,探索linux奥秘(六)

linux从入门到精通–从基础学起,逐步提升,探索linux奥秘(六) 一、linux高级指令(1) 1、hostname指令 1)作用:操作服务器的主机名(读取、设置) 2&#xff0…

huggingface的transformers与datatsets的安装与使用

目录 1.安装 2.分词 2.1tokenizer.encode() 2.2tokenizer.encode_plus () 2.3tokenizer.batch_encode_plus() 3.添加新词或特殊字符 3.1tokenizer.add_tokens() 3.2 token…

Python自动收发邮件的详细步骤与使用方法?

Python自动收发邮件教程?Python怎么实现收发邮件? Python作为一种强大的编程语言,提供了丰富的库和工具,使得自动收发邮件变得简单而高效。AokSend将详细介绍如何使用Python自动收发邮件,帮助读者掌握这一实用技能。 …

【ASE】第四课_护盾效果(有碰撞效果)

今天我们一起来学习ASE插件,希望各位点个关注,一起跟随我的步伐 今天我们来学习护盾的效果。 思路: 1.添加纹理贴图和法线贴图(这里省略) 2.添加护盾边缘顶点扰动效果,也可以理解成变形效果 3.添加碰撞…

关于frp Web界面-----frp Server Dashboard 和 frp Client Admin UI

Web 界面 官方文档:https://gofrp.org/zh-cn/docs/features/common/ui/ 目前 frpc 和 frps 分别内置了相应的 Web 界面方便用户使用。 客户端 Admin UI 服务端 Dashboard 服务端 Dashboard 服务端 Dashboard 使用户可以通过浏览器查看 frp 的状态以及代理统计信…

59 双向循环神经网络_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录双向RNN推理 总结以下为理论部分双向循环神经网络隐马尔可夫模型中的动态规划双向模型定义模型的计算代价及其应用 (**双向循环神经网络的错误应用**)小结练习 双向RNN 这里理解这个图的时候,不要把正向和逆向认为有上下的关系&a…

计算机毕业设计 基于Python的音乐平台的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

IDE 使用技巧与插件推荐(含例说明)

在使用集成开发环境(IDE)进行编程时,掌握一些技巧和使用高效的插件可以显著提高开发效率。以下是一些通用的IDE使用技巧和插件推荐,适用于多种流行的IDE,如IntelliJ IDEA、Visual Studio Code、PyCharm等。每个技巧和插…

泳池异常检测系统源码分享

泳池异常检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Pencils Protocol 成市场新宠,生态通证$DAPP价值几何

Pencils Protocol 是 Scroll 生态综合性收益平台,其仅在 Scroll 生态单链 TVL 就已经突破了 3.5 亿美元,同时在上线短短几个月的时间里就积累了超 50 万活跃社区用户。现阶段 Pencils Protocol 已经完成了 DAPP 通证的 TGE ,分别在 Tokensoft…

[SAP ABAP] 锁对象

在SAP中使用锁对象,用于避免在数据库中插入或更改数据时出现不一致的情况 1.创建锁对象 数据准备 学校表(ZDBT_SCH_437) 使用事务码SE11创建锁对象 点击"锁对象"单选按钮,输入以E开头的锁定对象的名称,然后点击创建按钮 锁对象名…

关于宝塔PHP getenv无法获取环境变量问题解决办法

今天有用ThinkPHP8接入阿里云OSS时,需要用的用到getenv()来读取环境变量,因为新版OSS SDK是用环境变更来设置AK的。 现象 正常执行PHP文件,可以取到环境变量;但是通过nginxphp-fpm调用脚本取到不到环境变量 原因 php-fpm为了防止…