您的位置:首页 > 理论基础 > 计算机网络

oracle-dba-网络配置管理

2017-03-03 23:18 281 查看
网络配置管理

Oralce的网络连接

Oracle提供了oracle net service组件:方便地配置和管理网络连接,由以下组成

1:oracle net

2:oracle net listeners

3:oracle connection listeners

4: oracle configuration assistant

5: oracle net manager

安装数据库服务器或者客户端时自动安装好了

其中oracle net补习服务器和客户端都安装上,他负责完成客户机与服务器之间连接的初始化,建立以及维护工作,

由2部分组成

1:oracle network foundatioin leayr:建立和维护客户端与数据库服务器之间的连接和信息交互

2:Oracle protocol support :映射transparent network substrate(TNS)到业内标准协议

Oracle网络连接流程描述

1:客户端发起连接,确定服务器,监听端口,协议,数据库服务器名

2:客户端一旦与监听器建立连接,会在客户端生成用户进程,同时监听器会判断客户端所请求的服务名是否是自己所管理的服务名

如果客户端传过来的连接字符串不包含服务名,报错,

如果请求的服务名字不是自己管理的,报错并中断,

如果请求的服务名是自己管理的,监听器就在数据库服务器上创建服务器进程。

3:监听器在创建服务器进程后,会将用户进程与服务器进程建立连接,之后监听器退出与客户端的连接。

4:服务器进程根据用户进程提提供的用户名和密码到数据字典里判断是否正确

5:不匹配报错,匹配则分配pga,并生成session

服务器监听器配置

无论是专有服务器连接还是共享服务器连接,数据库服务器必须启动监听程序

监听程序(oracle net service服务):由oralce文件管理,文件名为listener.ora,

在linux默认位于oraclehome/network/admin目录下,只运行在数据库服务器上,完成监听客户连接请求的作用。Oralce使用lsnrctl实用程序完成监听程序的配置和管理Listener.ora目录:G:\oracleDB\product\11.2.0\dbhome1\NETWORK\ADMIN listener.ora不指定监听器,默认listen监听1:新建监听LISTENER1=(DESCRIPTIONLIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522))))2:启动监听lsnrctl start listener1;

$ lsnrctl status listener1;–查看监听状态

没有任何服务注册在该服务器上,客户端无法连接到该服务器,因为涉及到服务器名的问题,只有客户端将《服务器名》传给监听器之后,监听器服务经过处理才能建立客户端到数据库服务器的连接。

动态注册

修改完毕,立即生效,无需重启。

PMON进程将当前实例的服务名注册到同一台服务器上,默认在1521端口上监听的监听器就是名为listener的监听器

Show parameter service_name;–查看当前数据库的服务名

Show parameter local_listener;–local_listener控制动态注册到的监听器也就是将数据库动态注册到这个监听器上

修改参数local_listener动态注册orcl数据库(上述查询的当前数据库服务名)

Alter system set local_listener=’(address_list=(address=(protocol=tcp)(host =localhost)(port=1521)))’;

静态注册

将数据库的信息直接注册到监听器配置文件中,只要监听启动就会静态注册该服务,必须重启监听器才能生效。

$ lsnrctl stop listener;–重启监听器

Oracle默认添加了静态。修改3个参数SID_NAME/ORACLE_HOME(不需要修改,默认路径是对的)/GLOBAL_DANAME

连接测试

作为客户端需要有自己的配置,客户端需要修改tnsnames.ora将客户端的服务名与监听器服务名之间建立映射关系,并告诉客户端软件要连接到数据库服务器的实体信息,这些信息包括通信协议,数据库服务器主机地址以及使用连接端口等。

该文件与listener.ora同目录。

tnsping localhost;–测试客户端到监听器是否畅通
select sid,serial#,username,program,machine,status,port from vsession where username=’SYSTEM’;–确认该连接的存在和相关进程信息

$lsnrctl help;–查看相关命令信息

Start:启动监听程序,默认启动名为listener的监听程序,不是默认需要指定监听器名

Stop:关闭监听程序,默认启动名为listener,不是默认监听程序则需要指定

Service:查看监听为连接请求监控的服务内容

