一、什么是注册?

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

在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务(无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务)。相当与是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序中,会记录相应数据库对应的服务名(一个数据库可能对应有多个服务名),当客户端需要连接数据库时,只需要提供服务名,就可以建立客户端和服务器之间的连接。

二、 静态注册

静态注册指实例启动时读取listener.ora配置文件,将实例和服务注册到监听程序。其中global_dbname对应的是oracle对外的服务名,即初始化参数里的service_names,而sid_name对应的是oralce实例的名称,即初始化参数里的instance_name。

无论何时启动一个数据库,默认都有两条信息注册到监听器中:实例和服务。如:

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。

LISTENER

=

( DESCRIPTION =

(ADDRESS = (HOST = 192.168.0.88)(PROTOCOL = TCP)(PORT = 1521))

)

这是一个最简单的静态监听配置文件,SID_LIST_LISTENER部分的GLOBAL_DBNAME表示向外提供的服务名,SID_NAME是提供注册的实例。在tnsnames.ora文件中的CONNECT_DATA部分,可分别选择SERVICE_NAME=Ora8或SID=test为客户端提供连接。

对于配置非1521监听端口,只能选择静态注册方式。

三、 动态注册

动态注册不需要显示的配置listener.ora文件,oracle实例在open时,PMON进程根据instance_name,service_name参数将实 例和服务动态注册到listerer中。如果没有设定instance_name,将使用db_name初始化参数值。如果没有设定 service_names,将拼接db_name和db_domain(db_name.db_domain)参数值来注册监听。

SQL> show parameter service_nameI

NAME

TYPE        VALUE

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

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

service_names

string      test

SQL> show parameter

instance_name

NAME

TYPE        VALUE

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

----------- ------------------------------ instance_name

string      test

LSNRCTL>

status

Connecting to

(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

STATUS of the

LISTENER

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

LISTENER Version

TNSLSNR for Linux: Version 10.2.0.1.0 - Production

Start

Date

24-SEP-2008 16:50:01

Uptime

0 days 0 hr. 0 min. 33 sec

Trace

Level

off

Security

ON: Local OS Authentication

SNMP

OFF

Listener Log File

/u01/app/oracle/product/10.2.0/db_1/network/log/listener.log

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test1)(PORT=1521)))

Services Summary...

Service "test" has 1 instance(s).

Instance "test", status READY, has 1 handler(s) for this

service...

Service "test_XPT" has 1 instance(s).

Instance "test", status READY, has 1 handler(s) for this

service...

The command completed successfully

SQL> alter

system set service_names='oratest' scope=both;

System altered.

SQL> alter system

set instance_name='instest' scope=spfile;

System altered.

SQL> shutdown

immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance

started.

Total System Global Area

96468992 bytes

Fixed

Size

1217884 bytes

Variable

Size

88083108 bytes

Database

Buffers

4194304 bytes

Redo

Buffers

2973696 bytes

Database mounted.

Database opened.

LSNRCTL> status

Connecting to

(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

STATUS of the LISTENER

LISTENER Version

TNSLSNR for Linux: Version 10.2.0.1.0 - Production

Start

Date

24-SEP-2008 16:52:44

Uptime

0 days 0 hr. 1 min. 52 sec

Trace

Level

off

Security

ON: Local OS Authentication

SNMP

OFF

­

Listener

Log File

/u01/app/oracle/product/10.2.0/db_1/network/log/listener.log

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test1)(PORT=1521)))ITPUB个人空间5r4I9yeg

uy

[6g

Services Summary...

Service "oratest" has 1 instance(s).

Instance "instest", status READY, has 1 handler(s) for this

service...

Service "test" has 1 instance(s).

Instance "instest", status READY, has 1 handler(s) for this

service...

Service "test_XPT" has 1 instance(s).

Instance "instest", status READY, has 1 handler(s) for this

service...

The command completed successfully

可以看到,监听注册的服务和实例已发生了相应的变化。同静态监听,这里也可以分别使用SERVICE_NAME=oratest或SID=instest来进行客户端的连接。 可选择的是,您可以在service_names参数中指定多个服务值,值之间用逗号格开,这对于共享服务器配置是很有用的。

动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),如果需要向非默认监听注册,则需要配置local_listener参数!

四、查询某服务是静态注册还是动态注册

可以使用命令lsnrctl status来查看某服务是静态注册还是动态注册。

实例状态为UNKNOWN值时表明此服务是静态注册的设置。这时监听器用来表明它不知道关于该实例的任何信息,只有当客户发出连接请求时,它才检查该实例是否存在。

动态注册的数据库通过状态信息中的状态READY或状态BLOCKED(对于一个备用数据库)来指明。不管关闭何时数据库,动态注册的数据库都会动态地从监听器注销,而与之相关的信息将从状态列表中消失。这样,不管数据库是在运行还是已经关闭,监听器总是知道它的状态。

该信息将被用于连接请求的回退(fallback)和负载平衡。

因此,由于Listener动态监听,实例虽然启动,但没有注册到监听。实例是通过PMON进程注册到监听上的,而PMON进程需要在MOUNT状态下才会启动。所以造成了上面的错误,为了方便,只能将其改为静态监听

修改NETWORK\ADMIN下的listner.ora,改为

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = e:\oracle10g)

(PROGRAM = extproc)

)

(SID_DESC =

(GLOBAL_DBNAME = oracle)

(ORACLE_HOME = e:\oracle10g)

(SID_NAME = oracle)

)

)

要注意的是=号左右两边的空格,否则会出错,然后再用lsnrctl start等来启动,这次的话,可以很顺利地解决shutdown后再startup mount的问题了

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

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

2.监听器重启

