4

oracle拨云见日第6篇之网络配置

 1 year ago
source link: https://blog.51cto.com/51power/5342413
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前面的几篇文章中,我们介绍了:oracle的主流版本、oracle数据库的各种方式安装。

经过千辛万苦,我们的oracle环境搭建起来,我们学习oracle之旅的第一步迈开了。Oracle安装完成还不能使用,要想使用它就要做网络相产的配置:监听和传输文件。

Oracle监听器

Oracle监听器运行于数据库服务器端一个进程,用于监听所有来自客户端的连接请求,并提供处理数据库服务方面的请求。

示意图如下:

oracle拨云见日第6篇之网络配置_传输文件

2、客户端的请求各类

我来介绍一下,2种常见的方式

(a)、常用的数据库开发工具比如:PLSQL Developer和SqlDeveloper,它们通过配置要连接数据库相关的参数,向数据库发起连接请求

(b)、java编程中的jdbc,运行程序时,向数据库发起连接请求

以上2种连接请求,客户端要和Database server端网络畅通,否则无法正常连接

3、请求监听的进程

语法 :ps -ef|grep oracle实例名

oracle拨云见日第6篇之网络配置_plsql_02

通过查询结果可以看出来,现在没有任何客户端,通过网络向数据库发起连接请求。

使用plsqldev.exe通过网络向数据库发起连接请求。

oracle拨云见日第6篇之网络配置_oracle_03
oracle拨云见日第6篇之网络配置_oci_04

再次查看Database server的进程

oracle拨云见日第6篇之网络配置_plsql_05

通过查询结果可以看出来,现在有1台客户端,通过网络向数据库发起连接请求,产生的进程标识为oracleecom (LOCAL=NO)。

至此,我讲的客户端请求,都是通过网络远程向数据库发起连接请求,在数据库端产生的进程标识是LOCAL=NO的。如果在数据库端本地登录,在数据库端产生的进程标识是LOCAL=YES的。我来演示一下,详细如下图所示。

数据库端本地使用sqlplus登录

oracle拨云见日第6篇之网络配置_监听_06

再次查看Database server的进程

oracle拨云见日第6篇之网络配置_plsql_07

通过查询结果可以看出来,现在有2台客户端,通过网络向数据库发起连接请求,产生的进程标识为oracleecom (LOCAL=NO)和oracleecom (LOCAL=YES)。

为什么在此处要给大家扩展讲一下进程,因为早些年在联通做DBA时,我们的RAC集群进程突然爆增,手机短信报警疯了。当时就是通过进程发现的,当时发现产生了大量的oracleecom (LOCAL=NO)进程。最后定位到问题,是开发那边的数据库连接池没有配置好,申请完session后,没有正常释放。如果有兄弟对这个案例感兴趣的,可以单独找我聊聊,在此处我就不过多的赘述了!

4、Oracle连接方式

专有模式:为每个用户提供一个单独的到服务器的会话通道,其特点是响应客户端请求速度快,但PGA占用较多。

共享模式:由多个用户连接共享一个进程,多个用户共享一个会话通道。

5、主要功能

(a)、监听客户端请求,监听器运行在数据库服务器之上,与Oracle实例(可为多个)相关关联,是一个专门的进程process。在Windows的服务项目或者Linux的运行进程列表中,都会看到对应的运行进程,Windows上名为TNSLSNR,Linux/Unix平台上是lsnrctl,监听器守候在服务器制定端口(默认为:1521),监听客户端的请求。

(b)、为客户端请求分配Server Process,监听器只负责接收请求,之后将请求转接给Oracle

Server Process,在Oracle的服务模式下,客户端进程是不允许直接操作数据库实例和数据,而是通过一个服务进程Server Process(也称为影子进程)作为代理。监听器接受到请求之后,就向操作系统(或者Dispatcher组件)要求fork(或分配)一个Server

Process与客户端相连。

(c)、注册实例服务,本质上讲,listener是建立实例和客户端进程之间联系的桥梁。Listener与实例之间的联系,就是通过注册的过程来实现的,注册的过程就是实例告诉监听器,它的数据库数据库实例名称instance_name和服务名service_names。监听器注册上这样的信息,对客户端请求根据监听注册信息,找到正确的服务实例名称,目前Oracle版本中,提供动态注册和静态注册两种方式。

(d)、错误转移failover,Failover是RAC容错的一个重要方面功能,其功能是在数据库实例崩溃的时候,可以自动将请求转移到其他可用实例上的一种功能。可以提供很大程度上的可用性(Availability)功能,这个过程中,发现实例已经崩溃,并且将请求转移到其他实例上,就属于是listener的功能。

(e)、负载均衡衡量,在RAC架构中,Oracle实现了负载均衡。当一个客户请求到来时,Oracle会根据当前RAC集群环境中所有实例的负载情况,避开负载较高的实例,将请求转移到负载较低的实例进行处理。在早期RAC版本中,负载轻重的衡量是根据监听器当前维护连接数目来确定的,而不是实时查看多实例的负载,RAC环境中的监听器之间进行沟通通信。

6、配置监听器

(a)、方式1 直接编辑监听的配置文件listener.ora

 vi $ORACLE_HOME/network/admin/listener.ora

#listener.ora Network Configuration File:/oracle/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

#Generated by Oracle configuration tools.

SID_LIST_LISTENER=

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME= 实例名)

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

(SID_NAME = 实例名)

