作为世界领先的企业级数据库,DB2 9大大简化了提供的信息服务,加快了开发进程,同时极大地提高了运行效率、安全性以及可伸缩性。
本书全面介绍覆盖各个系统平台的DB2 9管理和开发的方方面面,并为准备最新的IBM DB2认证考试提供权威性的指导。
本书为数据库管理员和开发人员提供了有关部署和管理DB2 9的参考以及自学指南,包括:DB2数据库设计以及开发、日常管理和备份、部署网络的以Internet为中心并基于SOA的应用程序、迁移等。你也将从中发现大量提高数据库系统性能优化、可用性和价值的专业技巧。
重要的安全性以及可伸缩型的增强,包括高级访问控制、更细致的粒度、基于标号的安全性以及新的安全性管理规则。
具有突破性的pureXML功能,可以使我们更容易实现面向服务的架构。
提高DBA效率的操作改进,包括自主调节内存分配、自动存储管理以及存储优化。
表分区功能,提高了可扩展性以及可管理性。
在灵活性以及快速开发方面强大的改进,包括新的基于Eclipse开发者平台以及对所有数据使用简单的SQL或者XQuery进行访问。
来自IBM的有关运行DB2 9以及准备IBM DB2认证考试的最佳指南。
覆盖DB2 9增强的功能,从自动化管理到压缩的改进。
覆盖全面的数据库管理员的职责,包括服务器管理、数据放置、XML概念、活动分析、高可用性以及安全性。
提供DB2客户支持组织的专家提示以及最佳实践。
作者简介
George Baklarz 从DB2问世以来一直参与DB2的工作。他曾经在IBM中担当DB2相关的不同角色,包括产品研发、市场、销售、支持以及规划。
Paul C. Zikopoulos 是一个数据库专家,加拿大多伦多实验室的DB2认证高级技术专家以及DB2认证客户解决方案专家。他的著作包括:《DB2:The Complete Reference》和《DB2 for Dummies》。他与Baklarz合著有:《Apache Derby——Off to the Races》、《IBM DB2 9 New Features》。
下载完整的DB2 9试用版
访问ibm.com/db2/9/download.html下载一个DB2的完整试用版,通过它可以尝试几十个DB2的最强大功能:从pureXML支持到自动化管理和优化。
无
本书是IBM关系数据库服务器即DB2的完整指南。DB2数据库适用于多个操作系统,本书所述内容适用于LUW环境下的DB2版本。本书突出注明了DB2在不同操作系统上的显著差别。如果你计划通过认证或者想了解IBM新的功能强大的DB2数据库服务器,请继续向下阅读。对于那些有志成为IBM认证专家的人,可以查看本书附录A中的相关信息。
本书分为四个部分:
第一部分——DB2简介(第1~4章)
第2~4章讲述DB2服务器与客户端的安装与配置。
第二部分——使用SQL(第5~10章)
第5、6、7章讨论结构化查询语言(SQL)。第8章讲述新的pureXML功能,第9章讨论SQL PL编程语言。第10章讨论数据库并发性。
第三部分——DB2管理(第11~14章)
第11章讨论创建DB2数据库及其相关的表空间。第12、13章讨论DB2的常用管理任务。第14章介绍DB2数据库监控以及性能方面的注意事项。
第四部分——应用程序开发(第15~16章)
第15章介绍了针对DB2的应用程序开发。第16章介绍一些有关应用程序开发的DBA活动。需要注意的是,并不是这些章节中讲述的所有内容都是通过认证测试所必需的内容,但是它们无疑会帮助你将应用程序部署在产品环境当中。注意:有关DB2认证的更多详细信息可在wwwibmcom/certify找到。
体例
本书中包含许多的SQL语句、DB2命令以及操作系统命令。这些语句通常以如下的格式显示,同时语句中任何的代码部分都是使用大写字母的。如下所示:
SQL不是大小写敏感的语言,因此不管SQL关键字或者数据库对象(表名或列名)是大写还是小写形式,其查询结果都是一样的。当然,保存与数据库中的数据以及该数据库的输入格式(包括大小写)是绝对一致的。因此,上面这个查询只会找到姓为“ZIKOPOULOS”或“BAKLARZ”的考生。如果数据以“Zikopoulos”形式存储,那么就不会检索出来。
DB2命令在命令行处理器(CLP)工具中执行。该工具接收大小写字母的命令。CLP程序本身是一个名为db2的可执行文件。在某些操作系统当中,如AIX,程序名是大小写敏感的。因此,应当注意在输入程序名时使用适当的形式。
在本书中还有一些与操作系统相关的命令。如果命令必须是小写的,则以小写显示。例如,UNIX系统中创建用户的命令为mkuser。
在本书中还有一些语法图。我们建议使用命令行处理器或者参阅《DB2 Command Reference》来验证DB2命令的语法。使用《DB2 SQL Reference》来验证SQL语句的语法。
作者简介
George Baklarz已经在IBM工作了22年,从事各种不同的数据库技术研究。从1987年到1991年,他是SQL/DS中产品规划部门、系统测试团队、性能团队以及应用开发组中的一员。1991年,他作为协助将OS/2 ES数据库移植到DB2产品家族成员的团队成员之一进入多伦多实验室。从那时起,他从事于供应商授权、竞争力分析、产品营销、产品规划、销售和技术支持。现在,Baklarz负责Dynamic Warehousing的售前支持,并和客户一起协助了解DB2技术线路以及根据客户的反馈信息来改善产品。同时Baklarz还是加拿大Guelph大学关系型数据库课程的讲师。他的联系方式是gbaklarz@uoguelphca。
Paul C Zikopoulos是一个屡获殊荣的作家和IBM数据库竞争性技术团队的发言人。他拥有超过13年的DB2经验,并在150多个杂志中发表过文章,目前正着手他的第12本书。 Zikopoulos撰写的书籍包括:《Information on Demand: Introduction to DB2 95 New Features》、《DB2 9 Database Administration Certification Guide and Reference》 (6th Edition)、《DB2 9: New Features》、《Information on Demand: Introduction to DB2 9 New Features》、《Off to the Races with Apache Derby》、《DB2 Version 8: The Official Guide》、《DB2: The Complete Reference》、《DB2 Fundamentals Certification for Dummies》、《DB2 for Dummies》以及《A DBA s Guide to Databases on Linux》。Zikopoulos是一个DB2认证高级技术专家((DRDA和Cluster/EEE)和DB2认证解决方案专家 (商业智能和数据库管理)。他的联系方式是paulz_ibm@msncom。
作为世界领先的企业级数据库,DB2 9大大简化了提供的信息服务,加快了开发进程,同时极大地提高了运行效率、安全性以及可伸缩性。 本书全面介绍覆盖各个系统平台的DB2 9管理和开发的方方面面,并为准备最新的IBM DB2认证考试提供权威性的指导。 本书为数据库管理员和开发人员提供了有关部署和管理DB2 9的参考以及自学指南,包括:DB2数据库设计以及开发、日常管理和备份、部署网络的以Internet为中心并基于SOA的应用程序、迁移等。你也将从中发现大量提高数据库系统性能优化、可用性和价值的专业技巧。 重要的安全性以及可伸缩型的增强,包括高级访问控制、更细致的粒度、基于标号的安全性以及新的安全性管理规则。 具有突破性的pureXML功能,可以使我们更容易实现面向服务的架构。 提高DBA效率的操作改进,包括自主调节内存分配、自动存储管理以及存储优化。 表分区功能,提高了可扩展性以及可管理性。 在灵活性以及快速开发方面强大的改进,包括新的基于Eclipse开发者平台以及对所有数据使用简单的SQL或者XQuery进行访问。 来自IBM的有关运行DB2 9以及准备IBM DB2认证考试的最佳指南。 覆盖DB2 9增强的功能,从自动化管理到压缩的改进。 覆盖全面的数据库管理员的职责,包括服务器管理、数据放置、XML概念、活动分析、高可用性以及安全性。 提供DB2客户支持组织的专家提示以及最佳实践。 作者简介 George Baklarz 从DB2问世以来一直参与DB2的工作。他曾经在IBM中担当DB2相关的不同角色,包括产品研发、市场、销售、支持以及规划。 Paul C. Zikopoulos 是一个数据库专家,加拿大多伦多实验室的DB2认证高级技术专家以及DB2认证客户解决方案专家。他的著作包括:《DB2:The Complete Reference》和《DB2 for Dummies》。他与Baklarz合著有:《Apache Derby——Off to the Races》、《IBM DB2 9 New Features》。 下载完整的DB2 9试用版 访问ibm.com/db2/9/download.html下载一个DB2的完整试用版,通过它可以尝试几十个DB2的最强大功能:从pureXML支持到自动化管理和优化。
现如今的业务主管一致认为,有效地管理和利用信息做出决策比以往任何时候都更加重要。超过60%的CEO都感觉到他们的机构需要信息的整合以及改善(IBM Attributes and Capabilities Study, 2005)。CFO认为,如果他们有效地整合信息,他们能为机构创造5倍更多价值(IBM Global CFO Study, 2006)。同时,到2010年的时候,数据量每11个小时就翻一倍,此时按照小时数来统计的需求信息将会变得更为复杂。因此,大家不要奇怪于所需的数据库技能以及提高工资的要求比以往任何时候都要高。通过学习新技术和提高对工业领先产品的使用技能,专业技术人员的价值得到不断的提升。IBM DB2 9 for Linux, UNIX, and Windows(LUW) 是业界最先进的产品技术之一。
关系型数据库技术是20多年前由IBM研究机构发明的,早在20世纪80年代初期IBM就正式发布了第一个商用的关系数据库。现在全世界成千上万家企业依赖DB2数据库来存储他们的关键企业数据库资产,同时通过使用传统和Web两种方式开展他们的业务活动。IBM DB2 9 for Linux, UNIX, and Windows建立在这种业界领先的,能够圆满地提供在一台单独的数据服务器上并通过关系型以及pure XML数据的成本有效管理基础上,为用户提供所需的所有业务信息,以解决具有挑战性的新问题。
对DB2技术的需求在持续增长。全球60多个国家授权认证,1000多个机构教授DB2的相关课程。在2006年,想从Microsoft、Sybase以及Oracle转向DB2以扩展技能的DBA和开发者们已经发出35000多个下载请求。而且,DB2认证的费用一直都没有增加。2006年11月,《Certification Magazine》将DB2列为“Top Ten”IT专业认证之一,这也是其中惟一的一个数据库认证(《Certification Magazine》, “Certification Top 10 Lists Revisited”, Ed Tittel, 2006年11月, 第25页)。另外,2006年度薪资报告显示,DB2认证专家的工资增长速度已经超过了其他竞争对手的数据库认证(《Certification Magazine》, “CerMags 2006 Salary Survey”,Tegan Jones, Daniel Margolis, Brian Summerfield, Kellye Whitney & Sarah Stone Wunder, 200612)。
如今计算机领域内的一项持续性的挑战就是要为学习新技能而保留相应的时间,以便能够跟上技术更新换代的脚步。本书是你了解DB2、培养新技能、在计算机领域内为自己提供新机遇的一本非常好的工具书。希望你能够抓住眼前的机遇,使用本书来提高你的技能同时享受成为DB2认证专家所带来的好处。
Michael Agostino
业务部经理
数据服务器培训&认证
IBM 软件组
George Baklarz; Paul C.Zikopoulos:暂无简介
吴骅:暂无简介
DB2 9 Linux版、UNIX版和 Windows版提供了能够满足目前业务需求的新功能,这些业务需求包括:跨组织集成业务数据、降低 IT 成本、将有限的 IT 资源着重用于创建商业价值或为企业宝贵的信息资产提供安全灵活的信息管理系统。为了满足业务需求,DB2 9 引入了一些重要的新功能和增强功能:
使用新增的关系数据和XML数据混合服务器的作为服务提供的信息——基于本机的 XML 数据存储(pureXML)、支持 SQL 语句和 SQL/XML 函数中的 XML 数据类型、允许直接调用 XQuery 以及通过 DB2 数据服务器进行的 XML 数据访问和管理。
使用一组增强的应用程序开发工具更灵活地开发应用程序——DB2 开发者工作台、增强的用于 JDBC 和 SQLJ 的 DB2 驱动程序、对 Visual Studio 2005 的附加支持、增强的 DB2 运行时客户机。
可提高效率的自动化数据库管理新功能——自动存储器支持、自动统计信息收集、基于 DB2 数据库系统环境特征的预取程序和页清除程序的自动配置,以及表和索引自动重组的新策略选项。
使用表分区改进大数据库管理——根据一个或多个表列中的值将表数据划分到多个称为表分区或范围的存储对象中。
提高数据库安全性和灵活性的新功能——基于标号的访问控制(LBAC)、支持基于轻量级目录访问协议(LDAP)的认证和组查询的安全插件模块、新的安全管理员(SECADM)权限级别、SETSESSIONUSER 特权以及新增的TRANSFER OWNERSHIP 语句。
在大家备考 GRE、雅思的时候,考生手中会有红宝书和蓝宝书,正所谓一书在手,考试无忧。DB2 认证也有这样的一套由 IBM 公司专家编写的 DB2 认证丛书。该丛书对 DB2 认证考试具有很强的针对性,本书就是这套丛书中的一本。IBM加拿大多伦多实验室的DB2专家George Baklarz和Paul C Zikopoulos为准备参加DB2认证考试的考生精心撰写了本书,本书全面系统地介绍了DB2 9,因此它不仅是一本权威的认证指导书,而且对于从事DB2系统管理和开发的技术人员也有很高的参考价值。
虽然译者多年从事DB2数据库管理,但是DB2 9是一个全新的产品,它引入了大量的新技术、新特性,因此其中许多术语尚无固定的名称。此外,译者水平有限,译文中的不当之处在所难免,恳请同行及各位读者朋友不吝赐教,联系方式wuhua@gxuncn。
借此机会感谢王学昌先生对翻译工作的大力支持,同时还要感谢我的家人,没有他们的支持我无法完成这项工作!
译者
2008年10月于相思湖畔
译者序
序
前言
第一部分DB2简介
第1章产品概览
11信息服务
12Linux、UNIX和Windows
平台下的DB2
121DB2 Everyplace
122Apache Derby/IBM
Cloudscape
123DB2个人版
124DB2 Express和DB2工作组版
125DB2企业版
13DB2的连通性
131DB2客户机
132DB2驱动
133DB2 Connect
134DB2 Replication
135WebSphere Federation Server与
WebSphere Information
Server
136数据库企业开发者版
137DB2开发者工作台
138DB2 Extender
14DB2管理
141控制中心
142DB2复制中心
143控制中心的其他工具
144DB2健康中心
145DB2配置助手
146顾问程序和向导程序
147DB2命令行处理器
148Visual Explain
149DB2 Query Patroller
1410数据库监视器工具
1411DB2存储管理工具
1412DB2售后服务工具
15小结
第2章新手入门
21产品安装
211Windows环境下的安装
212Linux和UNIX环境下的安装
213多副本的安装
214响应文件安装
215使用DB2命令行处理器
22DB2环境
221DB2配置文件注册表
222环境变量
223DB2实例
224DB2管理服务器(DAS)
23小结
第3章网络连接
31DB2客户端概览
32建立分布式通信的途径
321使用DB2 Discovery进行
自动配置
322配置DB2 Discovery
323使用自动配置
324使用访问配置文件进行
自动配置
325使用配置助手进行手工
配置
326使用CLP进行手工配置
327连接配置的总结
328工具绑定
329使用配置助手进行
工具绑定
33小结
第4章数据访问控制
41安全性概览
411验证
412权限
413特权
414基于标号的访问控制
42审计
421缓冲审计日志写入
422审计设施的配置
423查看当前配置
424启动审计设施
425强制写审计日志
426提取审计日志
427删除审计日志
428停止审计设施
43小结
第二部分使用SQL
第5章数据库对象
51了解数据库对象
511数据类型
512表
513模式
514表空间
515视图
516索引
517程序包
518缓冲池
519事务
5110锁
5111日志文件
5112创建DB2数据库
52管理数据库对象
521使用SQL数据定义
语言(DDL)
522数据类型
53表
531惟一性约束
532引用完整性
533DB2物理表
534压缩表
535修改表
536多维集群
537范围集群表
538视图
539昵称
5310索引
54数据库设计与实现
541认证考试表的描述
542定义用户定义的数据类型
543定义列
544键
545定义主键
546定义惟一键
547定义外键
55小结
第6章操纵数据库对象
61数据检索
611检索整个表
612从表中投影列
613改变列的顺序
614在表中限制行
615限制结果表的大小
616用户定义的数据类型的
谓词表达式
617使用多个条件限制行
618从多个表中选择列
619使用关联名称
6110对输出排序
6111派生列
6112DB2函数
6113分组值
6114取消重复值
6115搜索串模式
6116在指定范围中搜索数据
6117搜索空值
6118否定条件搜索
6119搜索一组值
6120子查询
6121量化谓词
6122CASE表达式
6123嵌套表表达式
6124标量全选择
6125公共表表达式
6126集合运算
62数据修改
621插入行
622更新行
623删除数据
624搜索插入、更新和删除
625从更新、插入和删除中
选择
626合并数据
63视图分类
631可删除视图
632可更新视图
633可插入视图
634只读视图
635带UNION ALL的视图
636使用带有UNION ALL的
表空间
637不可操作的视图
64小结
第7章高级SQL
71触发器
711触发器的使用
712触发器激活
713Instead of触发器
72递归SQL
73外连接
731左外连接
732右外连接
733全外连接
734外连接的联合
74联机分析处理(OLAP)特性
741星型模式
742OLAP索引
743星型连接
744超级分组
745移动函数
746SQL抽样
75高级CASE表达式
751使用CASE表达式对
数值分组
752在函数中使用CASE表达式
76结构化类型以及类型化表
761创建结构化类型
762修改结构化类型
763创建类型化表
764删除类型化表
765在类型化表中插入行
766从类型化表中选择行
767更新和删除类型化
表中的行
768类型化表的物理实现
769引用列
7610视图层次
7611类型化表以及类型化视图上的
SQL函数
7612TYPE谓词
7613使用类型化表和视图时的
注意事项
7614类型化表层次的实例
77汇总表
771创建汇总表
772CURRENT REFRESH AGE
专用寄存器
773使用汇总表的一些
注意事项
774汇总表的系统编目信息
775用户维护的汇总表
776物化查询表
777物化查询表的设计
778函数依赖性
779统计视图
78序列
79高级函数
791ADMIN_CMD
792SQLERRM
793MULTIPLY_ALT
794快照表函数
795MQSeries函数
796健康快照函数
797Unicode函数
710小结
第8章pureXML存储引擎
81pureXML功能包
811在pureXML出现之前:XML的
传统存储
812XMLonly数据库
813在文件系统中存储XML
814关系型数据库LOB中的
XML
815XML分解存储在关系型
数据库的表中
82与众不同的pureXML
83创建启用XML功能的数据库
84创建带有pureXML列的表
85插入数据到pureXML列
86从pureXML列中选取数据
861SQL/XML介绍
862XQuery介绍
863SQL/XML、SQL或XQuery的
最佳实践
87更新和删除pureXML列
88索引pureXML列
89XML模式存储库(XSR)
810小结
第9章开发SQL
91用户定义的函数
911SQL体标量函数
912SQL体行函数
913SQL体表函数
92结构化数据类型
93模式和别名
931模式
932别名
94提交和回滚
95SQL过程语言
951BEGIN ATOMIC语句
952DECLARE语句
953CALL语句
954SET语句
955IF/THEN/ELSE语句
956WHILE语句
957FOR语句
958ITERATE语句
959LEAVE语句
9510RETURN语句
9511SIGNAL语句
9512GET DIAGNOSTICS语句
9513SQL PL实例
96存储过程
961存储过程中的SQL PL
962外部存储过程
97小结
第10章并发性
101并发性
102隔离级别
1021未提交读
1022游标稳定性
1023读稳定性
1024可重复读
1025隔离级别的选择
103锁
1031锁的属性
1032锁的转换
1033锁的升级
1034锁等待
1035锁定表语句
1036ALTER TABLE语句的
LOCKSIZE参数
1037在SQL中修改锁定级别
104小结
第三部分DB2管理
第11章数据存储管理
111处理器、内存、磁盘的
注意事项
1111处理器
1112内存
1113磁盘
112DB2存储模型
1121缓冲池
1122表空间
1123容器
113表空间设计
1131常规表空间
1132大型表空间
1133系统临时表空间
1134Extentsize
1135Pagesize
1136性能考虑
1137长字段数据
1138大对象数据
114实现样例
1141创建数据库
1142创建缓冲池
1143创建表空间
1144创建表
1145删除表空间
1146删除缓冲池
1147删除数据库
1148使用控制中心创建表空间
115自动存储器
116表空间维护
1161数据库文件
1162列示表空间
1163列示表空间容器
1164表空间的状态
1165有关表空间的系统
编目信息
1166向DMS表空间添加容器
117表(范围)分区
1171创建范围分区表
1172定义范围
1173插入和更新
1174指定分区范围
118小结
第12章数据维护
121移动数据
1211定界ASCII文件
1212非定界ASCII文件
1213IXF文件
1214工作表格式文件
122数据移动工具
1221导出工具(EXPORT)
1222导入工具(IMPORT)
1223装载工具(LOAD)
1224LOAD QUERY命令
1225SET INTEGRITY语句
1226DB2MOVE工具
123数据维护
1231分析数据的物理组织
1232表重组
1233生成统计信息
1234Rebind工具
124数据维护过程
1241模拟产品环境
1242DB2LOOK工具
125小结
第13章数据库恢复
131数据库恢复的概念
1311工作单元
1312事务
132恢复的类型
1321崩溃恢复
1322版本恢复
1323前滚恢复
133恢复策略
1331可恢复和不可恢复的
数据库
1332联机和脱机访问
134使用日志文件
1341日志缓冲区
1342主日志文件和辅助
日志文件
1343日志类型
1344日志文件的使用
135使用Backup和Restore进行
版本恢复
1351备份数据库
1352复原数据库
136前滚恢复
1361备份数据库
1362在表空间级别备份的例子
1363还原数据库
1364表空间级别复原的例子
1365前滚数据库和表空间
1366前滚期间的表空间状态
1367前滚的实例
137管理日志文件
1371日志文件命令模式
1372恢复日志文件放置
1373删除日志
1374删除日志文件命令
138其他需要考虑的恢复事宜
1381恢复需要的时间
1382日志文件存储的考虑事宜
1383停顿命令
1384恢复历史文件
1385与其他表相关联的表
1386删除表恢复
1387表的重组
1388大对象
1389联机和脱机表空间状态
139高可用性
1391SET WRITE命令
1392DB2INIDB命令
1393使用分离的镜像克隆
数据库
1394使用分离的镜像作为备用
数据库
1395使用分离的镜像作为
备份映像
1310高可用性灾难恢复
13101HADR工作原理
13102安装HADR
13103手工安装HADR
13104执行故障接管
13105监视HADR
13106使用客户机自动重新路由来自动
完成应用程序故障恢复
13107运行当中的软件升级
13108使用HADR的好处
1311小结
第14章监控和优化
141性能要素
1411优化准则
1412性能改进过程
1413可对系统进行多大程度上的
优化
1414非正式的做法
142DB2体系架构概述
1421进程模型
1422查询并行
1423DB2内存使用
1424SQL编译器概述
143DB2排序方法
144监控DB2系统
145数据库监控
1451数据库监视器
1452快照监控
1453事件监控
1454其他工具
146SQL监控
1461解释表
1462收集解释数据
1463检查解释信息
1464使用解释输出的准则
1465Index Advisor
1466配置数据资源
1467配置分区内并行
147诊断和问题确定
1471错误消息和SQL代码
1472DB2 UDB问题跟踪
148自调整内存管理器
149小结
第四部分应用程序开发
第15章应用程序开发概览
151DB2应用开发环境
152DB2编程接口
1521嵌入式SQL
1522调用级接口和ODBC
1523Java接口(JDBC和
SQLJ)
1524本机DB2 API
1525微软数据对象(DAO、RDO、
ADO和OLEDB)
1526DB2NET提供者支持
1527其他接口和工具
153小结
第16章开发考虑事项
161嵌入式SQL概述
1611创建程序包
1612绑定应用程序
162CLI和ODBC编程支持
1621动态嵌入与CLI
1622ODBC与CLI
1623设置CLI环境
163Java编程支持
1631JDBC编程
1632SQLJ编程
164DB2开发工作台
165小结
第五部分附录
附录ADB2 9认证考试目标
附录BDB2DEMO安装说明〖=A(〗1155788121718202023242526272929303031323335363638383839414141545659626565676875767878828384869197100106106108109110110112120127140141142142143143143143144144145147148148148149149149150150151151151152152152152155170171171176180185188193195200202205206208209210210210211211213213214215215216216216217217221222224225226228228229230230230231232233234235236237238239241242244244246250251251252252253256258258260260261261263265268269269269271272272273273273278279285285285286287288288289290290291292293295295297297297301302303303304304306306309309311313313314315315317318319323324324324325325325326328331332334340340342343344345353356357357359360360363368368369371371372375375375376378378379379380380381382387388396400401401407407408408408408409409411411412412412413416417417417418418419420420425426428428428429429429434434435435438438439439439439440445447447447448448449450452454455456456470472472473473474474474474481490507509512514514519521525526527527529531531531532532532532532533533533533534535535538539539546555555555556556557558558562562563563563563564564564565567567567567568568569569570570571571572574579581581583583585585588588589590590590591591592594596597598600600601608615621622622626632633633637638639642647655657657660661663664665666666667668670670670673677678678679683683684684685687696〖=〗