430 likes | 647 Views
第 9 章 分布式数据库系统. 本章主要介绍客户 / 服务器模式、服务器 - 服务器模式两种分布式数据库系统,以及分布式数据库的连接,分布式查询处理,并介绍了事务处理、多协议信息交换和表快照与复制,以便读者学习分布式数据库计算等技术。 9.1 概述 ( 客户 / 服务器结构、服务器一服务器结构) 9.2 分布式数据库的连接 9.3 分布式查询处理及其它 9.4 事务管理 9.5 多协议信息交换 9.6 表快照与复制. 9.1 分布式数据库系统概述. 分布式数据库系统与集中式数据库系统 构成:分布式数据库管理系统和分布式数据库
E N D
第9章 分布式数据库系统 本章主要介绍客户/服务器模式、服务器-服务器模式两种分布式数据库系统,以及分布式数据库的连接,分布式查询处理,并介绍了事务处理、多协议信息交换和表快照与复制,以便读者学习分布式数据库计算等技术。 9.1 概述(客户/服务器结构、服务器一服务器结构) 9.2 分布式数据库的连接 9.3 分布式查询处理及其它 9.4 事务管理 9.5 多协议信息交换 9.6 表快照与复制
9.1分布式数据库系统概述 • 分布式数据库系统与集中式数据库系统 • 构成:分布式数据库管理系统和分布式数据库 • 分布式数据库系统适合于单位分散的部门 • ORACLE的分布式结构基于两种模式 • 客户/服务器模式(client/server) • 服务器_服务器(server_server)结构
分布式数据库的特征 ORACLE支持大多数理想的分布式特点 • 1. 本地自治(Local Autonomy) • 2. 不依靠一个中心站点 • 3. 能连续操作
全功能分布式数据库的规则和目标 • 规则细目 在ORACLE中存在 • 1 局部结点自治性 是 • 2 不依靠中心站点 是 • 3 连续操作 是 • 4 本地独立性 是 • 5 分片独立性 是 • 6 数据复制独立性 是 • 7 分布式查询处理 是 • 8 分布式事务管理 是 • 9 硬件独立性 是 • 10 操作系统独立性 是 • 11 网络独立性 是 • 12 DBMS独立性 是 返回章
9.2 分布式数据库的连接 图9.3:一个ORACLE分布式数据库实际结构
目录 9.2.1分布式数据库全局名和数据库链 9.2.2连接客户(CLIENTS)和服务器(SERVERS) 9.2.3 连接服务器(SERVERS)到其它服务器(SERVERS) 返回章
9.2.1分布式数据库全局名和数据库链1.分布式数据库全局名9.2.1分布式数据库全局名和数据库链1.分布式数据库全局名 • 全局数据库名唯一标识系统中的每个数据库 • 两部分组成:数据库名(小于等于8个字符)和网络域(net work domain) • 例:hq.divisionl.acme_tools.com • finance.division2.acme_tools.com • sales.division2.acme_tools.com • 对象可用对象全局名唯一标识 • human resources.emp@hq.divisionl.acme tools.COM
2.数据库链 • 数据库链:对远程数据库定义的一路径 • 数据库链对分布式数据库的用户透明 • 数据库链的名字与链所指向的数据库的全局名相同 • 数据库链由两部分组成:一个远程账号和一个数据库串 • 例建立数据库链的形式: CREATE PUBLIC DATABASE LINK sales.division3.acme.com CONNECT TO guest IDENTIFIED BY password USING’DB串’; • 由账号和DB串构成完全路径 返回节
9.2.2 连接客户(CLIENTS)和服务器(SERVERS) 图9.5 连接客户应用到服务器
连接客户应用到服务器 • 例9.1: $ runform scott/tiger@EDUCATION_DB my_form • EDUCATION_DB为连接描述符 • scott为用户模式名 • tiger为口令 • 客户应用myform • SQL* Net的连接描述符能连接客户到远程服务器 返回节
9.2.3 连接服务器(SERVERS)到其它服务器(SERVERS) 图9.6将服务器连接到服务器
例9.3:创建数据库链接Boston SQL>CREATE DATABASE LINK boston 2 CONNECT TO Scott IDENTIFIED BY tiger 3 USING ’education_db’; 'education_db'为数据库描述符
例9.4:用数据库连接BOSTON,访问远程scott/tiger账号中的EMP表。例9.4:用数据库连接BOSTON,访问远程scott/tiger账号中的EMP表。 • SQL>SELECT * • 2 FROM emp@boston; • ... • 14 rows retrieved. • 注意:数据库链在分布式数据库SQL语句中作为表名的一部分了 返回节
9.3 分布式查询处理及其它 • 9.3.1 建立分布式查询 • 9.3.2 在分布式事务(DISTRIBUTED TRANSACTION)中的其它语句 返回章
分布式查询例子 • 例 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语句的并 返回节
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. 返回节
9.4 事务管理 • 事务 :一个原子单位 ,满足ACID准则即原子性、一致性、隔离性、持久性。 • ORACLE的事务管理 • 由一个可执行的SQL语句开始 ,事务开始时,被赋给一个可用回滚段,记录该事务的回滚项 • 事务结束 • 当COMMIT或ROLLBACK(没有SAVEPOINT子句)语句发出。 • 一个DDL语句被执行。在DDL语句执行前、后都隐式地提交。 • 用户撤消对ORACLE的连接(当前事务提交)。 • 用户进程异常中止(当前事务回滚)。
9.4 事务管理 • 1. 提交事务:将在事务中由SQL语句所执行的改变永久化 • 例9.8: 在对DEPT表插入一行后,提交该改变 • INSERT INTO DEPT VALUES (50,’LIU YIN’,’TAMPA’) • COMMIT WORK • 2.两阶段提交协议 :保证事务正常运行 • 第一阶段是“表决阶段” • 第二阶段是“执行阶段”
3. 回滚事务:撤消未提交事务中的SQL语句所作的对数据修改 例9.9:回滚当前整个事务 ROLLBACK 例9.10:回滚当前事务到SP5保留点。 ROLLBACK TO SAVEPOINT SP5 4. 保留点 在一事务范围内的中间标志,经常用于将一个长的事务划分为小的部分 返回章
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 配置LISTENER 9.5.6 配置SQL*NET V2服务器(SERVER) 9.5.7 启动LISTENER 返回章
9.5.1 SQL*NET • 1. SQL*Net的功能概述客户机和服务器之间的连接通过SQL*Net建立和中止。 • SQL*Net映射ORACLE应用(UPI)和数据库调用(OPI)为网络调用。 • 在两个通讯结点之间不同的特征设置和NLS数据表示通过SQL*Net处理。 • SQL*Net “谈判” ( negotiates) • 一个结点既是客户(Client)应用,又可以是一个数据库服务器(Server)
2. SQL* Net 的优点 (1) 网络透明性 (2) 协议独立性 (3) 介质/拓扑独立性 (4) 异域网络性 (5) 本地透明性 返回节
9.5.2 SQL*Net连接组分 • SQL*Net V2和TNS接口 : • SQL*Net对应于特定的数据库通讯 • TNS是一组基本网络服务器集合,它可由许多不同的应用类型使用
9.5.3 Multi Protocol Interchange (多协议交换) • Multi Protocol Interchange :一个软件组分成分, 它允许SQL*Net V2/TNS连接穿过若干“共同体” • “共同体”是共享相同网络协议结点的集合 • Interchange不是一个: • 协议门路 • 协议变转器 • 路由器或 • 桥
1. Interchange结构描述 图9.11 Interchange
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步 返回节
9.5.4 配置SQL*NET V2客户机(Client) • 配置(Configure)一个SQL*Net V2客户机需要如下信息: • 连接描述符/数据库名字 • 客户机所属的协议“共同体” • 登录(Logging)和轨迹(tracing)信息 • SQL* Net V2/TNS连接描述符指定; • 服务器上listener的地址。 • 所连接到的ORACLE实例名。
配置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 返回节
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)))
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’))) • 注意:要求启动一个专用服务器的关键字和将由平台而变化。 返回节
9.5.6 配置SQL*NET V2服务器(SERVER) • 各个Server的配置如下: • 文件 描述 • listener.ora listener 配置文件 • tsnames.ora 连接其它Server的连接描述符 • tnsnames.ora 现存的Interchanges列表。 • Sqlnet.ora 登录(logging)和轨迹信息。 • 注意:如果Server将不接触分布式数据库配置中的其它Server,则不要求tnsnames.ora
Server的配置步骤 (1)为配置工具准备数据库账号。 (2) 以net_conf/net_conf登录到配置工具。 (3) 启动、返回到主屏幕,和在主屏幕完成 (4) 命名网络。 (5) 命名“共同体”。 (6) 配置listener。命名listener、指定配置参数、指定数据库SID 、指定连接描述符名字、指定(client)连接来使用 、指定listener如何启动一个专用服务器。、指定为LSNRCTL安全性的密码。、指定被监控(monitor)的地址。 (7) 配置客户机(client) :命名客户、列表客户所属于的“共同体”。 (8) 生成配置文件。 返回节
9.5.7 启动LISTENER 1. 命令状态 格式:$ LSNRCTL Command [listener_name] 其中:[Listener_name]是可选的listener的名字。 2. 交互式状态 格式:LSNRCTL>command[listener_name] LSNRCTL>exit 返回节
9.6 表快照与复制 1. 人工复制表 • 运用Export/Import实用程序输出一个远程表拷贝 • 向远程表上发出一个SELECT语句,以在本地机上建立一个拷贝 • 从SQL*PLUS 发出COPY命令,来拷贝远程表
人工复制表例子 例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
表快照与复制 2.用触发器(TRIGGERS)复制表 3.自动复制和更新表:可用表快照(snapshots)自动复制表 • 表快照的特点: • 快照可包含来自多个主表的数据。 • 快照可以是一个集合操作(GROUP BY)。 • 快照可以是一个表的子集(行,列)。 返回章