- Oracle数据库管理与维护实战
- 何伟娜 常建功
- 97字
- 2024-12-22 05:11:05
第3章 Oracle Net体系结构和云体验
本章介绍Oracle的网络体系结构和云计算,通过本章,读者可以了解Oracle的网络通信机制和Oracle各种网络组件的作用。如果读者对Oracle网络不大了解,也可以阅读本章来了解Oracle网络的基本概念。
3.1 Oracle网络概述
Oracle是分布式的大型数据库,除了具有强大的数据存储、数据处理处理功能外,还具有强大的网络互连功能。Oracle通过网络来连接分布的数据库,并且通过网络运行其他Oracle的应用。Oracle数据库是针对网络构建的,随着版本的升高,网络功能越来越强。
3.1.1 网络的连接方式
网络的连接方式有单层方式、两层方式和N层连接方式。单层方式是最早的也是最简单的连接方式,它的配置和管理都很容易。单层体系的终端通常与大型机相连,不使用任何网络协议而直接相连,对数据的所有处理都在服务器上进行,终端只用来显示和对服务器发出控制命令。图3-1是单层体系结构的示意图。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0110_0001.jpg?sign=1738951188-lUMKnpoeZy8HGAeOcrnJ6kPbcFOqvIHg-0-cb009776bdf146a8efeb2c7fa5891a91)
图3-1 单层体系结构
网络已从基于终端的系统发展到多层系统。网络之间可以包含不同的操作系统、不同的协议。针对不同的应用,Oracle提供了不同的连接方式,有两层的C/S(Customer/ Server)体系和N层的体系。两层的C/S体系一般应用于局域网内,N层体系基于Internet。
两层体系结构中,客户端使用网络协议通过网络连接到服务器,现在使用较多的是TCP/IP协议。图3-2是两层体系结构示意图。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0111_0001.jpg?sign=1738951188-Hpu7mwBfBKnpsId7gBAICeYkCduMRD2x-0-4f9c4a529a56158b40d6df6f09d76fb1)
图3-2 两层体系结构
两层体系结构的优点是可以在客户端上共享应用的处理负担,但缺点是需在每个客户端都要安装大量软件,存在大量冗余。两层体系结构适合于小规模的工作环境。
N层体系结构是对两层体系结构的一个改进,N层体系结构的客户不直接和数据服务器通信,而是通过一个或多个中间层,如图3-3为三层体系结构。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0111_0002.jpg?sign=1738951188-tPdyPdyF0mk2q8sHYtblf4lvK8rBagS6-0-e861e8bc29ba7f5d6d7c907f95b66e0b)
图3-3 三层体系结构
N层体系结构有更好的伸缩性,它引入了中间件的概念,例如应用服务器和Web服务器,使用中间层能够做到以下几点。
❑ 使用中间层可以在不同的网络协议之间传送数据。
❑ 使用中间层可以安全性更高,能够控制客户对服务器的使用。
❑ 使用中间层可以工作分工更明确和专业,各层计算机各司其职。
❑ 使用中间层可以减轻服务器的负担,平衡服务器的负载,并通过中间层对用户访问分流。
❑ 使用中间层可以便于系统的维护管理。
现在的很多应用都是基于N层的体系。N层体系是合理和适用的一种体系,尤其是现在Internet的普及,更推动了N层体系的应用。
3.1.2 Oracle的网络连接方式
Oracle网络专门提供了一种分布式异构型的网络连接方式,更便于用户管理、配置网络。Oracle Net存在于Oracle的客户端和服务器上,使用Oracle的网络组件Oracle Net建立数据库和客户端的会话。Oracle提供三种连接方式。
❑ C/S的连接方式
❑ 使用应用服务器的Web连接方式
❑ 不使用Web服务器的Web连接方式
1.C/S的连接方式
Oracle支持C/S的连接方式,图3-4是C/S的连接模型。Oracle Net位于网络协议支持层(Oracle protocol support,一个管理应用如何连接网络、如何分拆数据包的Oracle层)之上。图3-4用TCP/IP协议连接客户端和数据库服务器。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0112_0001.jpg?sign=1738951188-EWj02VbRGHb9B2HBxpy6xUKAedOuLg1H-0-6ca17a4dd1d6521a17f55840949191bf)
图3-4 Oracle的C/S结构
当用Java语言开发的应用程序时,Oracle提供了JDBC连接方式。JDBC有两种:JDBC OCI驱动方式和JDBC Thin驱动方式。
安装了Oracle客户端后就可以使用JDBC OCI驱动方式连接服务器,如图3-5所示。Java的客户端应用程序通过JDBC OCI驱动和Oracle Net相连,再由Oracle Net和服务器相连。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0112_0002.jpg?sign=1738951188-LEkjC8TvwHuGOh6omELqShWtKdQr7Jko-0-b4de67c7b2029a77b9349ec2818dc3f2)
图3-5 使用JDBC OCI驱动
JDBC Thin驱动方式不需要安装Oracle客户端而可以直接和服务器相连,Java程序员经常使用这种方式访问数据库。因为它可以在完全没有Oracle的环境下使用,所以对于可嵌在Web浏览器中的Applet应用,就可以用JDBC Thin驱动方式连接数据库。
2.使用应用服务器的Web连接方式
从客户端浏览器连接到数据库服务器类似于两层体系中客户端连接到服务器,浏览器通过HTTP协议向Web服务器发送连接请求,这种连接方式即前面讲的N层体系结构,如图3-6所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0113_0001.jpg?sign=1738951188-cuXo0ddfbkJOLao8eHueiGqEaY3Z6kP7-0-eec3fc8db6f6fecaac7c0c6e77f27501)
图3-6 使用三层体系结构
Oracle的Web服务器是Apach Web服务器,当用户从浏览器中发送HTTP请求时,该请求被送往Apach Web服务器,由Apach Web服务器调用相应的中间组件,如EJB、Servelet等,再由这些中间件访问数据库。
3.不使用Web服务器的Web连接方式
Oracle还支持一种浏览器不通过Web服务器而直接向数据库服务器连接的机制。图3-7表示直连数据库服务器的两种方式,第一种通过HTTP协议和服务器连接,第二种通过一个叫JavaNet的组件相连。JavaNet是一个Java版的Oracle Net。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0113_0002.jpg?sign=1738951188-cYrPTCk2bGg4kvrfQyoGduy5Mc8wc7Kb-0-46fa267d98262e86ea8b7b42f963b55e)
图3-7 浏览器直连数据库服务器
3.2 Oracle Net Services
Oracle的网络组件随服务器的版本不同而有所不同。Oracle 7用SQL*Net v1、SQL*Net v2,Oracle 8使用Net8,Oracle 8i使用Net 8i,从Oracle 9i开始网络组件称为Net Services,它由一组组件组成,包括以下几部分。
❑ Oracle Net
❑ Oracle网络监听(Oracle Net Listener)
❑ Oracle连接管理器(Oracle Connection Manager)
❑ 网络工具(Networking Tools)
❑ Oracle高级安全(Oracle Advanced Security)
3.2.1 Oracle Net
Oracle Net在3.1.2节已提及,Oracle Net是Net Services用于远程应用程序和服务器通信的部分。Oracle Net存在于Oracle数据库服务器和客户端,用来建立和维护客户端和服务器连接以及服务器和服务器之间的连接,并且在它们之间进行数据交换。这种连接是基于标准的网络协议,如TCP/IP。
Oracle Net Listener是处在服务器端的一个组件,它监听来自客户端或其他服务器的连接请求,将连接请求传给上层的Oracle Net。Oracle Net Listener里有一系列的协议,只有客户端用的是同一种协议,它能接受这个请求。它是把Oracle网络联系起来的黏合剂。
Oracle Net还应用在诸如Oracle应用服务器和Oracle连接管理器中,这些组件使得N层体系结构能够实现,主要包含在如下两个网络组件里。
❑ Oracle网络基础层
❑ Oracle协议支持
1.Oracle网络基础层
Oracle网络基础层位于Oracle网络的上层,它的上层直接和应用程序通信,而下层通过Oracle协议支持和标准协议通信,如图3-8所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0114_0001.jpg?sign=1738951188-sBQYxjufMqVmECc6rfwyYCdR3lCpHCW3-0-ca63e4304a0b6ac1a689ba2684a2dd19)
图3-8 Oracle Net结构
Oracle Net基础层使用了一种称为透明的网络层技术(Transparent Network Substrate,TNS)。TNS是所有的标准协议上的一个普通接口。客户端上的Oracle Net基础层收到Oracle请求后,会识别以下几点。
❑ 数据库服务器或目的地的地点
❑ 是否在连接中包含一个协议
❑ 如何处理客户和数据库服务器之间的中断
2.Oracle协议支持
Oracle通过Oracle协议来支持多种标准协议,它将TNS功能映射成客户/服务器中使用的标准工业协议。表3-1是Oracle支持的标准协议。
表3-1 标准工业协议
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0115_0001.jpg?sign=1738951188-w48r8WJcZVl7JQmPxWS2HdX4bbK5vIbl-0-db472fc4739f9df56d4822b778afc1a2)
3.2.2 Oracle网络监听
Oracle网络监听用来接收应用程序的连接请求,调整服务器的负荷。监听处于Oracle Net的基础层之上,图3-9说明了监听在数据库服务器中的位置。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0115_0002.jpg?sign=1738951188-fITHIXmAtTbmXV315aj0INM8LPRj2Y91-0-06b0c0c175542d724223ed1cc101b6da)
图3-9 Oracle监听
客户端连接到Oracle网络监听后,该网络监听先选择一个适当的服务器进程,然后把这个请求交给这个服务器进程处理。一旦Oracle网络监听为客户端和服务器建立起连接,它就不再参与两者之间的通信。
Oracle网络监听可以通过配置设置监听一个或多个网络协议地址。所谓网络协议地址就是标识网络对象的网络地址,通常是由协议名称、主机名和端口地址组成。客户端只有配置成与Oracle监听一致的协议地址才能建立连接。
3.2.3 Oracle连接管理器
Oracle连接管理器相当于一个路由器,通过它可以将客户请求传送到下一个节点或者直接连接到数据库服务器,通过连接管理器可以实现多路复用、访问控制、协议转换等。
利用连接管理器可以用单个物理协议实现多路会话,这样可以充分利用资源,以节约连接服务器的成本,并且使用少数几个数据库连接,就能实现大量用户的并发访问数据库,如图3-10所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0116_0001.jpg?sign=1738951188-849OpW4MI7jORCErPtq7DZDpRR6kutIw-0-148c3d631cc647671f58341117eb96ea)
图3-10 多路复用
用户也可以将连接管理器设置成访问控制过滤器,即设置一些过滤规则,禁止一些IP或主机访问数据库,如图3-11所示。配置连接管理器中的规则参数可以是以下几种。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0117_0001.jpg?sign=1738951188-QcPChIinONjJOTTSZcjh5kDhvzYs6XCG-0-e9789555f1e5b4330b2b40eb25e98805)
图3-11 连接管理器过滤器
❑ 客户端的主机名或IP
❑ 服务器的主机名或IP
❑ 目标数据库的服务名
❑ 客户端要用的高级安全选项
图3-11中有多个客户端要求访问数据库,前两个连接管理器允许其访问数据库,后一个未能通过连接管理器的审核,所以不能访问服务器。连接管理器在客户端和服务器中间加了一层安全审核,这样更能确保数据库服务器的安全。
连接管理器还可以和第三方的防火墙软件集成到一起,也可以和其他产品一起作为一个应用网关。利用这个应用网关,用户可以控制局域网内或互联网上的计算机访问数据库或Web服务器,如图3-12所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0117_0002.jpg?sign=1738951188-PZEqJZnMsGVYraXhDIgDDQWlBMibUc9f-0-c1a9ab159c5bc6292bb97cd21742f18a)
图3-12 使用网关
图3-12中,Oracle数据库和应用服务器放在安全区内,互联网上或局域网上的客户端必须经过应用网关才能访问安全区内的资源,这对于运行在互联网上的服务器有十分重要的作用。
3.2.4 网络工具
为方便用户配置和管理数据库网络,Oracle提供了一套网络配置工具,这些工具提供了向导式的风格以简化用户的操作。网络配置工具支持两种方式(图形方式和命令行方式)来对数据库配置、维护和管理,主要包含以下几个工具。
1.Oracle Net Configuration Assistant
该工具用于配置网络组件以及网络连接中涉及到的各种名字。在安装过程中,Oracle会调这个工具来配置基础网络组件。同样在安装完后,用户也可以调用这个工具来重新配置。可配置的组件有如下几个。
❑ 命名方法
❑ 网络服务名称(存在tnsnames.ora文件中)
❑ 监听器名称及协议地址
❑ 目录服务的使用
2.Oracle Enterprise Manager
同数据库管理器一起,企业管理器提供了一个可以配置网络的集成环境。用OEM可以用来配置以下功能。
❑ 监听器功能
❑ 命名定义配置(例如连接描述符)
3.EM控制台
EM(Enterprise Manager)控制台是一个基于网络的接口,可以通过浏览器来访问OEM控制台,一般数据库的典型安装都会安装上这个组件。
在EM控制台上用户可以像用Oracle Enterprise Manager一样管理数据库,只不过EM控制台是基于Web的。这里要注意两者的区分,这两个概念容易混淆。
4.Oracle Net Manager
Oracle Net Manager是一个可以用来创建和管理大部分客户端和服务器端的网络文件。Oracle Net Manager从Oracle 7版本就开始使用,它是从以前版本的网络管理器演变而来,一直到现在的Oracle 12c版本,Oracle公司都一直在改进这个工具的功能。
用Oracle Net Manager管理网络文件是一种很好的习惯。由于网络文件具有特定的结构,用Oracle Net Manager能保证这些文件以正确的方法创建和更改。如果网络文件有错误,网络连接就有可能出现问题,所以最好用Oracle Net Manager管理网络文件。
Oracle Net Manager可以配置以下功能。
❑ Oracle Net Manager可以建立和配置监听器。
❑ Oracle Net Manager可以定义简单名称。简单名称为连接描述符和服务位置指定信息。
❑ Oracle Net Manager可以定义命名方法。
EM和Oracle Net Manager能配置相同的功能,但两者之间的配置有些不同,如表3-2所示。
表3-2 EM和Oracle Net Manager网络配置功能的异同
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0119_0001.jpg?sign=1738951188-d5VhUzuiQeEyyNLRwhT1MafWfXfRGN69-0-4f40fb07fca2e3d557b97c086aeeff6a)
5.Oracle lnternet Direcory Configuration Assistant
Oracle Internet Direcory Configuration Assistant用来配置Oracle Internet Directory。其实它配置的文件就是ldap.ora文件。ldap.ora文件还可以用Oracle Net Configuration Assistant来配置。
6.命令行实用程序
命令行实用程序就是用类似于使用Dos命令的方式来配置、管理Oracle网络。大部分的网络配置都可以用命令行实用程序管理。命令行实用程序的提示符为:lsnrctl>。
3.2.5 Oracle高级安全性
随着Internet的普及,网络系统的数量越来越多,规模越来越大,访问系统的用户越来越多,复杂度也越来越高,同时信息的安全性要求也随之越来越高。为应对这种要求,Oracle高级安全选项(Oracle Advanced Security)提供了一套提高数据库环境安全的机制,这套安全机制不但能保证信息的传输安全,还能够对企业内部用户进行身份验证。
Oracle的第一个高级安全选项就是信息加密功能。Oracle用行业标准算法,如RSA RC4、标准DES、Triple DES和MD5来加密。
Oracle高级安全选项同时支持对登录到Oracle服务器的用户身份进行验证。这种身份验证可以使用令牌卡(有一张物理卡和一个用户标识PIN号)、指纹识别、公共密钥等。
另一个选项就是客户可以使用单一登录机制,这种机制就是利用一个集中的安全认证服务器,如图3-13所示。用户可以使用一个统一的用户名和口令连接到企业内的任何一个Oracle数据库服务器。利用单一登录可以简化管理员在复杂网络环境中的大用户量权限矩阵。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0120_0001.jpg?sign=1738951188-T2KRZaMI0tWio9Oeeyrfh9eIHdkxMBHK-0-b0cfac5ea5418cd85ca5e446496069df)
图3-13 使用认证服务器
3.3 Oracle网络体系结构
前面讲了Oracle的连接方式,简要介绍了主要的几个网络组件。本节将详细介绍Oracle的网络体系结构。
3.3.1 Oracle Net C/S连接的栈结构
Oracle软件由一系列程序组成,这些程序形成栈结构。每个程序负责网络通信的不同方面,并且对应网络栈结构的一层。
OSI模型(开放系统互联)是一个广泛使用的模型,它将网络通信分成七层,每层负责不同的工作。上面几层负责与应用程序交互,下面几层负责通过物理网络的数据传输。各层之间可以交换数据和状态信息。表3-3给出了具体的各层及各层负责的功能。
表3-3 OSl各层及各层功能
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0121_0001.jpg?sign=1738951188-3KFU2o4mGf511554bQNvfsv5sazYDBrI-0-49a2a1d12b77c4c6051d20a6011579fa)
OSI模型是Oracle通信栈的基础,Oracle通信栈和OSI模型的每一层都一一对应。图3-14描述了Oracle Net层与OSI各层的关系。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0121_0002.jpg?sign=1738951188-YdgnuWrOTl9lk1wZqXkYslagnC7Cai3d-0-1cc7ca4c15ec03851062f61880713e58)
图3-14 OSI和Oracle Net各层关系
1.应用层(客户端)
Oracle Net应用层的功能与OSI模型中应用层的功能一样,该层负责与用户的交互,与Oracle调用接口层通信。
2.Oracle调用接口层(客户端)
该层负责SQL处理,在服务器端的相应层为:Oracle程序接口(OPI)层。OCI层负责打开、关闭指针,绑定服务器共享存储空间的变量,取行数据。OCI是开放结构,程序员可以编写与此层直接交互的应用程序。
3.TTC层(Presentation)
如果客户端和服务器端不是同种操作系统,那么通信双方的字符集就有可能不同。TTC层负责客户与服务器之间的数据类型和字符集的转换。连接建立以后,TTC能检测出两端的数据类型是否一致。TTC层类似于OSI中的表示层。
4.Oracle Net基础层
Oracle Net基础层负责客户端和服务器端连接的建立和维护,并负责两者之间的数据交换。Oracle Net基础层用透明网络底层或TNS层实现这些的功能。TNS是通信栈中一个整体部件,和OSI模型中的会话层类似。TNS是一个十分灵活的结构,能和很多网络协议通信。在这些网络协议之上,TNS提供了一个单一的、统一的接口。TNS提供了点对点的通信机制,通信双方利用这个机制能直接通信。
Oracle Net基础层将信息发给Oracle协议适配器层(OPA)。Oracle Net有以下几个子层。
❑ 网络接口子层(NI):网络接口子层提供了一个通用接口,客户和服务器可以通过它处理各种程序。该子层还可以处理中断请求。
❑ 网络路由(NR)子层:相当于网络路由器的功能,客户通过网络路由子层找到服务器。
❑ 网络命名(NN)子层:将网络别名转换为Oracle Net地址信息。
❑ 网络认证(NA)子层:网络认证子层负责网络认证的管理。
❑ 网络会话(NS)子层:网络会话层负责连接的管理。例如,它用缓冲区存储客户和服务器之间的交互信息。
客户端Oracle Net基础层有以下几个作用。
❑ 确定数据库的位置
❑ 判断是否存在连接所需要的协议
❑ 处理连接中断问题
服务器端和客户端的Oracle Net相似,不同的是服务器端要用网络监听来处理客户端发来的连接请求。
除了建立和维护连接,Oracle Net还用命名方法处理命名(names)并用安全服务(security services)确保安全连接,如图3-15所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0123_0001.jpg?sign=1738951188-YjZNDFy24rvzhDa2JEhbY37P6W2xCk7l-0-c796353bbee45846fa056680c98ed66c)
图3-15 命名方法和安全服务
5.协议适配层(OPA)
协议适配层(OPA)是与网络特殊协议层通信的接口,该层将Oracle Net基础层功能与下一层协议匹配。OPA层与网络特定协议层合在一起相当于OSI模型中的网络层。
6.网络特殊协议层
该层负责将信息从一端传到另一端。Oracle不提供Oracle Net支持的一些协议(如TCP/IP),所以该层提供这些协议,以进行网络通信。
7.Oracle程序接口(OPl)层
Oracle程序接口(OPI)层只存在服务器端,它处理客户的每个请求。OPI负责处理客户发出的SQL语句。
8.网络程序接口(NPl)层
网络程序接口层只存在服务器端,它用于实现服务器和服务器之间的通信。
3.3.2 Java的连接栈结构
Java应用程序连接数据库有JDBC OCI驱动、JDBC瘦驱动方式两种方式(可参考3.1.2),如图3-16所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0123_0002.jpg?sign=1738951188-YH3ibnzA25m3xDdiosfuBezjQrVTdLNs-0-1c39221be1f8fe44d524e18498200bb2)
图3-16 Java连接通信栈
JDBC OCI驱动的通信栈和C/S的通信栈相似,JDBC瘦驱动使用Java基础层的Java接JavaNet和JavaTTC与服务器进行通信。
3.3.3 Web连接的栈结构
除了TTC表示外,Oracle数据库服务器还提供许多其他Web连接方法,图3-17所示的是HTTP和FTP连接Oracle数据库实例的Oracle XML DB。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0124_0001.jpg?sign=1738951188-t7yMU5vco5fx1kxRvzjO8FTi6nnVuveg-0-49e11af39c7e31e3340a03dbd87e16d9)
图3-17 Web连接的通信栈
3.3.4 网络监听体系结构
Oracle网络监听处于Oracle数据库通信栈顶层,客户端要连接到服务器必须先连接网络监听,网络监听代理了所有的客户请求。
客户将请求发送给服务器网络监听后,网络监听会分配一个服务处理给这个客户。通过服务(Service)注册,数据库后台进程PMON会向网络监
听提供现在用户请求的数据库是否存在、实例的连接数、可用的最大连接数等信息。如图3-18所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0124_0002.jpg?sign=1738951188-MJrBPgakdf1xGLmHGtuKTM1LvGmwIWH3-0-65d0e5fa7723ae8060978eab690d19dc)
图3-18 服务注册
当实例启动时,如果监听还没有启动,PMON就不能注册服务信息。在一分钟之内,PMON进程会定时地尝试连接网络监听。为立即让PMON注册服务信息,用户可以使用SQL命令:Alter System Register注册,这个命令在数据库配置中很有用。
如果用户所请求的数据库实例还没有在监听内注册,监听会拒绝这个请求。如果实例运行在限制模式下,实例就会通知监听拒绝所有试图连接这个实例的请求。
图3-19是可以使用监听连接数据库的示意图。图中客户端以两种方式连接数据库,一种是客户端通过HTTP协议用浏览器连接,另一种是C/S体系的客户应用程序用TTC表示用TCP/IP协议和数据库连接。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0125_0001.jpg?sign=1738951188-sz9FVeN9LsAXLkfqvQloBAX9q9RWikCK-0-dc84d3d567f1170cd80ffc9ecc3117c0)
图3-19 监听的体系结构
图中①②③的意义分别是:① 表示数据库在监听中注册服务、实例、服务处理等信息;② 表示通过监听建立初始连接;③ 表示监听同意客户的连接,让客户连接和与数据库服务器通信。
3.3.5 数据库服务器体系结构
第二章介绍了数据库服务器进程可以设置成专用服务器进程模式和共享服务器进程模式,本节详细介绍这两种模式的网络结构。
1.共享服务器进程
在共享服务器进程中,用户进程连接了一个调度器(Dispatcher),如图3-20所示。PMON在监听中注册了调度器的位置和调度器的当前的负荷。一个调度器可以同时支持多个并发的连接,Oracle会尽量将连接分配到负荷小的调度器上。每个用户连接都绑定到一个称为虚电路(Virtual Circuit)的共享缓冲池上。虚电路是Oracle为调度器处理用户连接请求和回复而设置的一个共享内存区。当有请求连接时,调度器将一个虚电路放在一个普通队列上。一个空闲的共享服务器从普通队列连上这个虚电路,从而满足这个请求,并且在从普通队列中得到别的虚电路前放弃虚电路。这种方法使少量的服务器进程能为大量的用户服务。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0126_0001.jpg?sign=1738951188-SrBv3sfiSukGwoOPDp76SqPTy4jiiY0C-0-bb88fc0a1a2e0b7fb21d432e735d10d1)
图3-20 共享服务器网络体系结构
共享服务器中有两种连接方法:直接方法和重定向方法。
直接方法:当用户正在使用共享服务器时,客户连接可以用一种直接方法来建立。如图3-21所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0126_0002.jpg?sign=1738951188-RDbr75hrQHDsEr6JO15b616vN1Fk6mel-0-0089b12a070c64650c91759ab0696a20)
图3-21 共享服务器进程直接方法
(1)客户端解析了服务器名称之后,连接Oracle监听器。
(2)Oracle网络监听器把连传递给负荷最小的调度器。
(3)客户端和数据库服务器已连接。
(4)PMON进程给监听发送关于调度程序服务的连接服务数量信息。监听通过这个信息在调度程序之间保持一致负荷。
重定向方法:在共享服务器上,监听可以把连接请求重定向到一个服务器进程或一个调度进程。这种类型的连接发生在操作系统不支持直接连接或监听以及Oracle服务器不在同一台物理计算机上。
图3-22是共享服务器环境中重定向连接的连接过程。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0127_0001.jpg?sign=1738951188-VTSnNqPBTkHWLj1zCEZKPxeJolCCLkJ8-0-315088102bb3a9dc16ccae9d1fbfbfdb)
图3-22 共享服务器进程重定向方法
(1)客户端解析服务器名称之后,连接Oracle监听器。
(2)监听根据当前服务器的负载情况分配一个调度进程给客户端。
(3)客户端向这个调度进程发送连接请求。
(4)客户端与这个调度进程已建立连接。
(5)调度进程通过后台进程PMON告诉监听器这个调度进程的最新负荷情况,以便监听根据各个调度进程的负荷情况响应新的客户连接请求。
2.专用服务器
专用服务器中,一个用户进程对应一个服务器进程,服务器进程不能共享。后台进程PMON在监听中注册专用服务器进程等信息。专用服务器进程如图3-23所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0127_0002.jpg?sign=1738951188-rvhGz82bOyfg2UEMhx36mvpPtGhek07Y-0-5a2cdda019c843c42af2323dae4160dd)
图3-23 专用服务器网络体系结构
专用连接方法也有直接连接方法和重定向方法,每种方法产生一个处理客户处理的独立进程,但实际连接启动机制是不一样的。要想让远程客户使用专用连接,网络监听必须和它监听的数据库运行在同一个服务器上。
直接方法:当客户和数据库在同一个服务器上,可以用直接方法。如图3-24所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0128_0001.jpg?sign=1738951188-CF9pcbT9NCGNIL2UaP14J0fqEB7hegoN-0-722fa1021cad6e37f5429fca147cba69)
图3-24 专用服务器直接连接
(1)客户端在解析了服务器名称后与Oracle监听联系。
(2)监听启动一个专用进程,客户端连接从监听继承这个专用服务器继承网络连接端点。
(3)客户端与服务器建立连接。
专用连接重定向方法:当客户端与一台监听及数据库服务器分开的计算机连接时,重定向出现在专用服务器环境中。监听必须把它所生成的进程地址通知客户,以便该进程与新建的专用服务器进程联系。
图3-25是专用服务器环境中重定向连接的连接过程。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0128_0002.jpg?sign=1738951188-iCUYaFU2fYxGRLnjKJGyTpk5eBAhEn8j-0-18e43d08addde1618fdfa1e216388cbb)
图3-25 专用连接重定向方法
(1)客户端向监听发送连接请求。
(2)监听启动一个专用服务器进程。
(3)监听将这个专用服务器进程的地址放在重定向信息中传给客户端。
(4)客户端和专用服务器进程建立连接。
3.3.6 连接管理器体系结构
连接管理器将用户请求转到下一个节点或服务器上,利用连接管理器能实现多路复用和存取控制。连接管理器包括三个部分:监听、CMGW(连接管理网关)、CMADMIN(连接管理管理员)。
监听接收客户请求并根据一系列规则来决定客户是否可以连接服务器。如果同意连接,监听会将这个请求送给一个当前连接最少的网关进程。
CMGW将用户请求转到另一个连接管理器上或直接送给数据库服务器。如果和服务器的连接已存在,网关将多路复用这个连接。
CMGW进程负责以下任务。
❑ 用CMADMIN进程注册
❑ 监听连接请求
❑ 在客户和数据库服务器之间传送数据
❑ 为客户初始化连接请求到监听器
CMADMIN监视网关进程和监听的运行,在必要时关闭或启动这些进程。此外,它还将网关进程的位置和负荷注册到监听上。
CMADMIN进程监视网络监听和网关进程,CMADMIN主要负责以下任务
❑ 处理CMGW注册
❑ 识别所有的在数据库实例上的监听
❑ 注册关于CMGW进程和网络监听的来源路由地址信息
❑ 定位Oracle名字服务器
❑ 维护Oracle名字服务器地址信息
❑ 定时发送请求到Oracle名字服务器以更新可用服务缓存
图3-26中,监听接受连接请求,网关进程注册CMADMIN进程,CMADMIN进程又在监听中注册,最后监听将连接请求发到网关进程。图3-26中监听拒绝了第四个客户的连接请求。网关进程通过多路复用实现一个单一的连接连接到数据库服务器上。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0129_0001.jpg?sign=1738951188-ypPFCDOniA4jjcfNaIRUeGaoKxPJInPV-0-267e9457d07cc48bc08cd2dc03dec4f0)
图3-26 连接管理器体系结构
3.4 Oracle网络的概念
了解了Oracle网络的体系结构后,如果要理解透彻Oracle网络,读者还要理解一些和网络相关的概念。这些概念无论是对网络开发人员还是对网络管理员来说都至关重要,前面虽然涉及到了一些这样的概念,但还不够详细,本节将重点介绍这些概念。
3.4.1 连接的概念
网络连接涉及到许多概念,其中一些基本概念对用户来说非常重要,它们分别为数据库服务、连接描述符、服务处理、命名等,本节将详细介绍这些概念。
1.数据库服务
数据库服务是数据库中最重要的概念,一个数据库对用户来说表现为一个服务,一个数据库可配置多个服务。图3-27中有两个数据库,一个数据库服务名叫sales.us.acme.com,通过这个服务名销售人员可以访问sales database,另一个服务名叫finance.us.acme.com,金融分析人员可以通过这个服务名访问finance数据库。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0130_0001.jpg?sign=1738951188-jqrvEoDrdFUC2XyWPk4uNA7TWv1t212F-0-c9e738542d871cf0e8f8571a1b80011f)
图3-27 数据库与服务
数据库服务名相当于数据库的标识,服务名由初始化参数文件中的SERVICE_NAMES指定,缺省的服务名是全局数据库名,即包含数据库名和域名,如服务名sales.us.acme.com中sales是数据库名,us.acme.com是域名。用户可以用动态SQL语句Alter System更改服务名。一个数据库可以配置多个服务名,如图3-28所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0131_0001.jpg?sign=1738951188-iiAaYahJtUUWXqTVAi553gpsvZInSWQB-0-40b6335788c69b42fbaec19b215b0653)
图3-28 一个数据库多个服务
2.连接描述符
Oracle连接数据库服务器时用连接描述符来表示数据库的位置和数据库服务名,以下是一个连接描述符的例子。
(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=sales.us.acme.com)))
例中ADDRESS段实际上是监听的地址,客户在联系数据库前必须先联系到数据库服务器上的监听,由监听处理客户的请求。
有些情况下用户可以配置多个监听,如实时应用集群,如下例子就配置了两个监听连接到sales.us.acme.com服务器上。
(DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521))) (CONNECT_DATA= (SERVICE_NAME=sales.us.acme.com)))
3.服务处理
服务处理(Service Handlers)是一个不容易理解的概念,它实际上是指数据库服务器中用来处理用户请求的进程,在专用服务器中指专用服务器进程,而在共享服务器中则指调度器。
4.命名
用户用连接串发起连接请求,连接串包含用户名、口令和网络标识。网络标识可能是一种连接描述符,而服务名则是一种最简单的网络标识。下面例子用连接标识符作连接串,用网络服务名作连接串。
CONNECT scott/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server1) (PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com))) CONNECT scott/tiger@sales
连接时,Oracle会先找到sales对应的连接描述符。Oracle用一种名为命名方法(naming methods)的机制完成这种服务名到连接描述符的映射,然后进行连接。以下是用名字方法建立会话的过程。
(1)用户通过连接标识发起连接请求。
(2)名字方法将连接标识转换为连接描述符,连接描述符会传到客户端。
(3)客户通过连接标识符内的地址请求连接服务器。
(4)监听接收到请求后将请求转给指定的数据库服务器。
(5)数据库服务器接受连接请求,数据库服务器与客户端建立起连接。
3.4.2 配置管理概念
配置网络有两种方式,一种是本地配置(Local)方式,一种是集中(Central)配置方式,表3-4列出了这两种配置方式的区别。
表3-4 网络的配置方式
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0132_0001.jpg?sign=1738951188-Q67ktB5ZPQD18GmE26wghZPy45URpu57-0-be4600f6afe06ada46cebba753fc97f6)
使用本地配置方法要用到很多本地配置文件,这些配置文件如表3-5所示。
表3-5 网络的配置方式
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0132_0002.jpg?sign=1738951188-W09W45NKeS9AvoQEesBVG1xWndOKKbS7-0-dde6ebde69da2294d9a2871473629007)
3.4.3 命名方法
命名方法(naming methods)是Oracle客户端应用程序完成连接标识到连接描述符的映射的一个机制,主要包括如下方法。
1.本地命名
本地命名是众多命名方法的一种,它将网络服务名解析为连接标识符,客户端用这个连接标识符连接数据库或服务。本地命名在本地tnsnames.ora文件中存储网络服务名及其连接符。用户一般按以下格式输入包括网络服务名的连接字符串。
CONNECT username/password@net_service_name
2.目录命名
目录命名是存储在中央服务器的一种命名方法,它把数据库服务名、网络服务名、网络服务别名解析成连接描述符。目录实际上是对数据库服务和网络名称的一种管理,这种管理可以减少重定位的工作。安装时Oracle会自动将数据库服务名加入到目录中。
目录命名是将连接标识符解析成连接描述符的一种命名方法。目录命名将连接标识符和对应的连接描述符存储在符合LDAP的目录服务器中。连接标识符要存储在Oracle Context中,它是包含Oracle条目的目录子树。用户连接数据库时的连接字符串一般会包含连接标识符,如用户数据输入以下命令。
CONNECT scoott/tiger@sales
用户输入上述命令后,先解析sales,在目录服务器中找到sales对应的连接描述符,连接描述符包括监听的协议地址位置和数据库的服务名。客户端使用协议地址信息来连接到监听。配有这个地址的监听收到请求后,处理这个请求。图3-29是解析连接标识符的过程。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0134_0001.jpg?sign=1738951188-SRbKimYwDqIrZds2dpsdcea1n8qpUovv-0-abe08ec348b76b6ef95dbe44dfd67538)
图3-29 解析连接标识符过程
(1)用户输入连接命令后,先连接到目录服务器上,将连接标识符转化为连接描述符。
(2)目录服务器将连接描述符传给客户端。
(3)客户端根据连接描述符内指定的协议地址找到监听。
要实现目录服务,用户必须为Oracle Net配置目录服务器,并且必须配置客户端访问目录。Oracle Net支持Oracle Internet Directory和Microsoft Active Directory两种目录实现方式。
4.简单命名
使用简单命名不需要任何配置,简单命名法用TCP/IP连接串,包括主机名、可选的端口和服务名表示监听的地址。简单命名的例子如下。
CONNECT username/password@host[:port][/service_name]
简单命名方法的特点是容易配置,但是如果要使用连接池、外部过程调用等高级特性时,就不能用简单命名方法。
5.外部命名
外部命名使用在非Oracle环境中定义的服务名称,这个命名方法要借助第三方的非Oracle组件来实现,这些第三方组件主要有以下几个。
❑ NIS(Network Information Service)外部命名
❑ DCE(Distributed Computing Environment)外部命名
为理解外部命名,这里举一个用NIS进行外部命名的例子。如用户输入以下命令:scott/tiger@payroll,payroll是服务名,用户连接在网络上的NIS服务器,然后将这个网络服务名payroll传递给NIS服务器,NIS服务器将网络服务解析成网络地址,并且将它传送给用户程序,用户程序用它连接数据库服务器。
为比较这些命名方法,我们将这些命名方法的优缺点整理为表3-6所示。
表3-6 各种命名方法的比较
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0135_0001.jpg?sign=1738951188-FM74X8zFxmwwU1vgCyoeZ5oemd1W7XLC-0-380fa3a1cf248893e052348f7ff5335f)
3.5 Oracle云数据库
Oracle 12c中的c表示Cloud计算(云计算),与以往的Oracle数据库相比,该版本的数据库主要实现了云计算主题。作为首款针对云计算设计的数据库,Oracle Database 12c可以轻松实现云端的数据库整合,使数据管理变得更加容易,同时还具备多项高可用性的功能,包括云端数据的不间断访问等。
3.5.1 云数据库基本介绍和申请
2012年,Oracle公司强势地确立了公司的云战略方向。2013年,随着Oracle 12c数据库的出现,同时业界首个融合全套Oracle堆叠及全方位企业云端生命周期管理功能的解决方案出现,Oracle也随之开放了Oracle Database Cloud平台。
如果想体验Oracle 12c数据库的云计算,用户首先需要在Oracle Database Cloud平台申请一个账号。在注册之前,用户需要准备一个信用卡号。具体步骤如下。
(1)登录Oracle Database Cloud平台,该平台的首页地址为:http://cloud.oracle.com,在该页面中可以看到Oracle云数据库的试用链接,具体界面如图3-30所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0136_0001.jpg?sign=1738951188-6YHDLwME24CIMnyuQSzfuUXSCB2695PU-0-ff349950ff2f0e879888b550369dc44e)
图3-30 Oracle云数据库平台
(2)在Oracle云数据库平台单击“Try it”按钮,可以进入如图3-31所示的Oracle云数据库介绍的页面。在该页面中可以发现,Oracle云数据库按照存储空间方式收费,分为5GB、20GB、50GB三种,分别收取175$、900$、2000$的月服务费,数据库版本选用了11gR2,由于技术限制,目前只支持1个Schema的授权方式。将来如果升级到Oracle Database 12c,将可以支持用户模式,Pluggable Database将为云计算提供极大的便利。目前Oracle云数据库开放30天的试用版本,支持1GB存储、6GB的数据传输流量。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0137_0001.jpg?sign=1738951188-lSyiE0UQdJGOD4y7gbsvvZJrBCK6Onjv-0-abe81e8658a92a349787769a5f6df334)
图3-31 Oracle云数据库介绍页面
(3)申请注册Oracle云数据库,首先需要申请一个OTN账户,然后提供基本信息和信用卡号。Oracle并不会收取费用,信用卡只用于验证身份,具体页面如图3-32所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0137_0002.jpg?sign=1738951188-TOoeGKbYO6PBXJJCzS7cSHY4IajAZhKs-0-c5a4be7af3ac621b284bc54170a40a7d)
图3-32 注册页面
(4)当Oracle云数据库的账号申请获得批准后,一般需在3~5个工作日后,就会收到如图3-33所示的Greeting邮件。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0138_0001.jpg?sign=1738951188-IK7Rs58FYkk7uxbsNkPfJA4DZPGXScXB-0-1f3d23555f74a8f7062382ad09123578)
图3-33 Greeting邮件
如果获取了Greeting邮件,就表示申请获得了审批,所注册的用户可以使用。
(5)用所注册的用户登录后,就可以看到该用户的服务、数据等信息,如图3-34所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0138_0002.jpg?sign=1738951188-6muQSkKP3n62jBhJNP3cJoggcXvnAbmx-0-bb216f5b1e8ff90f31a188b3b9505ea4)
图3-34 用户所获取的服务
3.5.2 构建和发布数据库应用
用户通过账号登录“Oracle Database Cloud”平台后,就可以进入相应的开发环境,在该环境下可以创建数据库应用和发布公开访问。查看相关资料可以发现,Oracle云数据库需要依托应用才能够发挥出作用,所以在申请云数据库之后,Oracle提供了Application Express开发环境,通过这个开发环境,用户可以构建应用并发布出去,对外提供服务。
Oracle的云数据库和其他云应用的区别就在于以下两点。
❑ 数据库拥有可视化和自我可管理性。
❑ 应用拥有自行部署和可开发性。
在Oracle公司提供的“Oracle Database Cloud”中,用户可以通过“Application Express”在线开发环境构建和发布数据库应用。“Application Express”环境的具体内容如下。
(1)用户登录Oracle Database Cloud环境后,可以打开“Application Express”开发环境,其中提供了许多功能的接口,分别为“Application Builder”、“SQL Workshop”、“Team Development”和“Administration”功能,如图3-35所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0139_0001.jpg?sign=1738951188-hz8YgVdl1UvdIn1AwpX9wT8nohRE8HzN-0-7ed534c8a56f26c6792026ba20733dc7)
图3-35 “Application Express”开发环境
(2)在“Application Express”开发环境中,存在一个非常友好的“SQL Workshop”接口,使用该接口可以直接通过SQL语句访问数据库内容,或者查看表结构等信息;开发环境中也集成了“Team Development”接口,该接口实现了“Milestones”、“Features”、“To Dos”、“Bugs”和“Feedback”功能,如图3-36所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0140_0001.jpg?sign=1738951188-DoeBNAfdGNncFuVPFxNoMkJhyKgP6oTw-0-18ff261024ed2ab46c0f8994278da1f9)
图3-36 “Team Development”界面
(3)在“Application Express”开发环境中,还内置了示范样例,即通过一个订单销售系统,示范应用开发和发布模式,整体风格非常清爽,如图3-37所示。
![](https://epubservercos.yuewen.com/89FAD7/3731480703576001/epubprivate/OEBPS/Images/figure_0140_0002.jpg?sign=1738951188-WuW7zRkbx0XIFQApNtkgzSxH9vHcu6qL-0-7b4719733210f12be1cbfb7e3af3a20d)
图3-37 示范应用
综上所述,我们可以发现,“Oracle Cloud Database”平台只是一个集成的Oracle Application Express开发环境。