oracle 静态监听 端口,侦听动态注册静态注册local_listener参数端口PORT

之前都是网上看过整理的,今天看到local_listener竟然一点印象都没有,太恐怖,索性再好好整理一下,避免再次忘记。

一.什么是注册

注册就是将数据库作为一个服务注册到监听程序。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库。这个服务名可能与实例名一样,也有可能不一样。

在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务(无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务)

相当于是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序中,会记录相应数据库对应的服务名(一个数据库可能对应有多个服务名),当客户端需要连接数据库时,只需要提供服务名,就可以建立客户端和服务器之间的连接。

二、动态注册动态注册是在instance启动的时候PMON进程根据init.ora中的instance_name,service_names

(Service_name数据库创建之后默认情况下和数据库名一样,和sid名不一定一样)。

两个参数将实例和服务动态注册到listener中。首先要在init.ora中指定instance_name,service_names两个参数的值。

注册到监听器中的实例值从init.ora文件中的instance_name参数取得。如果该参数没有设定值,那么它将取init.ora文件中的db_name的值。如果在RAC中配置,您必须将集群中每个实例的instance_name参数设置为一个唯一的值。

注册到监听器中的服务值从init.ora文件中的参数service_names取得。如果该参数没有设定值,数据库将拼接init.ora文件中的db_name和db_domain的值来注册自己。如果选择提供service_names值,您可以使用完全限定的名称(比如orcl.oracle.com)或缩写的名称(比如orcl)。如果选择缩写的名称并设置了db_domain参数,注册到监听器中的服务将是service_name值和db_domain值的拼接。例如下面的设置将导致服务orcl.oracle.com被注册到监听器中:db_domain=oracle.comservice_names=orcl

;采取动态注册方法时,listener.ora中的内容如下:SID_LIST_LISTENER

=(SID_LIST

=(SID_DESC

=(SID_NAME

= PLSExtProc)(ORACLE_HOME

= D:/oracle/product/10.2.0/db_1)(PROGRAM

= extproc)))可选择的是,您可以在service_names参数中指定多个服务值,值之间用逗号格开,这对于共享服务器配置是很有用的。

------------------------------------------------------------------------------------------------------------------------------------

今天下午遇到的问题和以下文字有关,遇到的错误是这样的,在用模板建库的时候,在创建数据库时报如下错误:

a4c26d1e5885305701be709a3d33442f.png

出现这个错误的原因是这样的,模板的来源数据库的侦听是LISTENER_LMISNMG,并且用了非1521端口,为了用动态注册,源数据库启用了local_listener参数,但是我这边在用模板建库的时候,我是先创建了侦听listener,并且端口是1521,所以在用模板创建数据库的时候就遇到了这样的错误。

下面是更详细的原因:

------------------------------------------------------------------------------------------------------------------------------------动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),因为pmon只会动态注册port等于1521的监听,否则pmon不能动态注册listener,如果需要向非默认监听注册,则需要配置local_listener参数!

将监听的信息添加到tnsnames.ora

文件中。注意,是tnsnames.ora文件,因为pmon在动态注册监听时要从tnsnames.ora中读取相关信息。

LISTENER

=

(DESCRIPTION

=

(ADDRESS =

(PROTOCOL = TCP)(HOST =DaveDai)(PORT

= 1522))

)

然后以sys用戶运行:

SQL>alter

system set local_listener=listener(侦听名字);

SQL> alter

system register;

或者:

SQL> alter

system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL = TCP)(HOST

=DaveDai)(PORT

= 1522))';

SQL> alter

system register;

系统已更改。

$lsnrctl status

listener

如果没有显式设置service_names和instance_name的值,那么仅当数据库在监听器运行之后启动时,动态注册才会发生;在这种情况下,如果监听器后来发生了重启,动态注册信息将会丢失。显然,最好在所有的数据库启动之前先启动监听器,这样就会避免没有显式设置service_names和instance_name的值时,若重启监听器带来的动态注册信息丢失的情况。

为初始化参数service_names和instance_name设置显式的值是个很好的实践,尽管如果您没有设置它们,Oracle也会为动态注册而生成默认值(基于db_name和db_main)。这样做的原因是,如果监听器在数据库启动之后重新启动,其动态注册行为将会有一些微妙的区别.如果监听器在数据库运行之后重新启动,你们仅当您在init.ora文件中显式地设置了service_names和instance_name的值时,每个数据库的PMON进程才会在很短的时间之后自动注册数据库。

如果需要执行连接时故障转移或负载均衡,或者想要在RAC中配置在实例之间透明地分布连接,那么使用service_names参数将是必要的。为启用这些功能,您只需要将每个实例的数据库参数文件中的service_names设置为同一个值,并在客户端连接请求的service_name设置中引用该值。

如果没有显式设置service_names和instance_name的值,那么仅当数据库在监听器运行之后启动时,动态注册才会发生;在这种情况下,如果监听器后来发生了重启,动态注册信息将会丢失。显然,最后在启动任何数据库之前启动服务器上的监听器,并完全避免监听器的重启。