Reload:允许重载监听程序,如监听文件更改,可以使用该指令使得修改生效,在重载过程中已经建立连接的客户机继续保持连接

Set:设置监听管理密码,防止未授权而操作监听器

1:多监听设置,在一个服务器上可以运行多个监听程序,需要设置CONNECT_TIME_FAILOVER参数:当客户机使用新的监听程序建立连接前需要等待通过当前监听程序连接的时间长度。

2:设置队列长度,如果有大量客户请求连接导致监听程序无法提供足够的资源,此时发生的监听程序失败难以避免,控制客户连接到监听器的数量,告诉监听器可以为多少个连接提供并发服务。

3:设置监听程序密码

Set password/change_password/save_config;

客户端配置

客户端连接到服务器需要知道数据库服务器的ip,端口,协议等等,这些都在数据库客户端设置。信息存储在G:\oracleDB\product\11.2.0\dbhome_1\NETWORK\ADMIN\ tnsnames.ora文件中。该文件主要设置连接到每一个数据库服务器的实体信息。

执行流程,

当使用sqlplus或其他方式初始化一个客户端连接时,oracle net组件会提供数据库详细信息(这些信息存储在tnsnames.ora文件中,信息包括数据库服务器的网络地址,通信协议以及连接端口。)

通过这些信息与监听程序建立通信,而后监听程序会将该连接交给SERVICE_NAME指定的数据库,

一旦数据库服务器确定了用户名和密码匹配则建立客户端的连接。

此时tnsnames.ora起到服务名解析作用,将一个服务名解析为一个网络连接实体,确定要连接的具体的数据库服务。

本地命名

在tnsnames.ora中添加

Address:监听器实体信息

Connect_date使用的服务器体系架构和对应的数据库服务名

SERVICE_NAME:建立连接后,监听器根据此值找到注册的数据库

测试连接

Connect username/password@net_service_name

Sqlplus scott/tiger@orcl

简单命名

不需要配置

