第 9 章 分布式数据库系统

43
第9第 第第第第第第第本本本本本本本本 / 本本本本本 本本本 - 本本本本本本本本本本本本本本 本本本本本本本本本本本本 本本本本本本本本 本本本本本本本本本 本本本本本 ,,,、 本本本本本本本本本 本本本本本本本本本本本本本本本本本本 ,。 9.1 本本 ( 本本 / 本本本本本 本本本本 本本本本本本 、一) 9.2 本本本本本本本本本 9.3 本本本本本本本本本本 9.4 本本本本 9.5 本本本本本本本 9.6 本本本本本本

Upload: marsha

Post on 16-Jan-2016

193 views

Category:

Documents


0 download

DESCRIPTION

第 9 章 分布式数据库系统. 本章主要介绍客户 / 服务器模式、服务器 - 服务器模式两种分布式数据库系统,以及分布式数据库的连接,分布式查询处理,并介绍了事务处理、多协议信息交换和表快照与复制,以便读者学习分布式数据库计算等技术。 9.1 概述 ( 客户 / 服务器结构、服务器一服务器结构) 9.2 分布式数据库的连接 9.3 分布式查询处理及其它 9.4 事务管理 9.5 多协议信息交换 9.6 表快照与复制. 9.1 分布式数据库系统概述. 分布式数据库系统与集中式数据库系统 构成:分布式数据库管理系统和分布式数据库 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 9 章  分布式数据库系统

第 9 章 分布式数据库系统本章主要介绍客户 / 服务器模式、服务器 - 服务器模

式两种分布式数据库系统,以及分布式数据库的连接,分布式查询处理,并介绍了事务处理、多协议信息交换和表快照与复制,以便读者学习分布式数据库计算等技术。

9.1 概述(客户/服务器结构、服务器一服务器结构)9.2 分布式数据库的连接9.3 分布式查询处理及其它9.4 事务管理9.5 多协议信息交换9.6 表快照与复制

Page 2: 第 9 章  分布式数据库系统

9.1 分布式数据库系统概述

分布式数据库系统与集中式数据库系统 构成:分布式数据库管理系统和分布式数据库 分布式数据库系统适合于单位分散的部门 ORACLE 的分布式结构基于两种模式 客户 / 服务器模式 (client/server) 服务器 _ 服务器 (server_server) 结构

Page 3: 第 9 章  分布式数据库系统

客户 / 服务器模式

Page 4: 第 9 章  分布式数据库系统

服务器 _ 服务器模式

Page 5: 第 9 章  分布式数据库系统

分布式数据库的特征

ORACLE 支持大多数理想的分布式特点 1. 本地自治 (Local Autonomy)

2. 不依靠一个中心站点 3. 能连续操作

Page 6: 第 9 章  分布式数据库系统

全功能分布式数据库的规则和目标

规则细目 在 ORACLE 中存在 1 局部结点自治性 是 2 不依靠中心站点 是 3 连续操作 是 4 本地独立性 是 5 分片独立性 是 6 数据复制独立性 是 7 分布式查询处理 是 8 分布式事务管理 是 9 硬件独立性 是 10 操作系统独立性 是 11 网络独立性 是 12 DBMS 独立性 是

返回章

Page 7: 第 9 章  分布式数据库系统

9.2 分布式数据库的连接

图 9.3: 一个 ORACLE 分布式数据库实际结构

Page 8: 第 9 章  分布式数据库系统

目录

9.2.1 分布式数据库全局名和数据库链9.2.2 连接客户(CLIENTS)和服务器( S

ERVERS )9.2.3 连接服务器( SERVERS)

到其它服务器(SERVERS)

返回章

Page 9: 第 9 章  分布式数据库系统

9.2.1 分布式数据库全局名和数据库链1. 分布式数据库全局名

全局数据库名唯一标识系统中的每个数据库 两部分组成:数据库名(小于等于8个字符)和网络域 (net work domain) 例: hq.divisionl.acme_tools.comfinance.division2.acme_tools.comsales.division2.acme_tools.com对象可用对象全局名唯一标识human [email protected] tools.COM

Page 10: 第 9 章  分布式数据库系统

2. 数据库链

数据库链 : 对远程数据库定义的一路径 数据库链对分布式数据库的用户透明数据库链的名字与链所指向的数据库的全局名相同 数据库链由两部分组成:一个远程账号和一个数据库串 例建立数据库链的形式:CREATE PUBLIC DATABASE LINK sales.division3.acme.comCONNECT TO guest IDENTIFIED BY passwordUSING’DB 串’; 由账号和 DB 串构成完全路径

返回节

Page 11: 第 9 章  分布式数据库系统

9.2.2 连接客户( CLIENTS )和服务器( SERVERS )

图 9.5 连接客户应用到服务器

Page 12: 第 9 章  分布式数据库系统

连接客户应用到服务器

例 9.1:$ runform scott/tiger@EDUCATION_DB my_formEDUCATION_DB 为连接描述符scott 为用户模式名tiger 为口令客户应用 myform SQL* Net 的连接描述符能连接客户到远程服务器 返回节

Page 13: 第 9 章  分布式数据库系统

9.2.3 连接服务器( SERVERS )到其它服务器 (SERVERS)

图 9.6 将服务器连接到服务器

Page 14: 第 9 章  分布式数据库系统

例 9.3: 创建数据库链接 Boston

SQL>CREATE DATABASE LINK boston

2 CONNECT TO Scott IDENTIFIED BY tiger

3 USING ’education_db’;

'education_db' 为数据库描述符

Page 15: 第 9 章  分布式数据库系统

例 9.4: 用数据库连接 BOSTON ,访问远程 scott/tiger 账号中的 EMP 表。SQL>SELECT * 2 FROM emp@boston; ... 14 rows retrieved. 注意:数据库链在分布式数据库 SQL语句中作为表名的一部分了

返回节

Page 16: 第 9 章  分布式数据库系统

9.3 分布式查询处理及其它

9.3.1 建立分布式查询9.3.2 在分布式事务(DISTRIBUTED TRANSACTION)中的其它语句

返回章

Page 17: 第 9 章  分布式数据库系统

9.3.1 建立分布式查询

Page 18: 第 9 章  分布式数据库系统

分布式查询例子

例 9.6: SQL>SELECT ename,danme 2 FROM emp@chicago,dept@ bethesda 3 WHERE emp.deptno=dept.deptno 4 AND loc=’NEW YORK’ 5 AND job=’CLERK’;SQL>SELECT ename,deptno 2 FROM emp 3 WHERE job=’CLERK’ SQL>SELECT dname, deptno 2 FROM dept 3 WHERE loc=’NEW YORK’

等价于下面两个 SQL 语句的并

返回节

Page 19: 第 9 章  分布式数据库系统

9.3.2 在分布式事务( DISTRIBUTED TRANSACTION )中的其它

语句 例 9.7: 更新远程数据库中的数据: SQL>UPDATE emp@ed_link 2 SET Sal=Sal*1.05 3 WHERE ename=’WINSLOW’; 1 row updaed.将数据插入到一个远程数据库的表中: SQL>INSERT INTO emp@ ed_link (empno,ename,sql,hiredate,deptno) 2 VALUES (1001,’EINSTEIN’,45OO,sysdate,40); 1 row created.从一个远程数据库的表中删除数据 :SQL>DELELE FROM emp@ed_link 2 WHERE ename=’GREEN’; 1 row deleted.

返回节

Page 20: 第 9 章  分布式数据库系统

9.4 事务管理

事务 :一个原子单位 ,满足 ACID 准则即原子性、一致性、隔离性、持久性。ORACLE 的事务管理 由一个可执行的 SQL 语句开始 ,事务开始时,被赋给一个可用回滚段,记录该事务的回滚项 事务结束 当 COMMIT 或 ROLLBACK( 没有 SAVEPOINT 子句 ) 语句发

出。 一个 DDL 语句被执行。在 DDL 语句执行前、后都隐式地提

交。 用户撤消对 ORACLE 的连接 ( 当前事务提交 ) 。 用户进程异常中止(当前事务回滚)。

Page 21: 第 9 章  分布式数据库系统

9.4 事务管理

1. 提交事务:将在事务中由 SQL 语句所执行的改变永久化 例 9.8 : 在对 DEPT 表插入一行后 ,提交该改变INSERT INTO DEPT VALUES (50,’LIU YIN’,’TAMPA’)

COMMIT WORK

2.两阶段提交协议 :保证事务正常运行 第一阶段是“表决阶段” 第二阶段是“执行阶段”

Page 22: 第 9 章  分布式数据库系统

3. 回滚事务:撤消未提交事务中的 SQL 语句所作的对数据修改

例 9. 9 :回滚当前整个事务ROLLBACK例 9.10 :回滚当前事务到 SP5保留点。 ROLLBACK TO SAVEPOINT SP5 4. 保留点

在一事务范围内的中间标志 ,经常用于将一个长的事务划分为小的部分 返回章

Page 23: 第 9 章  分布式数据库系统

9.5 多协议信息交换

9.5.1 SQL*NET

9.5.2 SQL*Net连接组分 9.5.3 Multi Protocol Interchange (

多协议交换) 9.5.4 配置SQL*NET V2客户机(Client)9.5.5 配置 LISTENER9.5.6 配置 SQL*NET V2 服务器 (SERVER)9.5.7 启动 LISTENER 返回章

Page 24: 第 9 章  分布式数据库系统

9.5.1 SQL*NET

1. SQL*Net 的功能概述客户机和服务器之间的连接通过 SQL*Net 建立和中止。SQL*Net映射 ORACLE 应用 (UPI) 和数据

库调用( OPI) 为网络调用。在两个通讯结点之间不同的特征设置和 NLS

数据表示通过 SQL*Net 处理。SQL*Net “谈判” ( negotiates )

一个结点既是客户 (Client) 应用 ,又可以是一个数据库服务器 (Server)

Page 25: 第 9 章  分布式数据库系统
Page 26: 第 9 章  分布式数据库系统

2. SQL* Net 的优点

(1) 网络透明性 (2) 协议独立性 (3) 介质 /拓扑独立性 (4) 异域网络性 (5) 本地透明性

返回节

Page 27: 第 9 章  分布式数据库系统

9.5.2 SQL*Net 连接组分

SQL*Net V2 和 TNS 接口 :SQL*Net 对应于特定的数据库通讯 TNS 是一组基本网络服务器集合,它可由许

多不同的应用类型使用

Page 28: 第 9 章  分布式数据库系统

返回节

Page 29: 第 9 章  分布式数据库系统

9.5.3 Multi Protocol Interchange (多协议交换)

Multi Protocol Interchange :一个软件组分成分, 它允许 SQL*Net V2/TNS 连接穿过若干“共同体” “共同体”是共享相同网络协议结点的集合 Interchange 不是一个: 协议门路 协议变转器 路由器或 桥

Page 30: 第 9 章  分布式数据库系统

MutiProtocol Interchange

Page 31: 第 9 章  分布式数据库系统

1. Interchange结构描述

图 9.11 Interchange

Page 32: 第 9 章  分布式数据库系统

2. 通过 Interchange完成的连接

Page 33: 第 9 章  分布式数据库系统

Interchange完成的连接步骤

(1) 客户 (Client)产生一个对不同“共同体”中一服务器 (server) 的连接请求

(2) SQL* Net V2/TNS 注意到目的地是在不同的“共同体”中 , 并发送出连接到客户 (client)希望的 Interchange 。

(3) 到来的连接请求由连接管理器接受。 (4) 连接管理器 (connection manager) 询问导航器( navigator )是否它正进行着正确的路径。

(5)导航器回答 yes (是),或者用一个更好的 Interchange 地址回答它。

(6) 连接管理器传递连接控制到最好的现存数据泵 (data pump) ,或者产生一个新泵,然后传递连接控制。

(7) 数据泵询问导航器下一个去的地址:其它 Interchange ,或者其它目的地。

(8) 数据泵发送连接到下个协议“共同体”。注意:如果 Interchange 作为目的地是在同一个协议“共同体”中,

则跳过第 7步 返回节

Page 34: 第 9 章  分布式数据库系统

9.5.4 配置 SQL*NET V2 客户机( Client )

配置 (Configure) 一个 SQL*Net V2 客户机需要如下信息: 连接描述符/数据库名字 客户机所属的协议“共同体” 登录 (Logging) 和轨迹 (tracing) 信息

SQL* Net V2/TNS 连接描述符指定; 服务器上 listener 的地址。 所连接到的 ORACLE 实例名。

Page 35: 第 9 章  分布式数据库系统

配置 SQL*NET V2 客户机( Client )

连接描述符在文件 tnsnames.ora 中定义 各个连接描述符需要 CONNECT_DATA加上至少一个 ADDRESS (地址)。 例 9.11 :配置客户机连接描述符的例子: tnsnames.ora: PROD7=(DESCRIPTION= (ADDRESS= (COMMUNITY=TCP1.US.ORACLE) (PROTOCOL=TCP) (HOST=Server1) (PORT=1521) (CONNECT_DATA=(SID=PROD7)))用其连接: C:\Sgl plus scott/tiger @ PROD7 返回节

Page 36: 第 9 章  分布式数据库系统

9.5.5 配置 LISTENER

1. 配置 listener 地址 :将机器上一定的数据库连接要求配置为监控器确定的地址 listener配置文件 listener.ora 指定

例 9.12 :配置一个叫 LISTENER 的 listener,来接受在 PORT.7000 的“共同体” TCP1.US.ORACLE 和在 OBJECT lsnr 的 DEC1.US.ORACLE“共同体”上的连接:

LISTENER=(ADDESS_LIST= (ADDRESS= (COMMUNITY=TCP1.US.ORACLE.COM) (PROTOCOL=TCP) (HOST=hqvms1) (PORT=1521))

(ADDRESS=(COMMUNITY=DEC1.US.ORACLE) (PROTOCOL=DECNET) (NODE=hqvms1) (OBJECT=1snr)))

Page 37: 第 9 章  分布式数据库系统

2.配置建立专用服务器 (Dedicated Server) 的 Listener

例 9.13 :配置叫做 LISTENER 的 listener来启动对于 PROD7 和 TEST7 实例的专用服务器进程,这些进程在 VAX机上由指定的程序文件执行 : SID_LIST_LISTENER=(SID_LIST= (SID_DESC= (SID_NAME=PROD7) (PROGRAM=

‘DISKS:[ORACLE.RDBMS]ORASRV_PROD7.COM’)) (SID_DESC=(SID_NAME=TEST7) (PROGRAM=

‘DISKS:[ORACLE.RDBMS]ORASRV_TEST7.COM’))) 注意 : 要求启动一个专用服务器的关键字和将由平台而变化。

返回节

Page 38: 第 9 章  分布式数据库系统

9.5.6 配置 SQL*NET V2 服务器(SERVER)

各个 Server 的配置如下: 文件 描述 listener.ora listener 配置文件tsnames.ora 连接其它 Server 的连接描述符tnsnames.ora 现存的 Interchanges列表。Sqlnet.ora 登录 (logging) 和轨迹信息。注意:如果 Server 将不接触分布式数据库配置中的其它 Server ,则不要求 tnsnames.ora

Page 39: 第 9 章  分布式数据库系统

Server的配置步骤

(1) 为配置工具准备数据库账号。(2) 以 net_conf/net_conf登录到配置工具。(3) 启动、返回到主屏幕,和在主屏幕完成(4) 命名网络。(5) 命名“共同体”。(6) 配置 listener 。命名 listener 、指定配置参数、指定数据库 SID 、

指定连接描述符名字、指定 (client) 连接来使用 、指定 listener如何启动一个专用服务器。、指定为 LSNRCTL安全性的密码。、指定被监控 (monitor) 的地址。

(7) 配置客户机 (client) :命名客户、列表客户所属于的“共同体”。(8) 生成配置文件。

返回节

Page 40: 第 9 章  分布式数据库系统

9.5.7 启动 LISTENER

1. 命令状态格式: $ LSNRCTL Command [listener_nam

e]

其中: [Listener_name] 是可选的 listener 的名字。

2. 交互式状态格式: LSNRCTL>command[listener_name]

LSNRCTL>exit 返回节

Page 41: 第 9 章  分布式数据库系统

9.6 表快照与复制

1. 人工复制表 运用 Export/Import 实用程序输出一个远程

表拷贝 向远程表上发出一个 SELECT 语句 , 以在

本地机上建立一个拷贝 从 SQL*PLUS 发出 COPY命令 ,来拷贝

远程表

Page 42: 第 9 章  分布式数据库系统

人工复制表例子

例 9.15: 将数据库 HQ 中 EMP 的整个表拷贝到WEST 数据库中的 WESTEMP 表。如果WESTEMP已经存在 ,SQL* PLUS 将替代它的内容 ,WESTEMP 表中列与源表 EMP 的列有相同的名字。

SQL>COPY FROM SCOTT/TIGER@ HQ_>TO JOHN/CHROME@ WEST_>REPLACE WESTEMP_>USING SELECT * FROM EMP

Page 43: 第 9 章  分布式数据库系统

表快照与复制

2. 用触发器 (TRIGGERS) 复制表3. 自动复制和更新表 : 可用表快照 (snapsh

ots) 自动复制表 表快照的特点:

快照可包含来自多个主表的数据。 快照可以是一个集合操作 (GROUP BY) 。 快照可以是一个表的子集(行,列)。

返回章