另外,您还可以在SQL*PLUS中使用命令:

SQL>ALTER

SYSTEM REGISTER;

在数据库打开时的任何时候,手工地在监听器中注册服务值。这个命令对于替换因监听器重启而丢失地服务值很有用,并且它所注册地值与在数据库启动时由动态注册所设置的值完全一样。

动态监听:

oracle监听器运行后,oracle实例在open时,会动态向监听程序注册其service_names和instance_name。

其中instance_name默认是:db_name

而service_names默认是:db_name.db_domain

三、静态注册静态注册就是实例启动时读取listener.ora文件的配置,将实例和服务注册到监听程序,也可以是实例启动后,listener中的配置会注册到侦听中。无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务。静态注册时,listener.ora中的GLOBAL_DBNAME向外提供服务名,listener.ora中的SID_NAME提供注册的实例名。采取静态注册方法时,listener.ora中的内容如下:SID_LIST_LISTENER

=(SID_LIST

=(SID_DESC

=(SID_NAME

= PLSExtProc)(ORACLE_HOME

= D:/oracle/product/10.2.0/db_1)(PROGRAM

= extproc))(SID_DESC

=(GLOBAL_DBNAME

=orcl)(ORACLE_HOME

= D:/oracle/product/10.2.0/db_1)(SID_NAME

=orcl))(SID_DESC

=(GLOBAL_DBNAME

=orcl1)(ORACLE_HOME

= D:/oracle/product/10.2.0/db_1)(SID_NAME

=orcl)))该文件表明数据库是单实例的,实例名为orcl,向外提供了两个服务:orcl和orcl1

静态监听:

oracle实例运行后,监听程序启动时,根据listener.ora的配置注册相应的服务。

其中global_dbname对应的是oracle对外的服务名,即初始化参数里的service_names

而sid_name对应的是oralce实例的名称,即初始化参数里的instance_name

既然有动态监听为什么还要静态监听呢?原因如下:

1.监听器不是最早启动,oracle实例先启动

2.监听器重启

3.oracle实例没有open

四、查询某服务是静态注册还是动态注册可以使用命令lsnrctl

status来查看某服务是静态注册还是动态注册。实例状态为UNKNOWN值时表明此服务是静态注册的设置。这时监听器用来表明它不知道关于该实例的任何信息,只有当客户发出连接请求时,它才检查该实例是否存在。动态注册的数据库通过状态信息中的状态READY或状态BLOCKED(对于一个备用数据库)来指明。不管何时关闭数据库,动态注册的数据库都会动态地从监听器注销,而与之相关的信息将从状态列表中消失。这样,不管数据库是在运行还是已经关闭,监听器总是知道它的状态。该信息将被用于连接请求的回退(fallback)和负载平衡。

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

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

相关文章

背景图页面缩小会变形_社团招新迎新海报背景图第321期

○ ○ ○免费图片素材置顶提示:文件将通过某度网盘提取,请先将素材保存到自己网盘后再下载。虽然设置了链接长期有效,但是什么事情都不能绝对,至少现在就出现过好几次链接被取消的情况。页面底部有个留言的窗口,大家有…

ug10许可证错误一8_面对排污许可证后监督检查,企业应做好哪些准备?

排污许可证不是发完就了事,当证后监督检查来临时,你会怎么办?胸有成竹还是胆战心惊?不要以为网上申领许可证so easy,填填表,传传资料,就能蒙混过关?不可能的,一旦查出问题…

语言中的petchar运用_还在担心你家孩子发音、语言问题?12个表现、3个预防是重点...

#清风计划#儿童语言发育迟缓在早期有时很难发现,而一旦耽误2-6岁的“黄金恢复期”再想提高理解与表达就困难重重了。那么如何判定我们的宝宝是否语言发育迟缓呢?下面我们先来看下正常孩子的语言发展轨迹。0-6岁正常儿童的语言发展特征0 至 6个月对声音会…

内核电源管理器已启动关机转换_电气器件-菲尼克斯UPS(不间断电源)使用

在有些项目中存在部分器件不允许突然失电的情况,否则会导致器件损坏或者生产产品损坏等问题。为解决该问题一般使用UPS(不间断电源)来解决该问题。下面简单介绍菲尼克斯UPS的使用。某项目中使用工控机进行设备参数的管理、编辑操作,系统为Win7&#xff0…

关于JAVA中的synchronized,一段不错的解释...

转载于:https://www.cnblogs.com/tabchanj/p/5387832.html

l298n电机驱动模块使用方法_SPDK virtio 驱动模块介绍及使用

作者简介闫亮 Intel高级软件工程师专注于开源存储SPDK的测试和优化简介CONTENTSSPDK virtio模块介绍SPDK virtio 用户模式使用示例SPDK virtio PCI模式使用示例总结第一章SPDK virtio模块介绍众所周知,Virtio协议定义了两个块设备驱动,virtio-blk和vi…