3.oracle实例没有open

一台机上即装有9i,又装有10g,此时可以只启动10g的监听器,9i的数据库可以自动注册进来,反之不行,因为10g的监听器可以监听9i的数据库,但9i的监听器不能监听10g的数据库。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15011739/viewspace-604562/,如需转载,请注明出处,否则将追究法律责任。

oracle监听管理工具,oracle监听器管理相关推荐

  1. oracle监听 客户 实例,oracle 数据库实例 监听

    创建Oracle数据库.数据库名与实例名与SID之间的关系(图文详解) 目录 目录 软件环境 前言 安装Oracle监听程序 启动停止监听程序 创建数据库 数据库名db_name 数据库实例名inst ...

  2. oracle 监听报错,Oracle EBS系统数据库监听报错TNS-12547、TNS-12560和TNS-00517解决方法...

    记得有一次Oracle EBS系统中止运行3小时,实在比较一次惨痛的教训,让我至今记忆犹新. 问题症状:用户反映提交的请求全部是红色错误 开始意为是并发管理"标准管理器"的问题,在 ...

  3. 手动更改oracle监听,详解Oracle数据库手动注册监听的方法

    本文主要介绍了为一个Oracle数据库(t02)配置多个监听(listener)的实验,过程有点小曲折.通过这个实验让我们来学习一下如何手动注册监听.以下是演示的过程. 1.新增两个测试的监听,lis ...

  4. 查看oracle监听服务器,处理Oracle 监听文件listener.log问题

    如果连接时候变得较慢 查看Oracle日志记录,可能是因为此文件太大,超过2G, 需要定期清理,(如果多用户,记得用root,可能没权限) 查看listener.log? find / -name l ...

  5. oracle监听的日志,Oracle监听日志定期清理

    环境: Oracle 11.2.0 Win Server 2008 R2 Enterprise 原因:Oracle监听日志文件大小超过4G,oracle监听连接时断时续 解决办法:重新建立新的日志文件 ...

  6. oracle监听静态注册,oracle监听器动态注册于静态注册的区别

    1, oracle 10g 用netca方式建立的都默认为动态注册方式 2,如果想改为静态注册的方式则在listener.ora 中加入如下内容即可 SID_LIST_LISTENER = (SID_ ...

  7. oracle监听服务丢失,Oracle监听服务无法启动或丢失的解决办法

    1)使用了Cclear或鲁大师等注册表清理工具清理后导致无法启动 无法启动OracleOraDb10g_home1TNSListener服务 解决办法:①打开注册表编辑器,在HKEY_LOCAL_MA ...

  8. oracle监听怎么关闭,Oracle数据库启动监听、关闭

    数据库启动流程: 1.oracle用户登录或切换到oracle用户 linux-topana:~ # su - oracle oracle@linux-topana:~> 2.登录SQLPLUS ...

  9. liunx 查看oracle监听,Linux配置Oracle监听提示异常

    你这个是要先在root下输入 xhost + 如果是远程连接的话,需要在oracle用户下的命令行输入 export DISPLAY=你本机的IP地址:0.0 手工命令行配置 一.修改listener ...

  10. oracle 监听 无法连接,oracle监听hang,无法建立新连接TNS-12540

    TNS-12518: TNS:listener could not hand off client connection TNS-12540: TNS:internal limit restricti ...

最新文章

  1. 手动添加oracle驱动到maven依赖,并使用springboot连接
  2. C++ 学习笔记---零散的基础知识
  3. js实现kmp算法_字符串匹配算法KMP算法
  4. directx最终用户运行时_WSL将支持GPU计算,并可运行Linux GUI应用
  5. CSS Sprites在IE中不起作用[8/7/6]
  6. 热更新_UnityXlua热更新
  7. 你们要的Windows IDEA 快捷键终极大全,速度收藏!
  8. BootDO框架的使用及介绍
  9. 新买的联想笔记本计算机选项,联想笔记本电脑进入BIOS界面,以选择将硬盘设置为首次启动的选项...
  10. STM32H743中的DCMI无法进入行中断和场中断问题
  11. FFmpeg将音频、无音频的视频合并为视频
  12. python 二项分布编程_Python模拟伯努利试验和二项分布代码实例
  13. Using GCC to produce readable assembly? - Stack Overflow
  14. 华为鲲鹏云服务技术与运用 部分习题
  15. 开发小程序以及后台管理系统攥淘宝佣金
  16. 系统设计与分析lesson5-关于微信小程序开发工具的学习
  17. 华为harmonyos 2.0,HarmonyOS2.0
  18. 移动式护栏巡逻机器人_重磅!移动式护栏巡逻执法机器人上岗!专盯高速乱停乱行!...
  19. C语言程序设计-现代方法 第二版 第6.1小节 显示平方表
  20. 向数据中添加高斯噪声

热门文章

  1. python中级_python复习之中级
  2. matlab 动画_MATLAB作图实例:51:表面动画
  3. 加载慢_解决游戏加载慢不必大刀阔斧升改,教你一个简单有效的方法
  4. vue获取上传进度_vue通过input选取apk文件上传,显示进度条
  5. 方程组的直接解法和迭代法 python_最小二乘法及python 实现
  6. iphone连上wifi却上不了网_我想问问为何我的手机连上家里的wifi,可以用,但是将网线连接路由器与主机电脑时,电脑却上不了网...
  7. python怎么画圆圈_python怎么画圆
  8. python 元组 列表 字典区别_Python列表、元组、字典、集合、字符串的异同总结
  9. linux redis客户端_10个 Linux 顶级开源缓存工具
  10. eos节点服务器_长期看,EOS柚子能不能达到1000元?