Connect username/password@[//]host[:port][/service_name]

//:可选

Host:必须,可以主机名也可以是ip

Port:可选,是默认端口可不写

Service-name:指定数据库服务器的服务名,默认该主机名不选。如果主机名和数据库服务器名相同,可省略。不同,必须提供数据库服务名的服务名

Sqlplus scott/tiger@localhost:1521/orcl

ORACLE数据库服务器支持的2种连接方式

专有连接方式,一个用户连接对应一个数据库服务器进程。耗费内存资源(PGA),减少竞争,长事务有用

共享连接方式,多个用户使用一个数据库服务器(分时复用),对于事务执行时间短且服务器资源受限的系统是有利的。

服务器进程

无论哪种连接方式连接数据库服务器都需要进程参与

专有服务器:采用专有服务器时,数据库服务器会针对每一个连接产生一个服务器进程,这个进程就是专属这个连接,数据库连接于服务器上的一个进程或线程是一一对应关系

共享服务器:采用共享服务器时,数据库服务器的一个服务器进程服务于多个会话,即使用服务器进程池为多个会话服务,在建立连接时,客户端会首先连接到调度器,由调度器协调数据库服务器的资源。

共享连接

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

在使用共享服务器连接时,必须使用oracle NET协议软件。不使用则无法使用共享服务器

客户端调度器SGA(请求队列)共享服务器

客户端调度器SGA(响应队列)共享服务器

共享连接涉及初始化参数

调度器(DISPATCHERS):负责将用户请求传递放入SGA,并负责监控SGA中的响应队列,如果有返回数据则将数据返回给用户。



共享服务器进程(shared_servers):设置共享服务器进程的数量

最大共享服务器进程(Max_shard_servers):该参数设置数据库服务器支持的最多的服务器进程数量

共享服务器会话数(shared_server_session):该参数设置当前数据库服务器在共享模式下的最大会话数,而专用会话数=session-共享会话数

共享连接的工作过程

PMON定期将每个Dispatcher地址,以及工作负载注册到这个监听器里面。

1. 用户进程连接监听器

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

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

4. Dispatcher接受到用户进程发出的请求以后,会将该请求放入请求队列(SGA),请求队列被所有的dispatcher共有

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

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

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

共享连接的配置

1:配置dispatcher进程的数量

Alter system set dispatchers=’(protocol=tcp)(dispatchers=3)’

属性

Address:dispatchers监听所在网络地址

Description:disptachers监听所在网络地址描述,包括网络协议地址

Protocol:指明disptachers使用的网络协议

指定在哪个地址上监听,dispatchers数量为2

Dispatchers=’(address=(protocol=tcp)(host=127.0.0.1))(dispatchers=2)’

设置数量时需要设置max_dispatchers,限制最大数量

Alter system set max_dispatcheres=5;

2:配置共享服务器进程的数量

Alter system set shared_servers=5;

Alter system set max_shared_servers=20

3:配置共享会话数

Alter system set shared_servers_session=100

show parameter session;–查看最大会话数

最大会话数(session)-共享会话数(shared_servers_session)=专有连接会话个数

共享连接常见问题

有些操作不能使用共享连接

1. 启动关闭数据库实例

2. 创建表空间和数据文件

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

有些操作不适合共享服务器连接

共享服务器适合oltp,对于运行时间较长的操作,不适合采用(如备份)

专有连接

专有连接中,用户进程没有发出命令,服务器进程处于空闲状态,资源一直占用,共享模式中,只要是服务器进程空闲,就可以处理其他用户发出的命令,因此服务器进程的数量减少,对资源的利用更加高效。占用的pga减少,可以支持更多的用户。

这是共享服务器的优势,相反就是专有服务器的劣势。

执行流程,客户应用程序通过api连接到数据库,而这些api知道如何将sql查询传递给数据库,并处理返回的数据。这些api知道如何将数据库请求打包成网络调用。而专有服务器进程则知道如何解包这些网络应用。整个过程由网络协议软件或oracle net支持

客户端oracle net专有服务器进程SGA

使用本地命名连接数据时,使用默认专有连接。

数据库驻留连接池(DRCP)

减少内存使用,同样的内存资源支持更多的用户

工作原理:DROP使用一个名为BROKER的中介,当用户连接时,它负责分配一个可用的池服务器,如果池中没有空闲池服务器,只要没有超过池服务器的最大值,BROKER就可以创建新的池服务器,如果达到最大池服务器数目,则BROKER将用户连接放入请求队列,直到有空闲池服务器为止。

DROP使用的内存量只与活跃的池服务器数量有关。这是他与上述2中连接方式相比的优势

Select connection_pool,status,maxsize from dba_cpool_info;–查看连接池信息

Status默认禁用。

Exec dbms_connection_pool.start_pool();–开启DRCP

Exec dbms_connection_pool.stop_pool();–关闭DRCP

配置DRCP

DBA_CONNECTION_POOL:实现修改或设置配置

CONFIGURE_POOL:设置参数值

ALTER_PARAM:修改参数

INACTIVITY_TIMEOUT:池服务器禁止服务前的最大空闲时间

MAX_LIFETIME_SESSION:每个池会话的存活时间

MAX_USE_SESSION:一个池服务器放到连接池的最大次数

MAXSIZE/MINSIZE:池服务器最大和最小的个数

MAX_THINK_TIME:用户获得池服务器后保持不活动的最大时间

上述参数可以通过dbms_connection_pool包中的过程来设置

查询默认连接池的状态以及相关参数

Col connection_pool for a30

Set line 120;

Select connection_pool,status,maxsize,minsize,inactivity_timeout from dba_cpool_info

exec dbms_connection_pool.alter_param(”,’maxsize’,’70’);–设置池服务器最大数

配置TNSNAMES.ora,使该客户端的连接使用DRCP连接池功能

图中SERVER设置为POOLED

select pool_name,num_open_servers,num_requests,num_hit,num_misses from v$cpool_stats;–查看池服务器状态信息

num_open_servers:服务器池中空闲和被占用的服务器数量

num_requests:客户端请求服务器池中的服务器的次数

num_hit:客户端请求池中的服务器且获得服务器的次数

num_misses:客户端请求池中的服务器而没有获得该服务器的次数

查询DRCP下用户和进程信息(使用drcp连接的用户),其中包含会话id,进程id信息

Select session_addr,username,process_id,connection_status from v$pool_conn_info;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: