Oracle网络配置.docx

上传人:b****5 文档编号:8636345 上传时间:2023-02-01 格式:DOCX 页数:9 大小:20.86KB
下载 相关 举报
Oracle网络配置.docx_第1页
第1页 / 共9页
Oracle网络配置.docx_第2页
第2页 / 共9页
Oracle网络配置.docx_第3页
第3页 / 共9页
Oracle网络配置.docx_第4页
第4页 / 共9页
Oracle网络配置.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

Oracle网络配置.docx

《Oracle网络配置.docx》由会员分享,可在线阅读,更多相关《Oracle网络配置.docx(9页珍藏版)》请在冰豆网上搜索。

Oracle网络配置.docx

Oracle网络配置

网络配置小结

Oracle监听器Listener是一个重要的数据库服务器组件,在整个Oracle体系结构中,扮演着重要的作用。

它负责管理Oracle数据库和客户端之间的通讯,它在一个特定的网卡端口(默认是TCP1521端口)上监听连接请求,并将连接转发给数据库。

1、监听器的功能:

Listener主要负责下面的几方面功能:

1)监听客户端请求。

监听器守候在服务器制定端口(默认为:

1521),监听客户端的请求。

2)为客户端请求分配ServerProcess。

监听器只负责接听请求,之后将请求转接给OracleServerProcess。

3)注册实例服务。

Listener是建立实例和客户端进程之间联系的桥梁。

Listener与实例之间的联系,就是通过注册的过程来实现的。

注册的过程就是实例告诉监听器,它的数据库数据库实例名称instance_name和服务名service_names。

监听器注册上这样的信息,对客户端请求根据监听注册信息,找到正确的服务实例名称。

目前Oracle版本中,提供动态注册和静态注册两种方式。

4)错误转移failover。

failover是RAC容错的一个重要方面功能,其功能是在数据库实例崩溃的时候,可以自动将请求转移到其他可用实例上的一种功能。

5)负载均衡衡量。

在RAC架构中,Oracle实现了负载均衡。

当一个客户请求到来时,Oracle会根据当前RAC集群环境中所有实例的负载情况,避开负载较高的实例,将请求转移到负载较低的实例进行处理。

2、监听器的操作

在命令行窗口(CMD),输入lsnrctl,就可以进入监听器控制窗口。

通过输入命令help,可以查看支持的监听器操作。

监听程序参数文件/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

这个文件是一个文本类型参数文件,描述了监听器监听端口,主机名称和静态注册信息。

监听程序日志文件/u01/app/oracle/product/10.2.0/db_1/networ/log/listener.log监听器日志,是一个记录和描述监听器工作和错误的信息库。

通过研究日志内容,可以帮助我们发现当前的监听器的问题、解决连接故障和深入理解监听器工作原理。

监听器有注册功能,通过status命令(services命令同样效果)。

可以查看到当前有什么服务被注册上,用来检查连接服务失败,是常用的工具。

开启/关闭监听器:

监听器的行为受参数文件的控制,调整监听参数,可以通过Oracle提供的GUI界面完成,还可以手工修改listener.ora来完成(参数文件listener.ora是一个文本文件)。

使用GUI,就是使用NetConfigurationAssistant来配置。

配置完成后,配置程序会自动重新启动监听器程序,来加载修改的参数文件。

如果采用手工修改listener.ora,就必须要手工的进行监听程序关闭和启动。

LSNRCTL>stop

LSNRCTL>start

3、监听器的工作过程

监听器作为一个独立process在操作系统中运行,守候在特定网络端口(默认为:

1521),等待客户端请求的到来。

注意:

我们在客户端配置命名服务的时候,输入的1521也就是为了与监听器程序建立连接。

当有一个请求,监听器对照已经注册的服务列表,查找对应的数据库实例信息,获取指定实例的ORACLE_HOME路径。

表明可以进行连接。

客户端与实例的交互不是直接的,是通过ServerProcess作为代理中介来实现的。

所有指令SQL都是客户端通过ServerProcess发送到实例中,这种体系结构是Oracle对于实例和数据库文件一种保护机制。

当监听器获得请求之后,要从Oracle实例中分配一个ServerProcess与之对应。

不同的Oracle连接方式存在一些差别。

如果是专用连接模式,也就是一个客户端连接对应一个ServerProcess。

监听器就会向OS请求fork(创造)出一个ServerProcess,与监听器尝试交互。

如果是共享连接模式,也就是多个客户端共享一个ServerProcess(注意:

这里还不是连接池)。

监听器就会向Dispatcher进程(管理共享模式连接的进程)请求一个ServerProcess与之交互。

ServerProcess与监听器的连接,实际上就是相互信息的交换。

ServerProcess将自身在OS中的进程编号、连接地址信息发给监听器。

监听器将客户端信息传递给ServerProcess。

监听器获取到ServerProcess的信息之后,将其返回给客户端连接程序。

客户端获取到信息之后,进行重连接,根据返回的信息与ServerProcess在指定的服务器端口进行联系。

直到这个时候,客户端程序才将连接用户名、密码等信息发给ServerProcess,进行登录验证等操作。

监听器的工作也就到此结束。

4、监听器的动/静态注册机制

注册就是将数据库作为一个服务注册到监听程序。

客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库。

这个服务名可能与实例名一样,也有可能不一样。

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

数据库服务器对应的实例和服务。

)相当于是这样:

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

目前的Oracle,支持静态注册和动态注册两种注册方式。

静态注册:

指定监听器程序要为哪个实例以哪个服务名做监听。

在启动监听器的时候,监听程序是不知道所监听实例服务是否存在。

直到有客户端请求指定的服务。

静态注册就是实例启动时读取listener.ora文件的配置,将实例和服务注册到监听程序。

无论何时启动一个数据库,默认地都有两条信息注册到监听器中:

数据库服务器对应的实例和服务。

静态注册时,listener.ora文件中的GLOBAL_DBNAME向外提供服务名,listener.ora文件中的SID_NAME提供注册的实例名,下面是一个典型参数文件的结构:

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=PLSExtProc)

(ORACLE_HOME=/home/oracle/product/10.2.0/db_1)

(PROGRAM=extproc)

(SID_DESC=

(GLOBAL_DBNAME=Test)

(ORACLE_HOME=/home/oracle/product/10.2.0/db_1)

(SID_NAME=Test)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

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

其中,SID_LIST配置节点中的SID_DESC就是配置静态注册的节点项目。

SID_LIST里用来配置当前监听器注册的服务项目,通过多个SID_DESC进行配置,每个SID_DESC是一个配置项目。

默认是动态注册的时候,只有PLSExtProc项目。

默认安装时,会安装一个PL/SQL外部程序(ExtProc)条目在listener.ora中,是Oracle为调用外部程序默认配置的监听,它的名字通常是ExtProc或PLSExtProc,但一般不会使用它,可以直接从listener.ora中将这项移除,因为对ExtProc已经有多种攻击手段了,在不使用外部程序时,Oracle也是建议删除的。

PLSExtProc是PL/SQLexternalprocdure的意思,就是在PL/SQL中调用外部语句,如C,Java写的过程。

静态配置项目中,通过GLOBAL_NAME配置服务项目,通过SID_NAME指定数据库实例的名称,通过ORACLE_HOME配置Oracle数据库软件安装的基本目录。

动态注册是与静态注册相对应的一种注册方法。

同样也是通过listener.ora进行配置。

下面是一个典型的配置参数文件:

SID_LIST_LISTENER=(SID_LIST=(SID_DESC=

(SID_NAME=PLSExtProc)

(ORACLE_HOME=/home/oracle/product/10.2.0/db_1)(PROGRAM=extproc)))

LISTENER=

(DESCRIPTION_LIST=(DESCRIPTION=

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

对比上面的静态注册文件,可以发现显示指定服务名称和数据库实例名的项目不见了。

只有本地地址和监听器端口信息。

动态注册的动作是在监听器所在主机上数据库实例完成。

动态注册是Oracle上一个不能关闭的功能。

实例的backgroundprocessPMON,每隔一段时间(一到两分钟)就会将实例的参数信息注册到监听器上,实现动态注册。

注册的信息是数据库参数service_name和instance_name。

可以通过ShowParameter命令查看。

SQL>showparameterinstance_name;

SQL>showparameterservice_names;

一般数据库在建立的时候,这两个参数都是已经设置好的,不会轻易的发生变化。

如果instance_name参数没有设置,则系统会选取参数db_name作为实例名称返回。

如果service_names没有设置,则会将db_name和db_domain两个参数组合成服务名实现注册。

通常,对instance_name和service_name两个参数,还是建议设置上。

因为会在一定程度上影响到动态注册的效果。

只有显示设置两个值的情况下,PMON才会周期性的将注册信息加以注册。

通过命令行,也可以强迫PMON立即执行一次注册操作。

SQL>altersystemregister;

动态注册操作的发动方是PMON后台进程,PMON是Oracle实例最重要的后台进程,很多资料和DBA都是以该进程的状态确定数据库实例的状态。

PMON负责动态注册,如果不能进行动态注册,说明PMON已经失去了工作能力,也就意味着监听程序所服务的实例已经不能工作。

通过动态注册的机制,监听程序是可以知道所服务的服务器实例已经崩溃,对于客户端的请求,可以实现错误转移。

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

实例状态为UNKNOWN值时表明此服务是静态注册的设置。

这时监听器用来表明它不知道关于该实例的任何信息,只有当客户发出连接请求时,它才检查该实例是否存在。

动态注册的数据库通过状态信息中的状态READY或状态BLOCKED来指明。

5、常用的配置文件

tnsnames.ora-->用于配置本地客户端或远程客户端的本地名称解析

listener.ora-->用于配置侦听器的相关注册信息

sqlnet.ora-->用于配置服务器或客户端所支持的解析方式

netmgr(NetManager)中的几个配置模块

Profile分支-->对应于sqlnet.ora文件,可以设置客户端和服务器端同时应用的Oracle选项

SeviceNaming分支-->用于配置客户端的名称解析,对应于

tnsnames.ora文件

Listener分支-->用于配置服务器端的数据库侦听器,对应于listener.ora文件

6、侦听器配置程序(lsnrctl)及TNSPING命令

[oracle@robinsonadmin]$lsnrctl

LSNRCTL>help--使用help查看lsnrctl的扩展命令

lsnrctl命令用法

LSNRCTL>command[listener_name]

tnsping命令用于测试网络的可联通性

tnspingorcl

7、手动配置listener.ora和tnsnames.ora

orcl=-->网络服务别名,可以修改,对应于连接标识符

(DESCRIPTION=

(ADDRESS_LIST=

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

(CONNECT_DATA=

(SERVICE_NAME=)

现描述如下:

PROTOCOL:

客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。

HOST:

数据库侦听所在的主机的主机机名或IP地址,通常数据库侦听与数据库位于同一个机器上。

建议使用IP地址。

PORT:

数据库侦听使用的端口,缺省为1521,可以查看服务器端的listener.ora文件获得端口号或在数据库服务器命令提示符下使用lsnrctlstatus[listenername]命令查看获得端口号。

此处Port的值一定要与数据库侦听正在侦听的端口一样。

SERVICE_NAME:

在服务器端,使用sqlplus>showparameterservice_name命令查看。

上述配置时应保证客户机能够ping通服务器,之后可以使用tnspingorcl(网络服务名)来测试网络的联通情况

SQL>connscott/tiger@orcl

使用上面的连接方式进行连接时,则连接标识符orcl被解释为tnsnames.ora中orcl对应的描述信息,根据描述信息来解析连接服务器。

置listener.ora-->同样可以使用tnsnames.ora配置时所使用的GUI工具来完成

示例Systemparameterfileis/u01/app/oracle/10g/network/admin/listener.ora

LISTENER=

(DESCRIPTION=

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

)--LISTENER部分描述了主机地址、端口及协议

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(GLOBAL_DBNAME=orcl1)

(ORACLE_HOME=/u01/app/oracle/10g)

(SID_NAME=ORCL)

(SID_DESC=

(GLOBAL_DBNAME=orcl2)

(ORACLE_HOME=/u01/app/oracle/10g)

(SID_NAME=ORCL)

a.LISTENER部分描述了主机地址、端口及协议

b.SID_LIST_LISTENER描述对外提供数据库服务的列表

 

配置客户端的tnsnames.ora如下

orcl1=

(DESCRIPTION=

(ADDRESS_LIST=

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

(CONNECT_DATA=

(SERVICE_NAME=orcl1)

orcl2=

(DESCRIPTION=

(ADDRESS_LIST=

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

(CONNECT_DATA=

(SERVICE_NAME=orcl2)

1、listener.ora

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=PLSExtProc)

(ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)

(PROGRAM=extproc)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

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

(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))

LISTENER:

指出一个监听器定义的起始点。

它实际上是正被定义的当前监听器的名称。

默认的名称是LISTENER。

DESCRIPTION:

描述每个监听位置

ADDRESS_LIST:

含有与监听器正在监听的那些位置有关的地址信息

PROTOCOL:

指定用于本监听位置的协议

HOST:

保存监听器所驻留在的那台计算机的名称PORT:

含有监听器正在上面监听的地址

SID_LIST_LISTENER:

定义配置监听器所针对的ORACLE服务的列表

SID_DESC:

描述每个OracelSID

GLOBAL_DBNAME:

标识全局数据库名称。

本项应该与当前Oracle服务的init.ora文件中的SERVICE_NAMES项一致ORACLE_HOME:

给出服务器上Oracle可执行程序的位置SID_NAME:

含有用于本Oracle实例的OracleSID的名称

几种连接用到的命令形式

1.sqlplus/assysdba这是典型的操作系统认证,不需要listener进程

2.sqlplussys/oracle这种连接方式只能连接本机数据库,同样不需要listener进程

3.sqlplussys/oracle@orcl这种方式需要listener进程处于可用状态。

最普遍的通过网络连接。

以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。

输入sqlplussys/oracle@orcl的时候:

1.查询sqlnet.ora看看名称的解析方式,发现是TNSNAME;

2.则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和service_name;

3.如果listener进程没有问题的话,建立与listener进程的连接;

4.根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。

默认是专用服务器模式,没有问题的话客户端就连接上了数据库的serverprocess;

5.这时候网络连接已经建立,listener进程的历史使命也就完成了

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

当前位置:首页 > 初中教育

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

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