• DB2


    IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本。
    DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于所有常见的服务器操作系统平台下。 DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2采用了数据分级技术,能够使大型机数据很方便地下载到LAN数据库服务器,使得客户机/服务器用户和基于LAN的应用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。 DB2以拥有一个非常完备的查询优化器而著称,其外部连接改善了查询性能,并支持多任务并行查询。 DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。
    DB2除了可以提供主流的OS/390和VM操作系统,以及中等规模的AS/400系统之外,IBM还提供了跨平台(包括基于UNIX的LINUX,HP-UX,SunSolaris,以及SCOUnixWare;还有用于个人电脑的OS/2操作系统,以及微软的Windows 2000和其早期的系统)的DB2产品。DB2数据库可以通过使用微软的开放数据库连接(ODBC)接口,Java数据库连接(JDBC)接口,或者CORBA接口代理被任何的应用程序访问。
     
     

    版本

     
    DB2有众多的版本,或者是许可证。为了弱化“版本”的概念增强可选择性,IBM允许客户不购买他们不需要的特性。示例版本包括Express、Workgroup和Enterprise版本。基于Linux/UNIX/Windows的最复杂的版本是DB2 Data Warehouse Enterprise Edition,缩写为DB2 DWE。这个版本的偏重于混合工作负荷(线上交易处理和数据仓库)和商业智能的实现。DB2 DWE包括一些商务智能的特性例如ETL、数据发掘、OLAP加速以及in-line analytics。[1] 
    DB2 Everyplace
    主要用于移动计算。
    DB2
    DB2(3张)
    移动计算的真正力量并不在于移动设备本身,而是在于能够利用来自其他来源的数据。
    DB2 Everyplace 不仅仅是一种移动计算基础设施。它是一个完整的环境,包含了构建、部署和支持强大的电子商务应用程序所需的工具。DB2 Everyplace 提供一个“指纹” 引擎(大约200 KB),其中包含所有的安全特性,比如表加密和提供高性能的高级索引技术。
    它可以在当今最常见的各种手持设备上顺利地运行(提供多线程支持),比如:Palm OS、Microsoft Windows Mobile Edition、任何基于Windows 的32 位操作系统、Symbian、QNX Neutrino、Java 2 Platform. Micro Edition(J2ME)设备(比如RIM 的Blackberry pager)、嵌入式Linux 发布版(比如BlueCat Linux)等等。
    DB2 Personal Edition
    DB2 Personal Edition(DB2 Personal)是单用户RDBMS,运行于低价的商用硬件桌面计算机上。
    DB2 Personal 包含DB2 Express 的所有特性,但是有一个例外:远程客户机无法连接运行这个DB2 版本的数据库。
    DB2 Express - C
    DB2 Express - C 其实 不算是DB2 系列的一个版本,但是它提供了DB2 Express 的大多数功能。2006 年1 月,IBM 发布了这个特殊的DB2 免费版本,可以用于基于Linux 和Windows 的操作系统。
    DB2 Express Edition
    DB2 Express Edition(DB2 Express)是一种功能全面的支持Web 的客户机/服务器RDBMS。DB2 Express 可以用于基于Windows 和Linux 的工作站。DB2 Express 提供一个低价的入门级服务器,主要用于小型企业和部门的计算任务。
    DB2 Workgroup Edition
    DB2 Workgroup Edition(DB2 Workgroup)和DB2 Express Edition 功能相同,只是在服务器上可以安装的内存和价值单元(等于一个服务器处理器核心的能力)数量方面有区别。
    DB2 Enterprise Edition
    DB2 Enterprise Edition(DB2 Enterprise)是一种功能全面的支持Web 的客户机/服务器RDBMS。它可以用于所有支持的UNIX 版本、Linux 和Windows。DB2 Enterprise 适合作为大型和中型的部门服务器。DB2 Enterprise 包含DB2 Express 和DB2 Workgroup 的所有功能,还添加了其他功能。
    Data Enterprise Developer Edition
    Data Enterprise Developer Edition(DEDE)是为应用程序开发人员提供的特殊版本。这个版本提供了几个信息管理产品,使应用程序开发人员可以对应用程序进行设计、构建和建立原型,产生的应用程序可以部署在任何IBM 信息管理软件客户机或服务器平台上。在DB2 9 中,这个软件包已经取消了,由DB2 Express - C 取代。[1] 
     

    历史

     

    诞生与发展

    DB2拥有悠久的历史并且被很多人认为是最早使用SQL(同样最早被IBM开发)的数据库产品。
    1968:IBM 在 IBM 360 计算机上研制成功了 IMS V1,这是第一个也是最著名的和最为典型的层次型数据库管理系统。至今仍然还有企业在使用呢。
    1970:这是数据库历史上划时代的一年,IBM公司的研究员E.F.Codd 发表了业界第一篇关于关系数据库理论的论文"A Relational Model of Data for Large Shared Data Banks",首次提出了关系模型的概念。这篇论文是计算机科学史上最重要的论文之一,奠定了Codd博士"关系数据库之父"的地位。
    1973:IBM研究中心启动了 System R 项目,研究多用户与大量数据下关系型数据库的可行性,它为 DB2 的诞生打下了良好基础。由此取得了一大批对数据库技术发展具有关键性作用的成果,该项目于1988年被授予ACM软件系统奖。
    1974:IBM研究员Don Chamberlin 和 Ray Boyce 通过 System R 项目的实践,发表了论文"SEQUEL:A Structured English Query Language",提出了 SEQUEL 语言,此即 SQL 语言的原型。
    1975:IBM研究员Don Chamberlin 和 Morton Astrahan的论文 "Implentation of a Structured English Query Language",在 SEQUEL 的基础上 描述了 SQL 语言的第一个实现方案。这也是 System R 项目得出的重大成果之一。
    1976:IBM System R 项目组发表了论文"A System R: Relational Approach to Database Management",描述了一个关系型数据库的原型。IBM 的研究员Jim Gray 发表了名为"Granularity of Locks and Degrees of Consistency in a Shared DataBase"的论文,正式定义了数据库事务的概念和数据一致性的机制。
    1977:System R 原型在3个客户处进行了安装,这 3 个客户分别是:波音公 司、Pratt & Whitney 公司和 Upjohn 药业。这标志着 System R 从技术上已经是 一个比较成熟的数据库系统,能够支撑重要的商业应用了。
    1979:IBM研究员Pat Selinger在她的论文"Access Path Selection in a Relational Database Management System"中描述了业界第一个关系查询优化器。
    1980:IBM发布了 S/38 系统,该系统中集成了一个以 System R 为原型的数据库服务器。为了方便应用程序的移植,它的 API 与 S/3、S/32 的 API 一致。
    1981:由于发明了关系型数据库模型,IBM 的研究员E.F.Codd 接受了ACM 图灵奖,这是计算机科学界的最高荣誉。Codd 博士也是继查尔斯.巴赫曼(Charles W. Bachman) 之后,又一位由于在数据库领域做出巨大贡献而获此殊荣的计算机科学家。
    1982:IBMPC 的出现标志着 PC 产业开始孕育发展。在以后相当长的一段时间内,在各种品牌的个人电脑上标记着的"IBM PC Compatible"字样都见证着 IBM 在 这个领域的辉煌。
    1982:IBM发布了 SQL/DS for VSE and VM 。这是业界第一个以 SQL 作为接口的商用数据库管理系统。该系统也是基于 System R 原型所设计的。
    1983:IBM发布了DATABASE 2(DB2)for MVS(内部代号为"Eagle")。
    1986:System/38 V7 发布,该系统首次配置了查询优化器,能够对应用程序的存取计划进行优化。
    1987:IBM发布带有关系型数据库能力的 OS/2 V1.0扩展版,这是IBM第一次把关系型数据库处理能力扩展到微机系统。这也是 DB2 for OS/2、Unix and Window 的雏形。
    1988:IBM发布了SQL/400,为集成了关系型数据库管理系统的AS/400服务器提供了SQL支持。IDUG(国际DB2用户组织)组织成立。
    1989:IBM定义了 Common SQL 和 IBM 分布式关系数据库架构(DRDA),并在 IBM 所有的关系数据库管理系统上加以实现。 第一届 IDUG北美大会在美国芝加哥召开。
     

    走向全球化

    1992:第一届 IDUG欧洲大会在瑞士日内瓦召开。这标志着 DB2 应用的全球化。
    1993:
    1.IBM发布了DB2 for OS/2 V1(DB2 for OS/2 可以被简写为DB2/2)和 DB2 forRS/6000V1(DB2 for RS/6000 可以被简写为DB2/6000),这是 DB2 第 一次在Intel 和Unix 平台上出现。
    2.Louis V. Gerstner 入主 IBM。
    1994:
    1.DB2 For MVS V4 通过并行 Sysplex 技术的实现在主机上引入了分布式计算(数据共享)。
    2.IBM发布了运行在 RS/6000 SP2 上的 DB2 并行版 V1,DB2 从此有了能够适应大型数据仓库和复杂查询任务的可扩展架构。IBM 将 DB2 Common Server 扩展到 HP-UX 和 Sun Solaris 上。DB2 开始支持其他公司开发的 UNIX 平台。 DB2/400 集成在 OS/400 V3.1中发布,并且引入了并行机制、存储过程和参照完整性等机制。同时,IBM 宣布在 OS/2 和 AIX 平台上的 DB2 产品能够对多媒体数据和面向对象应用程序提供支持。
    1995:
    1.IBM发布了 DB2 Common Server V2,这是第一个能够在多个平台上运行的"对象-关系型数据库"(ORDB)产品,并能够对 Web 提供充分支持。DataJoiner for AIX 也诞生在这一年,该产品赋予了 DB2 对异构数据库的支持能力。DB2 在 Windows NT 和 SINIX平台上的第一个版本(DB2 V2)发布。
    2.IBM发布了在 AIX 和 MVS 平台上的数据挖掘技术,用于管理大文本、图像、音频、视频和指纹信息的扩展器(Extender)以及可以对数据仓库进行可视化构造和管理的Visual Warehouse。
    3.IBM发布了 DB2 WWW Connection V1 for OS/2 and AIX(该产品后来被更名为Net.Data)。该产品可以将数据库中的数据快速发布到 Web。第一届 IDUG 亚太区大会在澳大利亚悉尼召开。这年IBM 并购了 Lotus Development Corp。
    1996:
    1.IBM发布 DB2 V2.1.2 ,这是第一个真正支持 JAVA 和 JDBC 的数据库产品。
    2.DataJoiner 开始支持对非关系型数据库(比如 IMS 和 VSAM)的存取。
    3.IBM发布了 Intelligent Miner,该产品可以对基于 DB2 的数据源实施数据挖掘。
    4.IBM并购 Tivoli。 IBM 将 DB2 更名为 DB2 Universal Database,这是第一个能够对多媒体和 Web 进行支持的RDBMS。该系统具有很好的伸缩性,可以从桌面系统扩展到大型企业,适应单处理器、 SMP 和 MPP 计算环境,并可以运行在所有主流操作系统和硬件平台上。 DB2 V5 是以前的两个产品的合并:DB2 Common Server V 2.1.2 和 DB2 并行版 1.2。
    5.IBM发布了数字图书馆产品,这是一个多媒体资产管理产品,也是 IBM Content Manager 的前身。
    6.DB2 Magzine 第一期发布,DB2 有了自己专门的技术刊物。
    1997:
    1.IBM发布了可以支持 Web 的 DB2 for OS/390 V5,这是当时唯一能够支持64, 000个并发用户和百 TB 级别的数据库产品。
    2.IBM发布了DB2 UDB for UNIX、Windows and OS/2,该产品支持 ROLLUP 和 CUBE 函数,对联机分析处理(OLAP)具有重要意义。
    3.IDUG 第一次技术论坛在加拿大多伦多召开。
    4.IBM发布了用于企业级内容管理的 EDMSuite,该产品包含了用于管理计算机生成报表的 OnDemand 和 管理图像的 ImagePlus VisualInfo。
    5.IBM基于 RS/6000 SP 架构的超级计算机"深蓝"在国际象棋的 6 番棋对抗中战胜了世界棋王卡斯帕罗夫。
    1998:
    1.IBM发布了 DB2 OLAP Server,这是一个基于 DB2 的完整的 OLAP Solution。这个产品是和 Arbor Software(Hyperion的前身)合作开发的。
    2.IBM发布了 DB2 Data Links 技术,该技术可使 DB2 对外部文件进行管理。
    3.DB2的 shared-nothing集群技术扩展到 Windows 和 Solaris 平台。
    4.IBM发布了 DB2 Spatial Extender,这是与ESRI公司在DataJoiner基础 上联合开发的,该产品赋予了DB2 对地理信息数据的存取能力。
    5.IBM发布了 ContentConnect,该产品是 Enterprise Information Portal(EIP)的前身。
    6.DB2 对 SCO UnixWare 平台提供支持。
    7.DB2 UDB V5.2 增加了对 SQLJ、Java 存储过程和用户自定义函数的支持。
    8.IBM发布 DB2 UDB for AS/400,使 AS/400 成为充分支持电子商务的机 型。
    1999:
    1/IBM为了对移动计算提供支持,发布了DB2 UDB 卫星版和DB2 Everywhere(这是一个适用于手持设备的微型关系数据库管理系统,后称为DB2 Everyplace)。
    2/IBM发布了 Enterprise Information Portal,该产品可以跨数字图书 馆和 EDMSuite 提供一个统一的联合检索功能。
    3/DB2增加了能够识别 XML 语言的文本检索功能,从而引入了 XML 支 持,并启动了DB2 XML Extender 的 beta 计划。
    4/IBM发布了 Intel 平台上的 DB2 UDB for Linux。
    5/IBM 研究机构将 DB2 的联邦(federation)功能和 Garlic 技术(Garlic的目标是使能大规模多媒体信息系统,集成到生命科学解决方案DiscoveryLink 中
    2000:
    1/IBM发布了 DB2 XML Extender,成为在业界第一个为数据库提供内置 XML 支持的厂商。
    2/IBM将 Visual Warehouse 集成到 DB2 中,为DB2 提供了内置的数据仓库管理功能。
    3/DB2对Linux 的支持进一步增强,能够支持基于 Intel 的 Linux集群、 发布了可以运行在主机上的 DB2 UDB for Linux和可以运行在嵌入式Linux上的 DB2 Everyplace。
    4/DB2开始支持 NUMA-Q 平台,可以运行在该平台上的类 UNIX操作系统DYNIX/PTX 上。
    5/DB2通过 Net.Search Extender 提供了 in-memory 高速文本检索功能。
    6/IBM启动了数据库管理工具业务,起初着重于为主机上的 IMS 和 DB2 提供高效管理工具,最终这项业务扩展到 UNIX、Linux 和 Windows 平台。 Informix数据库产品也在支持之列。
    7/IBM开始通过在DB2中集成 DataJoiner 来提供数据联邦(federation)功能 。
    8/IBM发布了用于管理数字资产的Content Manager。IBM 数字图书馆和 EDMSuite 产品都被包含在一个单一的架构中来提供多媒体资产管理和企业内 容管理。荷兰国家图书馆、梵蒂冈图书馆都是最早的用户。
    9/DB2在主机上销售出了它的第10000个许可证。
    2001:
    1/IBM以 10 亿美金收购了 Informix 的数据库业务,这次收购扩大了IBM 的分布式数据库业务。
    2/DB2 OLAP Server中增添了数据挖掘功能。
    3/IBM发布了第一个能够支持多种平台的 DB2 工具。
    4/DB2提供了基于 SOAP 的 Web 服务的支持。DB2 XML Extender和存储过程可以使DB2成为 Web 服务的提供者。
    5/IBM科学家在纳米碳管晶体管技术领域取得突破。IBM 用纳米碳管制造出了世界上第一批纳米晶体管--由直径 10 个原子大小的碳原子组成的小圆柱结 构,比当今基于硅的晶体管小 500 倍。
    6/DB2拓宽了其数据联邦(federation)的能力,可以对WebSphere MQ消息队列和生命科学领域特定格式的文件提供支持。
    7/IBM发布了 DB2 UDB for OS/390。
    2002:
    1/IBM发布了 Xperanto,这是一个基于标准的信息集成中间件的演示版, 可以用来优化对分散数据源的存取。这个演示版本使用了XML、Xquery、Web 服 务、数据联邦(federation)和全文检索等先进技术。
    2/IBM宣布计划收购 Rational Software Corp,从而使得 IBM软件能够 支持从设计、开发、部署到管理和维护的完整过程。
    3/DB2通过基于 SOAP 的 Web 服务扩展了数据联邦(federation)的能力。并可以作为 Web 服务的使用者出现在 Web 服务架构中。
    4/DB2 OLAP Server中添加了hybrid(多维和关系)分析能力。
    5/作为IBM 自主运算策略的一部分,SMART(自我管理和资源调节)技术 在 DB2 UDB V8.1 中首次正式应用。
    6/IBM并购 Tarian Sotware,从而加强了Content Manager 中记录管理组 件的功能。
    2003:
    1/IBM将数据管理产品统一更名为信息管理产品,旨在改变很多用户对于 DB2 家族产品只能完成单一的数据管理的印象,强调了 DB2 家族在信息的处理与集成方面的能力。
    2/DYNIX/ptxDB2 发布了 DB2 Information Integrator(该产品由以 前的 DB2 DataJoiner和 Enterprise Information Portal演化而来),该款软件旨在帮助客户即时访问、集成、管理和分析存储于企业内外任何平台上的各类信息。
    2004:IBM DB2 在TPC 的两项测试中屡次刷新该测试的新纪录,在计算领 域的历史上树立了新的里程碑。其中在TPC-C 的测试中,它创造了计算速度领域新的世界记录,彻底粉碎了在该测试中每分钟三百万次交易的极限。
    2005:经过长达5年的开发,IBM DB2 9将传统的高性能、易用性与自描述、灵活的XML相结合,转变成为交互式、充满活力的数据服务器。
    2006:IBM发布DB2 9,将数据库领域带入XML时代。IT建设业已进入SOA(Service-Oriented Architecture)时代。实现SOA,其核心难点是顺畅解决不同应用间的数据交换问题。XML以其可扩展性、 与平台无关性和层次结构等特性,成为构建SOA时不同应用间进行数据交换的主流语言。而如何存储和管理几何量级的XML数据、直接支持原生XML文档成为SOA构建效率和质量的关键。在这这种情况下,IBM推出了全面支持Original XML的DB2 9,使XML数据的存储问题迎刃而解,开创了一个新的XML数据库时代。同年1月30日,IBM发布了一个DB2免费版本DB2Express-C。[1] 
     

    DB2 产品组件和功能

    DB2 数据库的产品组件如图
    DB2 数据库的产品组件DB2 数据库的产品组件
    DB2 Engine
      DB2 Engine 是整个数据库系统的核心,提供了 DB2 的基本功能。 DB2 引擎类似汽车的发动机,负责管理和控制对数据的存取;负责生成程序包(存储存取计划的数据库对象);提供事务的管理; 保障数据的完整性和数据保护; 提供应用程序并发控制。 数据库引擎(DB2Engine)设计的完善与否,决定了数据库系统是否稳定和高效。 DB2 Engine 是所有数据库中最强大的数据库引擎。
    DB2 客户机
      DB2 V9 大大简化了将应用程序连接到 DB2 数据库所需的基础设施的部署。 DB2 V9
      提供以下客户机:
    DB2 V9 Runtime Client (DB2 RTCL)DB2 V9 Client
    Java Common Client (JCC)
    DB2 V9 Client Lite
    还有 通信支持(Communication Support),DB2 Relational Connect, DB2 Data Joiner, DB2 扩展器(DB2 Extender) 等部分,有些部分不是必须的。
     

    复制迁移

    以下方法经测试,在环境IBM x346,3.2G×2,4G,RAID 1,DB2 V8.2.4,Win2000 Adv Server,DMS表空间中,数据的load速度在60-100万条/min左右。
    背景:需要更改数据库表空间,或者需要将数据库中所有表的数据迁移到一个新的数据库中。
    步骤:
    1.通过db2控制台(db2cc)选中源数据库中的所有表,将其导出成DDL脚本;
    2.根据需要对脚本进行必要的修改,譬如更改表空间为GATHER;
    3.新建数据库,新建DMS表空间:GATHER;
    4.将DDL脚本在此数据库中执行;
    5.编写代码查询源数据库中的所有表,自动生成export脚本;
    6.编写代码查询源数据库中的所有表,自动生成import脚本;
    7.连接源数据库执行export脚本;
    8.连接目标数据库执行import脚本;
    附录1:生成export脚本代码示例:/**
    * 创建导出脚本
    复制中的字符集转换复制中的字符集转换
    * @param conn
    * @param creator 表创建者
    * @param filePath
    */
    public void createExportFile(Connection conn,String creator,String filePath) throws Exception {
    DBBase dbBase = new DBBase(conn);
    String selectTableSql 2= "select name from sysibm.systables where creator = '" + creator + "' and type='T'";
    try {
    dbBase.executeQuery(selectTableSql2);
    } catch (Exception ex) {
    throw ex;
    } finally {
    dbBase.close();
    }
    DBResult result = dbBase.getSelectDBResult();
    List list = new ArrayList();
    while (result.next()) {
    String table = result.getString(1);
    list.add(table);
    }
    StringBuffer sb = new StringBuffer();
    String enterFlag = " ";
    for (int i = 0; i < list.size();i++) {
    String tableName = (String)list.get(i);
    sb.append("db2 "export to aa" + String.valueOf(i+1)+ ".ixf of ixf select * from " + tableName + """);
    sb.append(enterFlag);
    }
    String str = sb.toString();
    FileUtility.saveStringToFile(filePath, str, false);
    } 附录2:生成import脚本代码示例:/**
    * 创建装载脚本
    * @param conn
    * @param creator 表创建者
    * @param filePath
    */
    public void createLoadFile(Connection conn,String creator,String filePath) throws Exception {
    DBBase dbBase = new DBBase(conn);
    String selectTableSql = "select name from sysibm.systables where creator = '" + creator + "' and type='T'";
    try {
    dbBase.executeQuery(selectTableSql);
    } catch (Exception ex) {
    throw ex;
    } finally {
    dbBase.close();
    }
    DBResult result = dbBase.getSelectDBResult();
    List list = new ArrayList();
    while (result.next()) {
    String table = result.getString(1);
    list.add(table);
    }
    StringBuffer sb = new StringBuffer();
    String enterFlag = " ";
    for (int i = 0; i < list.size();i++) {
    String tableName = (String)list.get(i);
    sb.append("db2 "load from aa" + String.valueOf(i+1)+ ".ixf of ixf into " + tableName + " COPY NO without prompting "");
    sb.append(enterFlag);
    }
    String str = sb.toString();
    FileUtility.saveStringToFile(filePath, str, false);
    } 附录3:export脚本示例db2 connect to testdb user test password test
    db2 "export to aa1.ixf of ixf select * from table1"
    db2 "export to aa2.ixf of ixf select * from table2"
    db2 connect reset 附录4:import脚本示例db2 connect to testdb user test password test
    db2 "load from aa1.ixf of ixf replace into table1 COPY NO without prompting "
    db2 "load from aa2.ixf of ixf replace into table2 COPY NO without prompting "
    db2 connect reset
     

    原理

    学习路线图
     

    常用命令

    1.关闭db2
    db2stop 或db2stop force。
    在脚本中一般两个都写上,避免使用db2stop force命令,如:
    db2stop
    db2stop force
    2.启动db2
    db2start
    3.创建数据库
    db2 create db <db name>或db2 create db using codeset GBK territory CN
    4.删除数据库
    执行此操作要小心。
    db2 drop db <db name>
    如果不能删除,断开所有数据库连接或者重启db2。
    5.断开数据库连接
    db2 force application all
    6.连接数据库
    db2 connect to <db name> user <username> using <passWord>
    7.断开数据库连接
    断开当前数据库连接:
    db2 connect reset或者:db2 disconnect current
    断开所有数据库的连接:
    db2 disconnect all
    8.备份数据库
    db2 backup db <db name>
    备注:执行以上命令之前需要断开数据库连接
    9.恢复数据库
    db2 restore db <source db name>
    10.导出数据文件
    db2move <db name> export
    [-sn <模式名称,一般为db2admin>]
    [-tn <表名,多个之间用逗号分隔>]
    11.导入数据文件
    db2move <db name> import
    12.列出数据库中所有db
    db2 list db directory
    13.进入db2命令环境
    在“运行”中执行:db2cmd
    14.获取db2数据库管理配置环境信息
    db2 get dbm cfg
    15.获取db2某个数据库数据库管理配置环境信息
    db2 get db cfg for <db name>
    或者:连接至某个数据库以后执行db2 get db cfg。
    16.设置联合数据库为可用(默认联合数据库不可用)
    db2 update dbm cfg using federated yes
    17.更改db2日志空间的大小
    备注:以下命令为了防止db2数据库过份使用硬盘空间而设,仅用于开发者自己机器上的db2,如果是服务器,则参数需要修改。
    db2 UPDATE DB CFG FOR <db name> USING logretain OFF
    logPRimary 3 logsecond 2 logfilsiz 25600;
    如果页大小是4KB,则以上命令创建3个100M的日志文件,占用300MB硬盘空间。25600*4KB=102400KB。
    18.创建临时表空间
    DB2 CREATE USER TEMPORARY TABLESPACE STMaspACE PAGESIZE 32 K
    MANAGED BY DATABASE USING (FILE 'D:DB2_TABSTMASPACE.F1' 10000)
    EXTENTSIZE 256
    19.获取数据库管理器的快照数据
    db2 –v get snapshot for dbm
    20.显示进行程号
    db2 list applications show detail
    21.调查错误
    sqlcode:产品特定错误码;
    sqlstate:DB2系列产品的公共错误码,符合ISO/ANSI 92SQL标准。
    调查sqlcode : db2
    调查sqlstate: db2 ? 08004
    22.创建表空间
    rem 创建缓冲池空间 8K
    db2 connect to gather
    db2 CREATE BUFFERPOOL STMABMP IMMEDIATE SIZE 25000 PAGESIZE 8K
    rem 创建表空间:STMA
    rem 必须确认路径正确
    rem D:DB2ContainerStma
    db2 drop tablespace stma
    db2 CREATE
    REGULAR TABLESPACE STMA PAGESIZE 8 K
    MANAGED BY SYSTEM
    USING ('D:DB2ContainerStma' ) EXTENTSIZE 8
    OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL
    STMABMP
    DROPPED TABLE RECOVERY OFF
    db2 connect reset[1] 
    23. 将暂挂的数据恢复到前滚状态
    db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE NORETRIEVE
    24.备份表空间
    BACKUP DATABASE YNDC TABLESPACE ( USERSPACE1 )
    TO "D: emp" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING
    25.创建db2工具数据库
    db2 create tools catalog systools create new database toolsdb
    26.如何进行增量/差量备份
    增量:上一次完整备份至本次备份之间增加的数据部分;
    差量(delta):上次备份以来(可能是完整备份、增量备份或者差量备份)至本次备份之间增加的数据部分;
    27.更新所有表的统计信息
    db2 -v connect to DB_NAME
    db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"
    db2 -v reorgchkupdate statistics on table all
    db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"
    db2 -v terminate
    28.对一张表运行统计信息
    db2 -v runstatson table TAB_NAMEand indexes all
    29.查看是否对数据库执行了RUNSTATS
    db2 -v "select tbname, nleaf, nlevels,
    stats_timefrom sysibm.sysindexes"
    30.更改缓冲池的大小,缓冲池中,当syscat.bufferpools的npages是-1时,由数据库的配置参数bufferpage控制缓冲池的大小。
    将npages的值更改为-1的命令:
    db2 -v connect to DB_NAME
    db2 -v select * from syscat.bufferpools
    db2 -v alter bufferpoolIBMDEFAULTBP size -1
    db2 -v connect reset
    db2 -v terminate
    更改数据库配置参数BufferPages的命令如下:
    db2 -v update db cfgfor dbnameusing BUFFPAGE bigger_value
    db2 -v terminate
    31.查看数据库监视内容列表
    db2 -v get monitor switches
    32.打开某个数据库监视内容
    db2 -v update monitor switches using bufferpoolon
    33.获取数据库快照
    db2 -v get snapshot for all databases > snap.out
    db2 -v get snapshot for dbm>> snap.out
    db2 -v get snapshot for all bufferpools>> snap.out
    db2 -v terminate
    34.重置数据库快照
    db2 -v reset monitor all
    35.计算缓冲池命中率 理想情况下缓冲池命中率在95%以上,计算公式如下:
    (1 -((buffer pool data physical reads + buffer pool index physical reads)
    /(buffer pool data logical reads + pool index logical reads))) *100%
    36.创建db2实例
    db2icrt <实例名称>
    37.删除db2实例
    db2idrop <实例名称>
    38.设置当前db2实例
    set db2intance=db2
    39.显示db2拥有的实例
    db2ilist
    40.恢复离线增量备份数据库的命令
    DB2 RESTORE DATABASE YNDC INCREMENTAL AUTOMATIC FROM
    D:ackupautobakdb2 TAKEN AT
    41.创建样本数据库
    在unix平台,使用:
    sqllib/bin/db2sampl <path>
    在windows,os/2平台,使用:db2sampl e,e是可选参数,指定将创建数据库的驱动器;
    42.列出数据库中所有的表
    db2 list tables
    43.列出某个表的数据结构
    db2 describe table v_ro_role
    44.给表增加列
    ALTER TABLE STAFF
    ADD COLUMN PNHONE VARCHAR(20)
    45.数据迁移方法1
    export脚本示例
    db2 connect to testdb user test password test
    db2 "export to aa1.ixf of ixf select * from table1"
    db2 "export to aa2.ixf of ixf select * from table2"
    db2 connect reset
    import脚本示例
    db2 connect to testdb user test password test
    db2 "load from aa1.ixf of ixf replace into table1 COPY NO without prompting "
    db2 "load from aa2.ixf of ixf replace into table2 COPY NO without prompting "
    db2 connect reset[1] 
     

    错误处理

    DB2计算机程序一个重要的特征就是错误处理。SQL communications area(SQLCA)结构曾一度被专门用于DB2程序在每个SQL语句被执行后向应用程序返回错误信息。在SQLCA block中常见错误诊断被体现在SQLCODE中。
    SQL返回代码的值对应为:
    · 0表示成功执行
    · 正值表示成功执行但是有一个或多个警告。例如+100表示没有行被发现。
    · 负值表示出现错误。例如-911表示锁超时(或死锁),并触发撤消程序。
     

    精简版

    DB2 Express-C数据库提供全球范围的下载,但是并不是所有地方都有宽带网络。因此,IBM发布了一个基于Windows的DB2 Express-C 9.7.2精简版。较之完全版,精简版惊人的缩减了44%。
    不同于精简版,DB2 Express-C(完全版)包括控制中心、全文检索、配置助手以及第一步向导。同时完全版的用户界面还支持非英语语言。但是,如果用户不需要这些特性,则可以选择DB2 Express-C(精简版)进行快速下载和简单安装。
    精简版精简版
    例如,如果在Windows服务器上设置一个用Data Studio来进行远程管理的DB2数据库,那么DB2 Express-C精简版就是一个不错的选择。
  • 相关阅读:
    JSONP
    懒加载
    HTTP 状态代码
    java4中创建内对象的方法
    注册jdbc驱动程序的三种方式
    java Clone()克隆
    Class.forName()的理解
    Bitmap介绍
    前端-PC端瀑布流【10张图】
    百度小程序-图片画廊-使用previewImage方法实现
  • 原文地址:https://www.cnblogs.com/xtdxs/p/6540998.html
Copyright © 2020-2023  润新知