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个月对声音会…

php面试php数组变ahp,关于PHP字符串的一道面试题

我们来看一段简单的代码:$str php;$str[name] array(dogstart);var_dump($str);认真思索下,上面的代码会输出什么?如果你已经有答案了,那么就可以关闭这遍文章了,否则咱们一步一步的来看看最终会输出什么。基础回顾在…

7 libjpeg使用

一、交叉编译libjepg编译 tar xzf libjpeg-turbo-1.2.1.tar.gz ./configure –help ./configure --prefix/work/project/first_project/13libjepg/libjpeg-turbo-1.2.1/tmp/ --hostarm-linux make make install 二、交叉编译jepg2rgb.c arm-linux-gcc -o jpg2rgb jpg2rgb.c …

oracle快速排序法,经典算法系列之快速排序算法

快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快&am…

echaer 地图_ECharts地图系列

series[i]-map用于控制 ECharts 中的地图。地图主要用于地理区域数据的可视化,配合 visualMap 组件用于展示不同区域的人口分布密度等数据。多个地图类型相同的系列会在同一地图上显示,这时候使用第一个系列的配置项作为地图绘制的配置。Tip: 在 ECharts…

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

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

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

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

oracle11优点,争先体味Oracle 11g的新特点

争先体味Oracle 11g的新特点跟着这几天Oracle OpenWorld大会的举行,Oracle11g的新特征越来越多的被展现出来。以前,我曾经引见过Oracle11g将可能在10月份的这个大会上推出,当初至于Alpha版的信息已经可以见到,现时出现的已经是Bet…

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

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

【rman】list archivelog all与list backup of archivelog all

list archivelog all 是列出控制文件中记录的未被rman delete 命令删除的手工删除的日志文件,如果手工删除之后使用list命令对应的日志文件的status为标记为X!模拟删除日志yangdb_1_192_762800109.log oraclerac3:/opt/oracle/yangdb_arch>mv yangdb_…

ase支持 urp不_urp管线的自学hlsl之路 第一篇 序言

入坑unity学习已经有一年半了,shader很早就在用连连看学习和使用(lwrp hdrp的shadergraph和build in的ase)。但是随着对于画质和效果的追求和提高,使用手写shader已经变得非常有必要了。疫情期间正好打下了C#的编程基础,两个月前我开始学习CG…

oracle变量名,Oracle中的替换变量,变量名,变量名

替换变量(仅用于SQL *Plus或者用于原理和SQL *Plus相同的开发工具):临时存储值利用它可以达到创建通用脚本的目的利用它可以达到和用户交互,故在SQL *Plus中又称交互式命令替换变量的格式式在变量名称前加一个&,以便在运行SQL命令时提示用…

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工程师标准>>> 本人第一篇技术博客,主要是把我自己的笔记做一个整理,并对之前学习做一个回顾和总结,也分享给大家,共同提高,好了,闲话少说,进入正题吧。…