2 使用_索尼黑卡RX100M6的使用指南2

索尼黑卡RX100M6的使用指南2先说刚拿到黑卡怎么上手吧,每次就谈3个点。NO.1模式转盘如下图模式转盘HFR:拍摄慢动作(视频)的档位,黑卡最高拍摄40倍慢动作视频;SCN:情景模式,就是小白不知道什么题材设置什么参…

iOS中的UIScrollView(滑动视图)

2019独角兽企业重金招聘Python工程师标准>>> UIScrollView 可以滑动的视图 #import "ViewController.h"interface ViewController (){UIImageView *imgV;}endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad];//新加一个UIScroll…

linux文件什么权限比较安全,linux文件安全与权限

文件文件类型创建文件改变权限位符号模式r w x:文件属主权限 这是前面三位r- x:同组用户权限 这是中间三位r- x:其他用户权限 这是最后三位chmod命令的一般格式为:chmod [who] operator [permission] filenamewho的含义是&#xf…

系统新模块增加需要哪些步骤_在1769系统里使用MVI69MCM的有福了

如果在AB的1769系统里需要走Modbus RTU通讯的话就需要Prosoft的1769系列的机架式产品,之前的项目用的是老型号MVI69-MCM,那么新项目就会用MVI69E-MBS这个型号。那么模块的通讯拓扑图如下所示:模块往下可以连接仪表,变频器&#xf…

大脑使用书全6册有用吗_常锻炼“人体第二大脑”的孩子,不仅智商高,记忆力也很强...

常锻炼“人体第二大脑”的孩子,不仅智商高,记忆力也很强父母都希望自己的孩子聪明、智商高,很多家长也会将精力投入到孩子大脑潜能开发中。也有一些家长会说,聪不聪明那是天生的,一些家庭明明对于孩子大脑开发的事情不…

Apache多站点配置详解

2019独角兽企业重金招聘Python工程师标准>>> 本人第一篇技术博客,主要是把我自己的笔记做一个整理,并对之前学习做一个回顾和总结,也分享给大家,共同提高,好了,闲话少说,进入正题吧。…

linux字符设备驱动在哪里设置,从点一个灯开始学写Linux字符设备驱动!

原标题:从点一个灯开始学写Linux字符设备驱动![导读] 前一篇文章,介绍了如何将一个hello word模块编译进内核或者编译为动态加载内核模块,本篇来介绍一下如何利用Linux驱动模型来完成一个LED灯设备驱动。点一个灯有什么好谈呢&…

ipv6 ospf配置方法_【思唯网络学院】网络故障大全及处理原理和方法

第一章 故障处理方法一、网络的复杂性   一般网络包括路由、拨号、交换、视频、WAN(ISDN、帧中继、ATM、…)、LAN、VLAN、… 二、故障处理模型   1、 界定问题(Define the Problem)   详细而精确地描述故障的症状和潜在的原因   2、 收集详细信息(Gather Facts)R>信…

怎么让模糊的数字变清楚_一键模糊图像变清晰,好家伙!这款神器插件你值得拥有...

让我们结伴,走进设计好家伙,最近有设计师朋友给我反映很多问题!其中吐槽最多的就是甲方给图不够清晰整个模特,产品都有种朦胧美我擦嘞,导入到软件作图放大后,像素啥都看不清有木有~!!找老板要清…

vscode php插件_JS之 提高开发效率的Visual Studio Code插件

阅读本文约需要9分钟大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。上次老师跟大家分享了JS之 小技巧的知识,今天跟大家分享下JS之 提高开发效率的Visual Studio Code插件的…

antd table设置表格一个单元格的字体颜色_alireacttable:高性能 React 表格组件

点击上方蓝字关注我们简介在前端开发中,表格一直都是最复杂的组件之一。表格不仅要支持丰富的操作(排序、过滤、搜索、分页、自定义列等),还要有非常好的性能以展示大量数据。很多组件库(例如 fusion design,ant design)提供了功能丰富的表格…

linux修改arena大小,Resolume Arena怎么设置大屏幕 调整画面屏幕的方法

如果你想要制作VJ视频,那么Resolume Arena绝对可以满足你的所有需求,小编近期了解到很多用户不知道怎么设置大屏幕,如果你还不知道具体的操作方法,就赶快来看看下面的教程吧!操作步骤如下:1、如果你在使用R…

for each循环_Power Query — 循环初步

题记:《Excel圣经》1:3 微软说,“要有循环”,便有了循环。引子:keyword: one of and as each else error false if in is let meta not otherwise or section shared then true try type #binary #date #datetime #datetimezone #…

linux 直接映射 页表大小,linux 启动过程临时页表到底映射了多大内存?

从linux-2.4内核开始,在建立临时页表的时候,一般的教科书都说是映射了8M的物理内存,但是为什么是映射8M呢?当时网上有资料说,8M足够了,但为什么就足够了,一直没有彻底搞清楚,今天又重…