ORACLE 关于监听listener所有知识点涵盖文档.docx

上传人:b****1 文档编号:23087107 上传时间:2023-04-30 格式:DOCX 页数:13 大小:48.68KB
下载 相关 举报
ORACLE 关于监听listener所有知识点涵盖文档.docx_第1页
第1页 / 共13页
ORACLE 关于监听listener所有知识点涵盖文档.docx_第2页
第2页 / 共13页
ORACLE 关于监听listener所有知识点涵盖文档.docx_第3页
第3页 / 共13页
ORACLE 关于监听listener所有知识点涵盖文档.docx_第4页
第4页 / 共13页
ORACLE 关于监听listener所有知识点涵盖文档.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

ORACLE 关于监听listener所有知识点涵盖文档.docx

《ORACLE 关于监听listener所有知识点涵盖文档.docx》由会员分享,可在线阅读,更多相关《ORACLE 关于监听listener所有知识点涵盖文档.docx(13页珍藏版)》请在冰豆网上搜索。

ORACLE 关于监听listener所有知识点涵盖文档.docx

ORACLE关于监听listener所有知识点涵盖文档

三个文件、位置$ORACLE_HOME/network/adminsqlnet.oratnsnames.oralistener.ora

监听类型:

静态注册、动态注册

监听器里的服务的状态

ready:

此状态的服务是由PMON进程注册的,由于PMON进程所在的实例是打开的,这些服务名所对应的

实例已经准备(ready)好接受用户的连接请求了。

unknown:

此状态的服务时静态注册的,监听器并不确定该服务名所对应的实例名是否已经打开,所以

状态时未知的。

异机监听:

利用remote_listener参数,使数据库服务与监听服务分离。

条件:

远程服务器(即监听所在服务器)安装数据库软件,监听进程正常状态。

服务器说明:

远程服务器为:

192.168.10.12

数据库服务器:

192.168.10.15

步骤:

(1)配置数据库服务器中tnsnames.ora文件、remote_listener参数

tnsnames.ora

remote12=

(DESCRIPTION=

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

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=orcl)

altersystemsetremote_listener='remote12'scope=spfile/memory/both;

altersystemregister;

(2)查看远程服务器中对应端口监听状态,并配置tnsnames.ora文件

lsnrctlstatus

tnsnames.ora

remote15=

(DESCRIPTION=

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

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=orcl)

(3)测试是否正确监听

sqlplusxxx/xxx@remote15

文件作用:

sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串,

  

  例如我们客户端输入

  

  sqlplussys/oracle@orcl

  

  假如我的sqlnet.ora是下面这个样子

  

  SQLNET.AUTHENTICATION_SERVICES=(NTS)

  

  NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME)

  

  那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名

  

  如果我是这个样子

  

  NAMES.DIRECTORY_PATH=(TNSNAMES)

  

  那么客户端就只会从tnsnames.ora查找orcl的记录

  

  括号中还有其他选项,如LDAP等并不常用。

tnsnames.ora-----作用用来提供服务名通过服务名确定连接的数据库服务器,端口。

动态注册也用到服务名。

listener.ora------作用用来配置监听。

静态监听在此进行配置。

一个listener配置对应一个监听进程。

参数作用:

local_listener-------作用用来确定动态注册服务名。

空值则默认为listener。

相关命令介绍:

lsnrctlstart/status/stop

相关数据库命令介绍:

altersystemsetlocal_listener='注册的服务名'scope=memory/spfile/both;

altersystemregister;----手工注册

altersystemsetlocal_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.15)(PORT=1522))';

相关配置文件解读:

listener.ora

SID_LIST_LISTENER4=------------配置静态监听SID_LIST_对应的监听名称

(SID_LIST=

(SID_DESC=

(GLOBAL_DBNAME=orcl)------------------------配置全局数据库名可用showparameterservice_name获得

(SID_NAME=orcl)------------------------配置SID可用selectinstance_namefromv$instance;获得

(ORACLE_HOME=/u01/oracle/product/10.2.0/db_1)-------------------$ORACLE_HOME

#(PROGRAM=extproc)

LISTENER1=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.15)(PORT=1522))

LISTENER2=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.15)(PORT=1523))

(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))---------------------此处用来分辨监听配置信息如不添加所有配置信息默认为同一监听

LISTENER3=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.15)(PORT=1524))

(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))

LISTENER4=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.15)(PORT=1525))

(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC2))

sqlnet.ora

#sqlnet.oraNetworkConfigurationFile:

/u01/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora

#GeneratedbyOracleconfigurationtools.

NAMES.DIRECTORY_PATH=(TNSNAMES,EZCONNECT)

tnsnames.ora

ORCL10G=-------集中所有服务信息用来确保所有服务名即所有监听进程(除静态注册外)都被PMON进程动态自动注册。

(DESCRIPTION=

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

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.15)(PORT=1522))

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.15)(PORT=1523))

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.15)(PORT=1524))

ORCL=

(DESCRIPTION=

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

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=orcl)

ORCL1=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.15)(PORT=1522))

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=orcl)

ORCL2=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.15)(PORT=1523))

(CONNECT_DATA=

(SERVER=DEDICATED)-----------------------独占一个服务端进程shared共享服务端进程

(SERVICE_NAME=orcl)

ORCL3=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.15)(PORT=1524))

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=orcl)

客户端连接方式:

专用连接

共享服务器连接

1.专用连接:

默认的连接方式,一个用户进程对应一个服务器进程

用户进程退出,服务器进程也退出,释放所有的资源

2.共享服务器模式:

用户进程与服务器进程是多对多的关系,多个服务器进程会处理多个用户进程

专用连接中,用户进程没有发出命令,服务器进程处于空闲状态,资源一直占用,共享模式中,

只要是服务器进程空闲,就可以处理其他用户发出的命令,因此服务器进程的数量减少,对资源的

利用更加高效,占用的PGA减少,可以支持更多的用户

共享连接的工作过程

共享连接模式下,需要配置多个名为dispatcher的组件,dispatcher作为用户进程和服务器进程之间的

协调者,负责将用户进程的请求传递给服务器进程,并将服务器进程得到结果返回给用户PMON定期

将每个dispatcher的地址、以及工作负载注册到监听器里面,当用户进程连接监听器时,监听器会选择

一个负载最低的dispatcher,并把该dispatcher的地址返回给用户进程,用户进程和dispatcher进程建立

连接,用户进程在session的整个生命期间,所连接的dispatcher不会发生改变

共享连接的具体步骤如下:

1、用户进程连接到监听器

2、监听器根据注册的各个dispatcher的负载情况,选择一个负载最低的dispatcher,并将其地址返回给用户进程

3、用户进程根据监听器返回的dispatcher地址,连接到该dispatcher

4、dispatcher接收到用户进程发出的请求以后,会将该请求放入请求队列,该队列位于SGA中,请求队列被所有的dispatcher共有

5、在服务器进程中,最空闲的服务器进程会从请求队列中按照先进先出的原则,挑选一个请求进行处理

6、服务器进程处理请求后,得到的结果放入响应队列,Oracle为每个dispatcher分配一个对应的响应队列

7、dispatcher到相应的队列中取出结果,返回给用户进程

注意:

1、专用连接中,用户进程和服务器进程一一对应,用户进程对应的PGA被服务器进程独享

2、共享连接中,多个服务器进程会处理多个用户请求,用户的PGA就需要在不同的服务器

进程之间共享,PGA中的UGA部分就会被放入到SGA中,如果配置了largepool,则UGA会

在largepool里分配,没有配置largepool,那么UGA就放在sharedpool里面

配置共享连接

配置共享连接时,包含以下几个方面:

1、配置dispatcher进程的数量

showparameterdispatcher

NAMETYPEVALUE

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

dispatchersstring(PROTOCOL=TCP)(SERVICE=orclXD

B)

altersystemsetdispatchers='(PROTOCOL=TCP)(dispatchers=3)';

表示启动三个dispatcher,以tcp协议进行连接。

可以通过max_dispatchers参数定义数据库里最多

可以同时启动多少个dispatchers,如;

altersystemsetmax_dispatchers=5;

服务器进程

通过设置shared_servers来配置服务器进程,如:

altersystemsetshared_servers=5;

服务器进程可以根据需要动态生成。

如果将shared_servers设置为0,则服务器进程一旦使用完毕就会被删除。

我们应该建立较少的服务器进程,如果不够用的话,则让系统根据负载自动创建额外的服务器进程。

能够自动

同时创建的服务器进程个数有参数max_shared_servers决定。

如:

altersystemsetmax_shared_servers=20;

这时数据库默认会有5个服务器进程运行,当数据库负载增加,需要额外的服务器进程时,则会自动创建服务器

进程,最多有20个服务器进程。

而当数据库负载下降时,也会自动删除服务器进程,直到剩下5个服务器进程。

共享连接的session个数

参数shared_server_sessions说明同时可以进行共享连接的session的个数。

能够同时使用专用连接的session个数等于参数sessions减去shared_server_sessions的值。

altersystemsetshared_server_sessions=5;

在服务器端配置了共享连接以后,还需要在客户端的tnsnames.ora文件里指明,要采用共享连接方式进行连接,如:

uplooking=

(DESCRIPTION=

(ADDRESS_LIST=

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

(CONNECT_DATA=

(SERVICE_NAME=orcl)

(SERVER=shared)--------如果是专用的话是:

SERVER=DEDICATED

当我们以uplooking作为客户端的连接字符串连接到数据库以后,可以用如下方式显示服务名的详细信息,从而验证是否成功建立共享连接;

lsnrctlservice

Service"orcl.uplooking"has1instance(s).

Instance"orcl",statusREADY,has4handler(s)forthisservice...

Handler(s):

"D002"established:

0refused:

0current:

0max:

1022state:

ready

DISPATCHER

uplooking,pid:

14820>

(ADDRESS=(PROTOCOL=tcp)(HOST=uplooking)(PORT=9980))

"D001"established:

0refused:

0current:

0max:

1022state:

ready

DISPATCHER

uplooking,pid:

14818>

(ADDRESS=(PROTOCOL=tcp)(HOST=uplooking)(PORT=8050))

"D000"established:

1refused:

0current:

1max:

1022state:

ready

DISPATCHER

uplooking,pid:

14756>

(ADDRESS=(PROTOCOL=tcp)(HOST=uplooking)(PORT=3664))

"DEDICATED"established:

0refused:

0state:

ready

LOCALSERVER

可以看到,名为D001的dispatcher建立了一个连接(established:

0)该dispatcher在8050号端口与用户进程进行连接。

共享连接的限制

有些操作不能在共享连接下完成。

启动关闭数据库实例

创建表空间和数据文件

维护表和索引等数据库管理的工作。

共享连接适用于单纯的OLTP应用。

对于需要扫描大量数据,运行时间较长的操作,不适合采用共享连接,例如备份恢复

相关示意图:

网络连接示意图

监听注册示意图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1