LISTENER =

(DESCRIPTION=

(ADDRESS =(PROTOCOL = TCP)(HOST = 数据库本机IP)(PORT = 默认端口1521))

(b)、方式2  图形界面1

oracle拨云见日第6篇之网络配置_oracle_08
oracle拨云见日第6篇之网络配置_oci_09

(c)、方式2  图形界面2

oracle拨云见日第6篇之网络配置_plsql_10
oracle拨云见日第6篇之网络配置_oracle_11

7、常用命令

启动指定的监听器

lsnrctl start

关闭指定的监听器

lsnrctl stop

显示监听器的状态

lsnrctl status

输入本条命令后:显示监听器是不是活动的,日志与跟踪文件的位置,监听器已经持续运行了多长时间,以及监听器所监听的任务。如下图所示:

oracle拨云见日第6篇之网络配置_oci_12

说到这块,oracle的监听器的技术点,已经够大家入门的了。要想连接oracle Database我们还差一个知识点,就是如何查询oracle的实例名。

oracle传输文件

传输文件位于客户端,用于配置客户端连接服务端数据库连接信息。客户端服务配置信息包括:服务器地址、服务名称(数据库实例)、端口号。

客户端根据传输文件中的SERVICE_NAME和地址(ADDRESS)\端口(PORT),到这个地址去访问监听器。然后监听器根据文件lisnter.ora文件中的GLOBAL_NAME来判断是否有一个 GLOBAL_DBNAME 和 SERVICE_NAME 相等。如果相等,则建立客户端到SID标识的服务端实例的连接。

2、配置传输文件

(a)、方式1 直接编辑监听的配置文件tnsnames.ora

vi $ORACLE_HOME/network/admin/tnsnames.ora

# tnsnames.ora Network Configuration File: /oracle/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

服务别名 =

 (DESCRIPTION =

   (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = 服务端数据库的IP)(PORT = 默认监听端口1521))

   (CONNECT_DATA =

     (SERVICE_NAME = 服务端数据库的SID)

(b)、方式2  图形界面

oracle拨云见日第6篇之网络配置_oracle_08

选择:本地网络服务名配置

oracle拨云见日第6篇之网络配置_oci_14

添加新的服务名

oracle拨云见日第6篇之网络配置_plsql_15

服务端数据库的SID名

oracle拨云见日第6篇之网络配置_oci_16

TCP协议

oracle拨云见日第6篇之网络配置_oracle_17

服务端数据库的IP

oracle拨云见日第6篇之网络配置_plsql_18

测试配置是否正常

oracle拨云见日第6篇之网络配置_传输文件_19

给本次配置的服务名起个别名,方便程序连接

oracle拨云见日第6篇之网络配置_oci_20

相关软件以百度云盘的方式,分享出来(盘换成拼音pan):

链接:https://盘.baidu.com/s/1f__AcVAkqAo3EzFNvFhGwA  

提取码:feig

1、安装instantclient

此软件负责给你电脑提供传输文件功能,它非常小,大小只有几十M。如果没安装它,你要单独安装Oracle client,Oracle client几百M。

a、解压文件

我将它解压到D盘根目录了,注意你自己的解压路径

oracle拨云见日第6篇之网络配置_plsql_21

b、编辑传输文件

oracle拨云见日第6篇之网络配置_oci_22

在tnsnames.ora中配置

oracle拨云见日第6篇之网络配置_监听_23

2、安装PLSQL_Developer

PLSQL Developer是款编程行业常使用的PL/SQL数据库管理工具。PLSQL Developer正式版具有语法加强、SQL和PL/SQL帮助、对象描述、代码助手、编译器提示、PL/SQL完善、代码内容、代码分级、浏览器按钮、超链接导航、宏库等许多智能特性。并且PLSQL Developer还可满足要求性最高的用户需求,使您能方便地创建你的客户端/ 服务器应用程序的服务器部分。

a、解压文件

我将它解压到D盘根目录了,注意你自己的解压路径

oracle拨云见日第6篇之网络配置_监听_24

b、配置OCI库

在PLSQLDeveloper中如果不配置OCI文件,它是识别不到instantclient中配置的传输文件,我们来看一下。

oracle拨云见日第6篇之网络配置_plsql_25

打开PLSQLDeveloper客户端后,登录需要的信息有3部分:用户名、口令、数据库。其实登录的信息有4部分,缺少了角色部分。

我们不登录,点击取消按钮,配置OCI文件,如下所示。

oracle拨云见日第6篇之网络配置_oci_26
oracle拨云见日第6篇之网络配置_plsql_27

配置完成后,一定关闭PLSQL_Developer,进行重启。

3、登录PLSQL_Developer

打开PLSQLDeveloper客户端后,登录需要的信息有4部分:用户名、口令、数据库、角色。

oracle拨云见日第6篇之网络配置_plsql_28
oracle拨云见日第6篇之网络配置_oracle_29
oracle拨云见日第6篇之网络配置_传输文件_30

到此本篇文章就结束了,送给那些:

       1、准备学习Oracle的朋友们

       2、已经学习了Oracle,但是没有在Linux环境下安装成功oracle的朋友们

       3、对Oracle感兴趣、对Linux感兴趣的朋友们

       4、Oracle刚入门的朋友们

    有一段时间没有写关于Oracle的博文了,感谢一直关注我的新老朋友,有你们的支持我会一起写下去! 


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK