├── docs ├── Configuration.md ├── Tables.md ├── Tools.md ├── Instance.md ├── Database.md ├── Backup and restore.md ├── Installation.md ├── Troubleshooting.md ├── Introduction.md └── Installation on openSUSE.md ├── images └── SQL0964C The transaction log for the database is full..png ├── .gitignore ├── SUMMARY.md ├── README.md └── LICENSE /docs/Configuration.md: -------------------------------------------------------------------------------- 1 | # 配置 2 | -------------------------------------------------------------------------------- /images/SQL0964C The transaction log for the database is full..png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/waylau/db2-tutorial/HEAD/images/SQL0964C The transaction log for the database is full..png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Node rules: 2 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 3 | .grunt 4 | 5 | ## Dependency directory 6 | ## Commenting this out is preferred by some people, see 7 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git 8 | node_modules 9 | 10 | # Book build output 11 | _book 12 | 13 | # eBook build output 14 | *.epub 15 | *.mobi 16 | *.pdf 17 | -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | This is the summary of my book. 4 | 5 | * [介绍](docs/Introduction.md) 6 | * 安装服务器 7 | * [Windows](docs/Installation.md) 8 | * [Linux](docs/Installation on openSUSE.md) 9 | * [实例](docs/Instance.md) 10 | * [数据库](docs/Database.md) 11 | * [表](docs/Tables.md) 12 | * [配置](docs/Configuration.md) 13 | * [工具](docs/Tools.md) 14 | * [备份与还原](docs/Backup and restore.md) 15 | * [DB2常见问题排查](docs/Troubleshooting.md) 16 | -------------------------------------------------------------------------------- /docs/Tables.md: -------------------------------------------------------------------------------- 1 | 表 2 | ==== 3 | 4 | 使用前先连接到数据 5 | 6 | 列出所有表 7 | 8 | 9 | 用法: 10 | 11 | db2 list tables for schema 12 | 13 | 示例: 14 | 15 | 16 | ``` 17 | db2inst@db1:~> db2 list tables for schema db2inst 18 | 19 | Table/View Schema Type Creation time 20 | ------------------------------- --------------- ----- -------------------------- 21 | WHITE_PAPER DB2INST T 2014-11-14-15.26.13.447709 22 | WHITE_PAPER_SEASON DB2INST T 2014-11-14-15.26.14.410808 23 | 24 | 2 record(s) selected. 25 | 26 | db2inst@db1:~> 27 | 28 | ``` -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DB2 Tutorial 《DB2 教程》 2 | DB2 Tutorial takes you to learn DB2 step by step with a large number of samples. There is also a GitBook version of the book: . 3 | Let's [READ](SUMMARY.md)! 4 | 5 | DB2 Tutorial 是一本关于 DB2 的开源书。截至目前,DB2 最新版本为 10.5 。利用业余时间写了本书,图文并茂,用大量实例带你一步一步走进 DB2 的世界。如有疏漏欢迎指正,欢迎提问。感谢您的参与! 6 | 7 | ### Get Started 如何开始阅读 8 | 9 | 选择下面入口之一: 10 | 11 | * 的 [SUMMARY.md](SUMMARY.md)(源码) 12 | * 点击 Read 按钮(同步更新,国内访问速度一般) 13 | 14 | ### Issue 意见、建议 15 | 16 | 如有勘误、意见或建议欢迎拍砖 17 | 18 | ### Contact 联系作者: 19 | 20 | * Blog: [waylau.com](http://waylau.com) 21 | * Gmail: [waylau521(at)gmail.com](mailto:waylau521@gmail.com) 22 | * Weibo: [waylau521](http://weibo.com/waylau521) 23 | * Twitter: [waylau521](https://twitter.com/waylau521) 24 | * Github : [waylau](https://github.com/waylau) -------------------------------------------------------------------------------- /docs/Tools.md: -------------------------------------------------------------------------------- 1 | # 工具 2 | 3 | ## IBM Data Studio 4 | 5 | IBM Data Studio 是一个基于 Eclipse 的综合工具平台,它主要提供数据库的管理,数据库应用程序的开发功能,同时它也集成了 IBM Optim 家族中另一款产品 OQWT 的 SQL 调优的基本功能,而且这些功能都是免费的 , 另外 IBM Data Studio 的工具包中还包一个叫 Web Console 的工具,它允许你从浏览器监测数据库的性能和状态。DB2 控制中心所能完成的所有的数据库的管理功能,Data Studio 都可以实现,并且在 Data Studio3.1.1 中对这些功能还做了很多的改进,同时也增加了一些 DB2 控制中心不具备的数据库管理功能 6 | 7 | ### 下载 8 | 9 | 10 | 11 | 本例使用的是 带 IBM DB2 Analytics Accelerator Studio V5.1 的 Data Studio V4.1.2 客户端 Windows 12 | 13 | ### 安装 14 | 15 | 1. 下载后,能看到 ibm_idaa41_win.zip 压缩包,解压后,双击 launchpad.exe,选择“Install Product”,点击第一个“Launch administrative installation” 的 Install 按钮。 16 | 2. 点击“下一步” 17 | 3. 选择“我接受许可协议中的条款”,并点击“下一步” 18 | 4. 选择安装目录,点击“下一步” 19 | 5. 点击“安装” 20 | 6. 点击“重新启动 Installation Manager” 21 | 7. 在弹出的 IBM Installation Manager 窗口,点击“安装” 22 | 8. 在要安装的软件包里,勾选所有软件,点击“下一步” 23 | 9. 选择“我接受许可协议中的条款”,并点击“下一步” 24 | 10. 选择安装目录,并点击“下一步” 25 | 11. 选择安装目录,并点击“下一步” 26 | 12. 点击“下一步” 27 | 13. 点击“安装” -------------------------------------------------------------------------------- /docs/Instance.md: -------------------------------------------------------------------------------- 1 | # 实例 2 | 3 | ## 基本概念 4 | 5 | 实例是 DB2 数据库管理器中的逻辑环境。使用实例可以管理数据库。根据我们的要求,可以在一台物理机器创建多个实例。实例目录的内容是: 6 | 7 | * 数据库管理器配置 8 | * 文件系统数据库目录 9 | * 节点目录 10 | * 节点配置文件 [db2nodes.cfg] 11 | * 调试文件,转储文件 12 | 13 | 对于 DB2 数据库服务器,默认情况下是“DB2”。这不可以在创建后更改实例目录的位置。一个实例可以管理多个数据库。在一个实例,每个数据库都有一个唯一的名称,它自己的一套目录表,配置文件,权限和特权认证。 14 | 15 | 16 | 17 | ## 基本操作 18 | 19 | ### 列出所有在您的服务器上的实例 20 | 21 | db2ilist 22 | 23 | 创建一个名为 newinst 的新实例 24 | 语法: 25 | 26 | db2icrt= 27 | 28 | 示例: 29 | db2icrt newinst 30 | 31 | ### 切换到 newinst 实例,并验证它确实是您的当前实例。然后启动它。 32 | 33 | 语法: 34 | 35 | set db2instance= 36 | 37 | 示例: 38 | 39 | set db2instance=newinst 40 | 41 | 注意,等号=前后不能有空格 42 | 43 | 确证了 newinst 就是当前实例 44 | 45 | db2 get instance 46 | 47 | 输出: 48 | 49 | 当前数据库管理器实例是:NEWINST 50 | 51 | ### 启动一个实例。在此之前,需要运行“set instance”: 52 | 53 | db2start 54 | 55 | 输出: 56 | 57 | SQL1063N DB2START 处理成功。 58 | 59 | ### 停止当前实例 newinst 60 | 61 | db2stop 62 | 63 | ### 删除实例 newinst 64 | 65 | db2idrop newinst 66 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Way Lau 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs/Database.md: -------------------------------------------------------------------------------- 1 | # 数据库 2 | 3 | ## 基本概念 4 | 数据库是表,模式,缓冲池,日志,存储组和表空间合作有效地处理数据库操作的集合。 5 | 6 | ![](http://www.yiibai.com/uploads/allimg/141215/091I54530-0.png) 7 | 8 | ## 基本操作 9 | 10 | ### 列出当前实例可用的数据库目录列表 11 | 12 | 语法: 13 | 14 | db2 list db directory 15 | 16 | 17 | ### 创建数据库 18 | 19 | 语法: 20 | 21 | db2 create db 22 | 23 | 示例: 24 | 25 | db2 create db newdb 26 | 27 | 输出: 28 | 29 | DB20000I CREATE DATABASE 命令成功完成。 30 | 31 | 可以查看到当前数据库的目录 32 | 33 | ``` 34 | D:\Program Files\IBM\SQLLIB\BIN>db2 list db directory 35 | 36 | 系统数据库目录 37 | 38 | 目录中的条目数 = 1 39 | 40 | 数据库 1 条目: 41 | 42 | 数据库别名 = NEWDB 43 | 数据库名称 = NEWDB 44 | 本地数据库目录 = D: 45 | 数据库发行版级别 = 10.00 46 | 注释 = 47 | 目录条目类型 = 间接 48 | 目录数据库分区号 = 0 49 | 备用服务器主机名 = 50 | 备用服务器端口号 = 51 | ``` 52 | 53 | ### 删除数据库 54 | 55 | 语法: 56 | 57 | db2 drop db 58 | 59 | 示例: 60 | 61 | [db2inst@localhost ~]$ db2 drop db sample 62 | DB20000I The DROP DATABASE command completed successfully. 63 | 64 | 65 | ### 激活数据库 66 | 67 | 该命令启动了所有必要的服务,为特定的数据库,这样的数据库是可用的应用程序。 68 | 69 | 语法: 70 | 71 | db2 activate db 72 | 73 | 示例: 74 | 75 | db2 activate db newdb 76 | 77 | ### 停用数据库 78 | 79 | 使用此命令,可以停止数据库服务。 80 | 81 | 语法: 82 | 83 | db2 deactivate db 84 | 85 | 示例: 86 | 87 | db2 deactivate db newdb 88 | 89 | ### 连接到数据库 90 | 91 | 创建一个数据库,把它投入使用后,需要连接或启动数据库。 92 | 93 | 语法: 94 | 95 | db2 connect to 96 | 97 | 示例: 98 | 99 | db2 connect to newdb 100 | 101 | 输出: 102 | 103 | ``` 104 | D:\Program Files\IBM\SQLLIB\BIN>db2 connect to newdb 105 | 106 | 数据库连接信息 107 | 108 | 数据库服务器 = DB2/NT64 10.5.5 109 | SQL 授权标识 = ADMIN 110 | 本地数据库别名 = NEWDB 111 | ``` 112 | 113 | ## 用用户名和密码远程连接到数据库 114 | 115 | 语法: 116 | 117 | db2 connect to user using 118 | 119 | 示例: 120 | 121 | db2 connect to newdb user db2admin using 123abc 122 | 123 | 输出: 124 | 125 | ``` 126 | D:\Program Files\IBM\SQLLIB\BIN>db2 connect to newdb user db2admin using 123abc 127 | 128 | 129 | 数据库连接信息 130 | 131 | 数据库服务器 = DB2/NT64 10.5.5 132 | SQL 授权标识 = DB2ADMIN 133 | 本地数据库别名 = NEWDB 134 | ``` 135 | 136 | ## 验证数据库的权限 137 | 138 | 语法: 139 | 140 | ``` 141 | db2 "select substr(authority,1,25) as authority, d_user, d_group, d_public, role_user, role_group, role_public,d_role from table( sysproc.auth_list_authorities_for_authid ('public','g'))as t order by authority" 142 | ``` 143 | -------------------------------------------------------------------------------- /docs/Backup and restore.md: -------------------------------------------------------------------------------- 1 | # 备份与还原 2 | 3 | ## 备份 4 | 5 | 使用 Backup 命令,可以把整个数据库备份副本。该备份副本包括数据库系统文件,数据文件,日志文件,控制信息等。 6 | 7 | 可以备份脱机工作时或在线。 8 | 9 | 10 | ### 脱机备份 11 | 12 | 脱机表示当您执行您的操作时,没有其他的用户连接到数据库。 13 | 所以在备份前,要确保没有用户连接到数据库 14 | 15 | 语法:[列出活动的应用/数据库] 16 | 17 | db2 list application 18 | 19 | 若有,则需要强制到一个实例的所有数据库的所有连接 20 | 21 | 语法:[使用的应用程序强制应用程序。处理ID] 22 | 23 | db2 force application (39) 24 | 25 | 26 | 或者 27 | 28 | db2 force applications all 29 | 30 | 输出 31 | 32 | ``` 33 | D:\Program Files\IBM\SQLLIB\BIN> db2 force applications all 34 | DB20000I FORCE APPLICATION 命令成功完成。 35 | DB21024I 此命令为异步的,可能未能立即生效。 36 | ``` 37 | 38 | 39 | 语法:[终止数据库连接] 40 | 41 | db2 terminate 42 | 43 | 语法:[关闭数据库] 44 | 45 | db2 deactivate database newdb 46 | 47 | 语法:[执行备份文件] 48 | 49 | db2 backup db [to ] 50 | 51 | 52 | 示例: 53 | 54 | db2 backup db newdb to d:\ 55 | 56 | 输出 57 | 58 | ``` 59 | D:\Program Files\IBM\SQLLIB\BIN>db2 backup db newdb to d:\ 60 | 61 | 备份成功。此备份映像的时间戳记是:20160313173948 62 | ``` 63 | 64 | 查看备份的历史记录 65 | 66 | 示例: 67 | 68 | ``` 69 | D:\Program Files\IBM\SQLLIB\BIN>db2 list history backup all for newdb 70 | 71 | 列示 newdb 的历史记录文件 72 | 73 | 匹配的文件条目数 = 1 74 | 75 | 76 | Op Obj 时间戳记+序列 类型 设备 最早日志 当前日志 备份标识 77 | -- --- ------------------ ---- --- ------------ ------------ -------------- 78 | B D 20160313173948001 F D S0000000.LOG S0000000.LOG 79 | ---------------------------------------------------------------------------- 80 | 包含 3 表空间: 81 | 82 | 00001 SYSCATSPACE 83 | 00002 USERSPACE1 84 | 00003 SYSTOOLSPACE 85 | ---------------------------------------------------------------------------- 86 | Comment: DB2 BACKUP NEWDB OFFLINE 87 | 开始时间:20160313173948 88 | 结束时间:20160313173958 89 | 状态:A 90 | ---------------------------------------------------------------------------- 91 | EID:2 位置:d: 92 | ``` 93 | 94 | 95 | 如果执行了脱机备份,那么在备份完成后,必须重新激活该数据库: 96 | 97 | ``` 98 | db2 ACTIVATE DATABASE sample 99 | ``` 100 | 101 | ### 在线备份 102 | 103 | 104 | 在脱机备份的基础上,加上 online 关键字, 105 | 106 | 示例: 107 | 108 | 109 | db2 backup db newdb online to d:\ 110 | 111 | 112 | ## 从备份中还原数据库 113 | 114 | 语法: 115 | 116 | db2 restore db from taken at 117 | 118 | 示例: 119 | 120 | db2 restore db newdb from d:\ taken at 20160313173948 121 | 122 | 输出: 123 | 124 | ``` 125 | D:\Program Files\IBM\SQLLIB\BIN>db2 restore db newdb from d:\ taken at 201603131 126 | 73948 127 | SQL2539W 要复原的备份映像的指定名称与目标数据库的名称相同。复原到与备份映像数据 128 | 129 | 库相同的现有数据库时,会导致备份版本覆盖当前数据库。 130 | 想要继续吗?(y/n) y 131 | DB20000I RESTORE DATABASE 命令成功完成。 132 | ``` 133 | 134 | 135 | 更改数据库名称,语法: 136 | 137 | db2 restore db from taken at into 138 | 139 | ## 参考引用 140 | 141 | * 142 | * -------------------------------------------------------------------------------- /docs/Installation.md: -------------------------------------------------------------------------------- 1 | # 安装服务器 2 | 3 | ## 环境 4 | 5 | 本机演示的环境为: 6 | 7 | * 操作系统: Windows 7 旗舰版 64位 SP1 8 | * 处理器: 英特尔 第三代酷睿 i3-3110M @ 2.40GHz 双核 9 | * 内存 : 4 GB 10 | * DB2: Express-C 10.5(64-bit) 11 | 12 | ## 下载 Express-C 13 | 14 | 链接: 15 | 16 | **注:** 下载前,需要提供 IBM 账号,可以免费注册。 17 | 18 | ## 安装 19 | 20 | 1. 下载完成后,会有一个类似于 `v10.5_win64_expc.exe`可执行文件,双击运行。 21 | 2. 点击 Unzip 按钮进行解压。 22 | 3. 解压完成后,会弹出“DB2 安装启动板”,选择“安装产品”,并点击“安装新产品”。 23 | 4. 点击“下一步” 24 | 5. 选择“我接受IBM条款也接受非IBM条款”,点击“下一步” 25 | 6. 选择“典型安装”,点击“下一步” 26 | 7. 选择一个安装目录,点击“下一步” 27 | 8. 选择一个 SSH 安装目录,选择“不自动启动 IBM SSH Server”,这样就需要手动来启动该服务,点击“下一步” 28 | 9. 点击“下一步” 29 | 10. 配置用户信息,默认会创建一个“db2admin”用户,输入密码,点击“下一步” 30 | 11. 此时会自动默认配置一个数据库实例,点击“下一步” 31 | 12. 点击“完成”即可,程序就开始自动安装了 32 | 33 | 下面是完整的配置信息: 34 | 35 | ``` 36 | 要安装的产品: DB2 Express-C - DB2COPY1 37 | 38 | 安装类型: 典型 39 | 40 | 41 | 42 | DB2 副本名称: DB2COPY1 43 | 44 | 设置为缺省 DB2 副本: 是 45 | 46 | 设置为缺省 IBM 数据库客户机接口副本: 是 47 | 48 | 49 | 50 | 所选功能部件: 51 | 52 | 基本应用程序开发工具 53 | 54 | 基本客户机支持 55 | 56 | 管理工具 57 | 58 | IBM 数据服务器 .NET 提供程序 59 | 60 | 第一步 61 | 62 | Spatial Extender 客户机 63 | 64 | DB2 更新服务 65 | 66 | JDBC 支持 67 | 68 | DB2 LDAP 支持 69 | 70 | ODBC 支持 71 | 72 | OLE DB 支持 73 | 74 | 样本数据库源 75 | 76 | SQLJ 支持 77 | 78 | IBM Secure Shell Server for Windows 79 | 80 | DB2 WMI 提供程序 81 | 82 | 83 | 84 | 语言: 85 | 86 | 英语 87 | 88 | 简体中文 89 | 90 | 91 | 92 | 目标目录: D:\Program Files\IBM\SQLLIB 93 | 94 | 95 | 96 | 需要的空间: 945MB 97 | 98 | 特定于安装的驱动程序详细信息 99 | 100 | 用于 ODBC 和 CLI 的 IBM 数据服务器驱动程序的名称: IBM DB2 ODBC DRIVER - DB2COPY1 101 | 102 | OLE DB 提供程序 GUID: {9C7900DE-39B5-4C45-ABB7-25EB8B96085C} 103 | 104 | 105 | 106 | 新建实例: 107 | 108 | 实例名: DB2 109 | 110 | 重新引导时启动实例: 是 111 | 112 | TCP/IP 配置: 113 | 114 | 服务名称: db2c_DB2 115 | 116 | 端口号: 50001 117 | 118 | 实例用户信息: 119 | 120 | 用户名: db2admin 121 | 122 | 123 | 124 | DB2 管理服务器: 125 | 126 | 实例用户信息: 127 | 128 | 用户名: db2admin 129 | 130 | 131 | 132 | 133 | 134 | IBM Secure Shell Server for Windows: 135 | 136 | 137 | 138 | IBM SSH Server 目标目录: D:\Program Files\IBM\IBM SSH Server\ 139 | 140 | IBM SSH Server 服务启动类型: 手动 141 | 142 | 143 | 144 | 响应文件名: C:\Users\admin\Documents\PROD_EXPC.rsp 145 | ``` 146 | 147 | 148 | 安装完成后,会填出“DB2 第一步”的导航界面,这个小应用程序概述了几种不同的选择让您开始使用 DB2,如创建默认的示例数据库(适当命名 149 | 的 SAMPLE) 或创建您自己的新的数据库。如果您不想要探索通过第一步的 DB2 在这个时候,您可以关闭该窗口,并在稍后时间调用。 150 | 151 | 要手动启动 Windows DB2 的第一步, 选择“开始” ->“程序” - > “IBM DB2” -> “DB2COPY1”(默认) -> “设置了工具” - > “第一步骤” 或运行命令,从命令提示符 db2fs。 152 | 153 | ## 验证安装 154 | 155 | 需要验证下安装是否正确。可以从DB2 命令窗口(DB2 Command Window)(适用于 Windows)或从终端(适用于 Linux)上,运行三个命令来验证您的安装状态良好: 156 | 157 | * **db2level**: 此命令显示有关的 DB2 安装的产品,修订包的水平,和其他详细信息。 158 | * **db2licm -l**: 此命令会列出您所安装的 DB2 信息。 159 | * **db2val**:它会验证您所安装的拷贝的核心功能。它会验证您所创建的实例是一致的,并验证数据库的创建及数据库连接。 160 | 161 | 完整的命令执行和输出如下: 162 | 163 | ``` 164 | D:\Program Files\IBM\SQLLIB\BIN>db2level 165 | DB21085I 此实例或安装(适用的实例名:"DB2")使用 "64" 位和级别标识为 "0606010E" 166 | 167 | 的 DB2 代码发行版 "SQL10055"。 168 | 参考标记为 "DB2 v10.5.500.107"、"s141128" 和 "IP23628",修订包为 "5"。 169 | 产品使用 DB2 副本名 "DB2COPY1" 安装在 "D:\PROGRA~1\IBM\SQLLIB" 中。 170 | 171 | D:\Program Files\IBM\SQLLIB\BIN>db2licm -l 172 | 产品名: "DB2 Express-C" 173 | 许可证类型: "无担保" 174 | 到期日期: "永久" 175 | 产品标识: "db2expc" 176 | 版本信息: "10.5" 177 | 最大 CPU 数目: "2" 178 | 最大内存量 (GB): "16" 179 | 强制策略: "软停止" 180 | 181 | D:\Program Files\IBM\SQLLIB\BIN>db2val 182 | 183 | 184 | DBI1379I db2val 命令正在运行。这可能要花几分钟才能完成。 185 | 186 | DBI1333I 验证 DB2 副本 DB2COPY1 的安装文件成功。 187 | 188 | DBI1339I 验证实例 DB2 成功。 189 | 190 | DBI1343I 成功完成了 db2val 命令。有关详细信息,请参阅日志文件 C:\Users\admin\DO 191 | CUME~1\DB2LOG\db2val-Sun Mar 13 13_57_52 2016.log。 192 | ``` 193 | 194 | 195 | ## 安装 SAMPLE 数据库 196 | 197 | 198 | SAMPLE 数据库是 DB2 提供的演示用数据库,可以简单的步骤来快速创建该数据库: 199 | 200 | ![](http://99btgc01.info/uploads/2016/04/clipboard%282%29.png) 201 | 202 | 点击“下一步”,选择磁盘,点击“确定” 即可,执行步骤如下: 203 | 204 | ``` 205 | Creating database "SAMPLE" on path "D:"... 206 | Connecting to database "SAMPLE"... 207 | Creating tables and data in schema "ADMIN"... 208 | Creating tables with XML columns and XML data in schema "ADMIN".. 209 | 'db2sampl' processing complete. 210 | ``` -------------------------------------------------------------------------------- /docs/Troubleshooting.md: -------------------------------------------------------------------------------- 1 | DB2 常见问题排查 2 | ==== 3 | 4 | ## 备份或者还原未完成 5 | 6 | ### 问题 7 | 8 | 执行操作,提示如下: 9 | 10 | ``` 11 | [db2inst@localhost ~]$ db2 deactivate db necc_db 12 | SQL1120N A connection to or activation of database "NECC_DB" cannot be made 13 | because a previous backup or restore is incomplete. SQLSTATE=57019 14 | ``` 15 | 16 | ### 排查 17 | 18 | 根据 19 | 描述:“因为先前备份或复原不完整,所以不能连接或激活数据库 名称。” 20 | 21 | ### 解决 22 | 23 | 直接删除了数据,再执行还原该数据库 24 | 25 | ``` 26 | [db2inst@localhost ~]$ db2 drop db necc_db 27 | DB20000I The DROP DATABASE command completed successfully. 28 | ``` 29 | 30 | 31 | ## 还原完后不能连接到数据库 32 | 33 | ### 问题 34 | 35 | 从备份中恢复DB2数据库(本例是指“NECC_DB”)的拷贝到新的DB2服务器(本例是指“NECC_DBA”)。 36 | 用户已创建一个新的数据库连接(指向这个新的数据库副本),当试图连接这个新的数据库时,提示如下错误: 37 | 38 | ``` 39 | [db2inst@localhost ~]$ db2 connect to necc_db 40 | SQL1117N A connection to or activation of database "NECC_DB" cannot be made 41 | because of ROLL-FORWARD PENDING. SQLSTATE=57019 42 | ``` 43 | 44 | ### 排查 45 | 46 | 出现SQL1117N 由于 ROLL-FORWARD PENDING,不能连接或激活数据库 "NECC_DBA"。 47 | 48 | ### 解决 49 | 50 | 将数据库前滚。 51 | 52 | 执行: 53 | 54 | `db2 rollforward db complete` 55 | 56 | 如: 57 | 58 | ``` 59 | [db2inst@localhost ~]$ db2 rollforward db necc_dba complete 60 | 61 | Rollforward Status 62 | 63 | Input database alias = necc_dba 64 | Number of members have returned status = 1 65 | 66 | Member ID = 0 67 | Rollforward status = not pending 68 | Next log file to be read = 69 | Log files processed = - 70 | Last committed transaction = 2016-04-27-09.18.11.000000 UTC 71 | 72 | DB20000I The ROLLFORWARD command completed successfully. 73 | [db2inst@localhost ~]$ 74 | ``` 75 | 76 | ## 空间不足不能执行命令 77 | 78 | ### 问题 79 | 80 | 执行 db2 语句创建或者删除数据库操作,均出现如下提示 81 | 82 | ``` 83 | SQL1004C There is not enough storage on the file system to process the command. 84 | ``` 85 | ### 排查 86 | 87 | 用户的磁盘不够了。增加用户磁盘,或者删除一些数据,来增大用户能使用的空间。 88 | 89 | ### 解决 90 | 91 | 删除了没有用的数据库和老旧的数据库备份文件。 92 | 93 | 94 | 95 | ## 事务日志已经满 96 | 97 | ### 问题 98 | 99 | 执行 db2 语句创建数据库索引、或者执行修改操作,均出现如下提示 100 | 101 | ``` 102 | DB2 Database Error: ERROR [57011] [IBM][DB2/LINUXX8664] SQL0964C The transaction log for the database is full. 103 | ``` 104 | 105 | ![](../images/SQL0964C The transaction log for the database is full..png) 106 | 107 | ### 排查 108 | 109 | 事务日志已满。 110 | 111 | 通过 `db2 => get db cfg` 语句来查看日志文件的配置: 112 | 113 | ``` 114 | Log file size (4KB) (LOGFILSIZ) = 1024 115 | Number of primary log files (LOGPRIMARY) = 13 116 | Number of secondary log files (LOGSECOND) = 12 117 | ``` 118 | ### 解决 119 | 120 | 把日志文件的大小和日志文件的数量扩充。 121 | 122 | ``` 123 | db2 => update db cfg using LOGFILSIZ 10240 124 | DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. 125 | SQL1363W Database must be deactivated and reactivated before the changes to 126 | one or more of the configuration parameters will be effective. 127 | db2 => update db cfg using LOGPRIMARY 100 128 | DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. 129 | SQL1363W Database must be deactivated and reactivated before the changes to 130 | one or more of the configuration parameters will be effective. 131 | db2 => update db cfg using LOGSECOND 100 132 | DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. 133 | db2 => 134 | ``` 135 | 136 | ## 连接数据库,分配共享内容失败,内核限制 137 | 138 | ### 问题 139 | 140 | 连接到数据库时,出现如下提示 141 | 142 | ``` 143 | ERROR [57019] [IBM] SQL1084C The database manager failed to allocate shared memory because an operating system kernel memory limit has been reached. SQLSTATE=57019 144 | ``` 145 | 146 | http://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.messages.sql.doc/doc/msql01084c.html 147 | 148 | ## 创建字段 varchar 设置过大 149 | 150 | ### 问题 151 | 152 | 创建字段时,varchar 设置为 500 ,报错 153 | 154 | ``` 155 | SQL 错误 [42727]: A table space could not be found with a page size of at least "8192" that authorization ID "DB2INST" is authorized to use.. SQLCODE=-286, SQLSTATE=42727, DRIVER=4.16.53 156 | com.ibm.db2.jcc.am.SqlSyntaxErrorException: A table space could not be found with a page size of at least "8192" that authorization ID "DB2INST" is authorized to use.. SQLCODE=-286, SQLSTATE=42727, DRIVER=4.16.53 157 | ``` 158 | 159 | * http://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.dbobj.doc/doc/c0061057.html 160 | * http://www.db2china.net/Question/39301 161 | * http://www.west.cn/www/info/28275-1.htm 162 | 163 | ``` 164 | db2 => connect to necc_db 165 | 166 | Database Connection Information 167 | 168 | Database server = DB2/LINUXX8664 10.1.0 169 | SQL authorization ID = DB2INST 170 | Local database alias = NECC_DB 171 | 172 | db2 => LIST TABLESPACES SHOW DETAIL 173 | 174 | Tablespaces for Current Database 175 | 176 | Tablespace ID = 0 177 | Name = SYSCATSPACE 178 | Type = Database managed space 179 | Contents = All permanent data. Regular table space. 180 | State = 0x0000 181 | Detailed explanation: 182 | Normal 183 | Total pages = 32768 184 | Useable pages = 32764 185 | Used pages = 32244 186 | Free pages = 520 187 | High water mark (pages) = 32244 188 | Page size (bytes) = 4096 189 | Extent size (pages) = 4 190 | Prefetch size (pages) = 4 191 | Number of containers = 1 192 | 193 | Tablespace ID = 1 194 | Name = TEMPSPACE1 195 | Type = System managed space 196 | Contents = System Temporary data 197 | State = 0x0000 198 | Detailed explanation: 199 | Normal 200 | Total pages = 1 201 | Useable pages = 1 202 | Used pages = 1 203 | Free pages = Not applicable 204 | High water mark (pages) = Not applicable 205 | Page size (bytes) = 4096 206 | Extent size (pages) = 32 207 | Prefetch size (pages) = 32 208 | Number of containers = 1 209 | 210 | Tablespace ID = 2 211 | Name = USERSPACE1 212 | Type = Database managed space 213 | Contents = All permanent data. Large table space. 214 | State = 0x0000 215 | Detailed explanation: 216 | Normal 217 | Total pages = 16384 218 | Useable pages = 16352 219 | Used pages = 14048 220 | Free pages = 2304 221 | High water mark (pages) = 14048 222 | Page size (bytes) = 4096 223 | Extent size (pages) = 32 224 | Prefetch size (pages) = 32 225 | Number of containers = 1 226 | 227 | Tablespace ID = 3 228 | Name = SYSTOOLSPACE 229 | Type = Database managed space 230 | Contents = All permanent data. Large table space. 231 | State = 0x0000 232 | Detailed explanation: 233 | Normal 234 | Total pages = 8192 235 | Useable pages = 8188 236 | Used pages = 192 237 | Free pages = 7996 238 | High water mark (pages) = 192 239 | Page size (bytes) = 4096 240 | Extent size (pages) = 4 241 | Prefetch size (pages) = 4 242 | Number of containers = 1 243 | 244 | db2 => 245 | ``` 246 | 247 | 248 | ALTER TABLESPACE tablespacename CONVERT TO LARGE 249 | 250 | 251 | 252 | ## 参考引用 253 | 254 | * 255 | * -------------------------------------------------------------------------------- /docs/Introduction.md: -------------------------------------------------------------------------------- 1 | # 介绍 2 | 3 | ## DB2 简介 4 | 5 | IBM DB2 是美国 IBM 公司开发的一套关系型数据库管理系统,它主要的运行环境为 UNIX(包括 IBM 自家的 AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及 Windows 服务器版本。 6 | 7 | DB2 主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于所有常见的服务器操作系统平台下。 DB2 提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和 SQL 命令。DB2 采用了数据分级技术,能够使大型机数据很方便地下载到 LAN 数据库服务器,使得客户机/服务器用户和基于 LAN 的应用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。 DB2 以拥有一个非常完备的查询优化器而著称,其外部连接改善了查询性能,并支持多任务并行查询。 DB2 具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。 8 | 9 | DB2 除了可以提供主流的OS/390和VM操作系统,以及中等规模的 AS/400 系统之外,IBM 还提供了跨平台(包括基于 UNIX 的 LINUX,HP-UX,SunSolaris,以及 SCOUnixWare;还有用于个人电脑的 OS/2操作系统,以及微软的 Windows 2000 和其早期的系统)的DB2产品。DB2 数据库可以通过使用微软的开放数据库连接(ODBC)接口,Java 数据库连接(JDBC)接口,或者 CORBA 接口代理被任何的应用程序访问。 10 | 11 | ## DB2 简史 12 | 13 | * 诞生与发展 14 | * DB2拥有悠久的历史并且被很多人认为是最早使用SQL(同样最早被IBM开发)的数据库产品。 15 | * 1968:IBM 在 IBM 360 计算机上研制成功了 IMS V1,这是第一个也是最著名的和最为典型的层次型数据库管理系统。至今仍然还有企业在使用呢 16 | * 1970:这是数据库历史上划时代的一年,IBM公司的研究员E.F.Codd 发表了业界第一篇关于关系数据库理论的论文"A Relational Model of Data for Large Shared Data Banks",首次提出了关系模型的概念。这篇论文是计算机科学史上最重要的论文之一,奠定了Codd博士"关系数据库之父"的地位。 17 | * 1973:IBM研究中心启动了 System R 项目,研究多用户与大量数据下关系型数据库的可行性,它为 DB2 的诞生打下了良好基础。由此取得了一大批对数据库技术发展具有关键性作用的成果,该项目于1988年被授予ACM软件系统奖。 18 | * 1974:IBM研究员Don Chamberlin 和 Ray Boyce 通过 System R 项目的实践,发表了论文"SEQUEL:A Structured English Query Language",提出了 SEQUEL 语言,此即 SQL 语言的原型。 19 | * 1975:IBM研究员Don Chamberlin 和 Morton Astrahan的论文 "Implentation of a Structured English Query Language",在 SEQUEL 的基础上 描述了 SQL 语言的第一个实现方案。这也是 System R 项目得出的重大成果之一。 20 | * 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"的论文,正式定义了数据库事务的概念和数据一致性的机制。 21 | * 1977:System R 原型在3个客户处进行了安装,这 3 个客户分别是:波音公 司、Pratt & Whitney 公司和 Upjohn 药业。这标志着 System R 从技术上已经是 一个比较成熟的数据库系统,能够支撑重要的商业应用了。 22 | * 1979:IBM研究员Pat Selinger在她的论文"Access Path Selection in a Relational Database Management System"中描述了业界第一个关系查询优化器。 23 | * 1980:IBM发布了 S/38 系统,该系统中集成了一个以 System R 为原型的数据库服务器。为了方便应用程序的移植,它的 API 与 S/3、S/32 的 API 一致。 24 | * 1981:由于发明了关系型数据库模型,IBM 的研究员E.F.Codd 接受了ACM 图灵奖,这是计算机科学界的最高荣誉。Codd 博士也是继查尔斯.巴赫曼(Charles W. Bachman) 之后,又一位由于在数据库领域做出巨大贡献而获此殊荣的计算机科学家。 25 | * 1982:IBMPC 的出现标志着 PC 产业开始孕育发展。在以后相当长的一段时间内,在各种品牌的个人电脑上标记着的"IBM PC Compatible"字样都见证着 IBM 在 这个领域的辉煌。 26 | * 1982:IBM发布了 SQL/DS for VSE and VM 。这是业界第一个以 SQL 作为接口的商用数据库管理系统。该系统也是基于 System R 原型所设计的。 27 | * 1983:IBM发布了DATABASE 2(DB2)for MVS(内部代号为"Eagle")。 28 | * 1986:System/38 V7 发布,该系统首次配置了查询优化器,能够对应用程序的存取计划进行优化。 29 | * 1987:IBM发布带有关系型数据库能力的 OS/2 V1.0扩展版,这是IBM第一次把关系型数据库处理能力扩展到微机系统。这也是 DB2 for OS/2、Unix and Window 的雏形。 30 | * 1988:IBM发布了SQL/400,为集成了关系型数据库管理系统的AS/400服务器提供了SQL支持。IDUG(国际DB2用户组织)组织成立。 31 | * 1989:IBM定义了 Common SQL 和 IBM 分布式关系数据库架构(DRDA),并在 IBM 所有的关系数据库管理系统上加以实现。 第一届 IDUG北美大会在美国芝加哥召开。 32 | * 走向全球化 33 | * 1992:第一届 IDUG欧洲大会在瑞士日内瓦召开。这标志着 DB2 应用的全球化。 34 | * 1993: 35 | * 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 平台上出现。 36 | * 2.Louis V. Gerstner 入主 IBM。 37 | * 1994: 38 | * 1.DB2 For MVS V4 通过并行 Sysplex 技术的实现在主机上引入了分布式计算(数据共享)。 39 | * 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 产品能够对多媒体数据和面向对象应用程序提供支持。 40 | * 1995: 41 | * 1.IBM发布了 DB2 Common Server V2,这是第一个能够在多个平台上运行的"对象-关系型数据库"(ORDB)产品,并能够对 Web 提供充分支持。DataJoiner for AIX 也诞生在这一年,该产品赋予了 DB2 对异构数据库的支持能力。DB2 在 Windows NT 和 SINIX平台上的第一个版本(DB2 V2)发布。 42 | * 2.IBM发布了在 AIX 和 MVS 平台上的数据挖掘技术,用于管理大文本、图像、音频、视频和指纹信息的扩展器(Extender)以及可以对数据仓库进行可视化构造和管理的Visual Warehouse。 43 | * 3.IBM发布了 DB2 WWW Connection V1 for OS/2 and AIX(该产品后来被更名为Net.Data)。该产品可以将数据库中的数据快速发布到 Web。第一届 IDUG 亚太区大会在澳大利亚悉尼召开。这年IBM 并购了 Lotus Development Corp。 44 | * 1996: 45 | * 1.IBM发布 DB2 V2.1.2 ,这是第一个真正支持 JAVA 和 JDBC 的数据库产品。 46 | * 2.DataJoiner 开始支持对非关系型数据库(比如 IMS 和 VSAM)的存取。 47 | * 3.IBM发布了 Intelligent Miner,该产品可以对基于 DB2 的数据源实施数据挖掘。 48 | * 4.IBM并购 Tivoli。 IBM 将 DB2 更名为 DB2 Universal Database,这是第一个能够对多媒体和 Web 进行支持的RDBMS。该系统具有很好的伸缩性,可以从桌面系统扩展到大型企业,适应单处理器、 SMP 和 MPP 计算环境,并可以运行在所有主流操作系统和硬件平台上。 DB2 V5 是以前的两个产品的合并:DB2 Common Server V 2.1.2 和 DB2 并行版 1.2。 49 | * 5.IBM发布了数字图书馆产品,这是一个多媒体资产管理产品,也是 IBM Content Manager 的前身。 50 | * 6.DB2 Magzine 第一期发布,DB2 有了自己专门的技术刊物。 51 | * 1997: 52 | * 1.IBM发布了可以支持 Web 的 DB2 for OS/390 V5,这是当时唯一能够支持64, 000个并发用户和百 TB 级别的数据库产品。 53 | * 2.IBM发布了DB2 UDB for UNIX、Windows and OS/2,该产品支持 ROLLUP 和 CUBE 函数,对联机分析处理(OLAP)具有重要意义。 54 | * 3.IDUG 第一次技术论坛在加拿大多伦多召开。 55 | * 4.IBM发布了用于企业级内容管理的 EDMSuite,该产品包含了用于管理计算机生成报表的 OnDemand 和 管理图像的 ImagePlus VisualInfo。 56 | * 5.IBM基于 RS/6000 SP 架构的超级计算机"深蓝"在国际象棋的 6 番棋对抗中战胜了世界棋王卡斯帕罗夫。 57 | * 1998: 58 | * 1.IBM发布了 DB2 OLAP Server,这是一个基于 DB2 的完整的 OLAP Solution。这个产品是和 Arbor Software(Hyperion的前身)合作开发的。 59 | * 2.IBM发布了 DB2 Data Links 技术,该技术可使 DB2 对外部文件进行管理。 60 | * 3.DB2的 shared-nothing集群技术扩展到 Windows 和 Solaris 平台。 61 | * 4.IBM发布了 DB2 Spatial Extender,这是与ESRI公司在DataJoiner基础 上联合开发的,该产品赋予了DB2 对地理信息数据的存取能力。 62 | * 5.IBM发布了 ContentConnect,该产品是 Enterprise Information Portal(EIP)的前身。 63 | * 6.DB2 对 SCO UnixWare 平台提供支持。 64 | * 7.DB2 UDB V5.2 增加了对 SQLJ、Java 存储过程和用户自定义函数的支持。 65 | * 8.IBM发布 DB2 UDB for AS/400,使 AS/400 成为充分支持电子商务的机 型。 66 | * 1999: 67 | * 1.IBM为了对移动计算提供支持,发布了DB2 UDB 卫星版和DB2 Everywhere(这是一个适用于手持设备的微型关系数据库管理系统,后称为DB2 Everyplace)。 68 | * 2.IBM发布了 Enterprise Information Portal,该产品可以跨数字图书 馆和 EDMSuite 提供一个统一的联合检索功能。 69 | * 3.DB2增加了能够识别 XML 语言的文本检索功能,从而引入了 XML 支 持,并启动了DB2 XML Extender 的 beta 计划。 70 | * 4.IBM发布了 Intel 平台上的 DB2 UDB for Linux。 71 | * 5.IBM 研究机构将 DB2 的联邦(federation)功能和 Garlic 技术(Garlic的目标是使能大规模多媒体信息系统,集成到生命科学解决方案DiscoveryLink 中 72 | * 2000: 73 | * 1.IBM发布了 DB2 XML Extender,成为在业界第一个为数据库提供内置 XML 支持的厂商。 74 | * 2.IBM将 Visual Warehouse 集成到 DB2 中,为DB2 提供了内置的数据仓库管理功能。 75 | * 3.DB2对Linux 的支持进一步增强,能够支持基于 Intel 的 Linux集群、 发布了可以运行在主机上的 DB2 UDB for Linux和可以运行在嵌入式Linux上的 DB2 Everyplace。 76 | * 4.DB2开始支持 NUMA-Q 平台,可以运行在该平台上的类 UNIX操作系统DYNIX/PTX 上。 77 | * 5.DB2通过 Net.Search Extender 提供了 in-memory 高速文本检索功能。 78 | * 6.IBM启动了数据库管理工具业务,起初着重于为主机上的 IMS 和 DB2 提供高效管理工具,最终这项业务扩展到 UNIX、Linux 和 Windows 平台。 Informix数据库产品也在支持之列。 79 | * 7.IBM开始通过在DB2中集成 DataJoiner 来提供数据联邦(federation)功能 。 80 | * 8.IBM发布了用于管理数字资产的Content Manager。IBM 数字图书馆和 EDMSuite 产品都被包含在一个单一的架构中来提供多媒体资产管理和企业内 容管理。荷兰国家图书馆、梵蒂冈图书馆都是最早的用户。 81 | * 9.DB2在主机上销售出了它的第10000个许可证。 82 | * 2001: 83 | * 1.IBM以 10 亿美金收购了 Informix 的数据库业务,这次收购扩大了IBM 的分布式数据库业务。 84 | * 2.DB2 OLAP Server中增添了数据挖掘功能。 85 | * 3.IBM发布了第一个能够支持多种平台的 DB2 工具。 86 | * 4.DB2提供了基于 SOAP 的 Web 服务的支持。DB2 XML Extender和存储过程可以使DB2成为 Web 服务的提供者。 87 | * 5.IBM科学家在纳米碳管晶体管技术领域取得突破。IBM 用纳米碳管制造出了世界上第一批纳米晶体管--由直径 10 个原子大小的碳原子组成的小圆柱结 构,比当今基于硅的晶体管小 500 倍。 88 | * 6.DB2 拓宽了其数据联邦(federation)的能力,可以对WebSphere MQ消息队列和生命科学领域特定格式的文件提供支持。 89 | * 7.IBM发布了 DB2 UDB for OS/390。 90 | * 2002: 91 | * 1.IBM发布了 Xperanto,这是一个基于标准的信息集成中间件的演示版, 可以用来优化对分散数据源的存取。这个演示版本使用了XML、Xquery、Web 服 务、数据联邦(federation)和全文检索等先进技术。 92 | * 2.IBM宣布计划收购 Rational Software Corp,从而使得 IBM软件能够 支持从设计、开发、部署到管理和维护的完整过程。 93 | * 3.DB2通过基于 SOAP 的 Web 服务扩展了数据联邦(federation)的能力。并可以作为 Web 服务的使用者出现在 Web 服务架构中。 94 | * 4.DB2 OLAP Server中添加了hybrid(多维和关系)分析能力。 95 | * 5.作为IBM 自主运算策略的一部分,SMART(自我管理和资源调节)技术 在 DB2 UDB V8.1 中首次正式应用。 96 | * 6.IBM并购 Tarian Sotware,从而加强了Content Manager 中记录管理组 件的功能。 97 | * 2003: 98 | * 1.IBM将数据管理产品统一更名为信息管理产品,旨在改变很多用户对于 DB2 家族产品只能完成单一的数据管理的印象,强调了 DB2 家族在信息的处理与集成方面的能力。 99 | 2.DYNIX/ptxDB2 发布了 DB2 Information Integrator(该产品由以 前的 DB2 DataJoiner和 Enterprise Information Portal演化而来),该款软件旨在帮助客户即时访问、集成、管理和分析存储于企业内外任何平台上的各类信息。 100 | * 2004:IBM DB2 在TPC 的两项测试中屡次刷新该测试的新纪录,在计算领 域的历史上树立了新的里程碑。其中在TPC-C 的测试中,它创造了计算速度领域新的世界记录,彻底粉碎了在该测试中每分钟三百万次交易的极限。 101 | * 2005:经过长达5年的开发,IBM DB2 9将传统的高性能、易用性与自描述、灵活的XML相结合,转变成为交互式、充满活力的数据服务器。 102 | * 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。 103 | 104 | 105 | ## DB2 版本 106 | 107 | 本文仅关注该产品组合中的基础产品 - DB2 for Linux, Unix, and Windows 数据库家族,在 10.5 版本中包括 含 6 个付费版本、一个单独付费的特性和一个免费包: 108 | 109 | 110 | * Advanced Enterprise Server Edition:专为中型到非常大的企业服务器而设计 111 | * Advanced Workgroup Server Edition:适合您的所有部门级工作负载需求的一流产品 112 | * Workgroup Server Edition:需要考虑高可用性的部门级工作负载的最佳选择 113 | * Express Edition:简单、安全而又廉价,目标用户是需要小型但强大的事务数据库的中小企业 (SMB) 和 ISV。 114 | * Express-C:一个可免费用于构建、开发和分发的程序包,是开发人员和中小型部署、学术团体等的完美选择。 115 | * Advanced Recovery Feature:是一个新的单独付费的 DB2 10.5 特性。它恰好也是 DB2 10.5 惟一的附加特性。此特性实际上是一个高级数据库备份、恢复和数据提取工具包,可帮助企业改善数据可用性、减轻风险和加速关键管理任务,节省宝贵的时间。 116 | * DB2 Developer Edition:这是一个减价的产品,提供了出于应用程序开发、培训、演示和测试用途而访问大部分 DB2 功能和版本以及 DB2 Connect 的能力,用于任何非生产环境。 117 | 118 | 119 | ![](http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1311whichdb2edition/figure1-DB2editions.png) 120 | 121 | 可以看到免费的 DB2 Express-C Edition 是最核心的功能,而其他版本都是在此版本之前提供附加的功能,这样你从 Express-C 升级到其他版本就不会有障碍。 122 | 123 | ## 共同功能 124 | 125 | 以下功能是所有 DB2 10.5 版本(包括 DB2 Express-C)中都可找到的共同功能的例子: 126 | 127 | * **Oracle 数据库兼容性**: 128 | DB2 支持无痛地迁移应用程序,不仅支持在 DB2 版本之间进行迁移,还支持从 Oracle 数据库迁移。98% 的 PL/SQL 兼容性水平支持您灵活、快速地迁移到 DB2,无需重写您的应用程序。 129 | * **XML 和 NoSQL 支持**: 130 | DB2 是对传统关系数据以及特殊用途的非关系数据类型(比如 XML 和 RDF)的高性能存储和检索的理想选择。 131 | * **基于时间的查询**: 132 | DB2 时态表可用于轻松地找到数据在之前的任何时间点或未来的状态。过去需要花数天时间还原备份镜像才能回答的审计问题,现在使用一个简单查询片刻即可解决。“未来会怎样” 查询同样可以轻松得到处理。 133 | * **同类联盟**: 134 | 此功能使您的应用程序能够将所有 DB2 和 Informix 数据库视为单个 DB2 数据库。再辅以一个可单独购买的 DB2 Connect 版本,您还可以为 DB2 for z 和 DB2 for i 数据库建立联盟。 135 | * **备份压缩**: 136 | 通过缩小 DB2 数据库备份镜像的大小来降低存储成本。 137 | 此外,DB2 提供了两个 Complete Enterprise Option (CEO) 服务产品,它们在设计中充分考虑到了部署灵活性。您可以在必要时部署该集合中的任何组件,以满足您的应用程序需求。这使得应用程序开发人员和安装人员能够为应用程序选择最佳的架构,请求对 IBM 产品的企业级承诺。 138 | * **IBM DB2 CEO**: 139 | 此服务产品提供了应用程序的 DB2 基础,在企业资源规划、客户关系管理、B2B 商务和销售力量自动化方面提供了竞争优势。其中的组件包括 DB2 Workgroup Server Edition、DB2 Enterprise Server Edition、DB2 Developer Edition 和 DB2 Connect Enterprise Edition。 140 | * **IBM Advanced DB2 CEO**: 141 | 此服务产品通过为您宝贵的信息资产提供一个安全的、富有弹性的信息管理系统,解决如今企业的需求。它提供了丰富的 DB2 数据服务器功能,其中包括 DB2 Advanced Enterprise Server Edition、DB2 Enterprise Server Edition、DB2 Workgroup Server Edition、DB2 Developer Edition 和 DB2 Connect Enterprise Edition。 142 | 143 | 144 | ## 为啥选择 DB2 Express-C 145 | 146 | 正如上面所述, DB2 Express-C 具有所有版本一样的核心功能,且免费,用来学习 DB2 足够了。本书所演示的例子,也是基于 Express-C 。 147 | 148 | ## 参考引用 149 | 150 | * 151 | * [DB2 版本: 哪个 DB2 10.5 发行版适合您?](http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1311whichdb2edition/) 152 | -------------------------------------------------------------------------------- /docs/Installation on openSUSE.md: -------------------------------------------------------------------------------- 1 | # 在 openSUSE 上安装 DB2 服务器 2 | 3 | ## 环境 4 | 5 | 本机演示的环境为: 6 | 7 | * 操作系统: [openSUSE Leap 42.1](https://software.opensuse.org/421/us_EN) 8 | * 处理器: 英特尔 第三代酷睿 i3-3110M @ 2.40GHz 双核 9 | * 内存 : 4 GB 10 | * DB2: Express-C 10.5(64-bit) 11 | 12 | ## 下载 DB2 Express-C 13 | 14 | DB2 Express-C 具有 DB2 所有版本一样的核心功能,且免费,用来学习 DB2 足够了。 15 | 16 | 下载地址: 17 | 18 | 本例安装包为:v10.5_linuxx64_expc.tar.gz 19 | 20 | **注:** 下载前,需要提供 IBM 账号,可以免费注册。 21 | 22 | ## 解压、检查环境 23 | 24 | ### 解压 25 | 26 | tar –zxvf v10.5_linuxx64_expc.tar.gz 27 | 28 | 生成了 `expc` 目录,切换到该目录下,执行相关命令 29 | 30 | 31 | ### 检查环境 32 | 33 | 检查该环境是否满足安装的需求,这里的安装包的版本是 `10.5.0.7` 34 | 35 | /home/software/expc/db2prereqcheck -v 10.5.0.7 36 | 37 | 如果检查出,环境不满足,则需要安装相应的包,比如: 38 | 39 | ``` 40 | Requirement not matched for DB2 database "Server" with pureScale feature . Version: "10.5.0.7". 41 | Summary of prerequisites that are not met on the current system: 42 | DBT3507E The db2prereqcheck utility failed to find the following package or file: "kernel-source". 43 | 44 | 45 | DBT3507E The db2prereqcheck utility failed to find the following package or file: "gcc-c++". 46 | 47 | 48 | DBT3507E The db2prereqcheck utility failed to find the following package or file: "cpp". 49 | ``` 50 | 51 | 上面提示 kernel-source、gcc-c++、cpp 不满足安装条件,先安装上述软件 52 | 53 | ``` 54 | zypper install kernel-source 55 | zypper install gcc-c++ 56 | zypper install cpp 57 | ``` 58 | 59 | 安装完成,再执行 db2prereqcheck 检查,最终输出如下,才能执行安装 60 | 61 | ``` 62 | DBT3533I The db2prereqcheck utility has confirmed that all installation prerequisites were met. 63 | ``` 64 | 65 | ## 创建用户和组 66 | 67 | ### 创建用户和组 68 | 69 | 需用具有 root 用户权限手动创建下列用户和组: 70 | 71 | 用户 | 示例用户名 | 示例组名 72 | ---- | ---- | ---- 73 | 实例所有者 | db2inst1 | db2iadm1 74 | 受防护的用户 | db2fenc1 | db2fsdm1 75 | DB2 管理服务器用户 | dasusr1 | dasadm1 76 | 77 | 输入下列命令: 78 | 79 | ``` 80 | groupadd -g 999 db2iadm1 81 | groupadd -g 998 db2fsdm1 82 | groupadd -g 997 dasadm1 83 | ``` 84 | 85 | 为每个组创建用户: 86 | 87 | ``` 88 | useradd -u 1004 -g db2iadm1 -m -d /home/db2inst1 db2inst1 89 | useradd -u 1003 -g db2fsdm1 -m -d /home/db2fenc1 db2fenc1 90 | useradd -u 1002 -g dasadm1 -m -d /home/dasusr1 dasusr1 91 | ``` 92 | 93 | 设置初始密码: 94 | 95 | ``` 96 | passwd db2inst1 97 | passwd db2fenc1 98 | passwd dasusr1 99 | ``` 100 | 101 | ### 解释: 102 | 103 | * Instance owner(实例所有者):DB2 实例 被 Instance owner 创建在 home 目录。这个 用户 ID 控制所有 DB2 进程、拥有的所有文件系统和包含在实例的数据库使用的设备。默认用户名称是 db2inst1 和默认分组是 db2iadm1。 104 | * Fenced user(受防护的用户):主要负责用户自定义函数(user defined function)和存储过程(stored precedure)。创建这个用户的好处是,当一个自定义函数发生内存泄漏的问题,至多影响到这些自定义函数和存储过程。而影响不到整个数据库管理系统。所以,如果你不需要过多的安全需要,比如在测试环境,可以将 Instance owner 用户作为 Fenced user。 如果你的系统有很多自定义函数或者存储过程的话,最好创建一个跟实例名不是同名的,这里默认创建一个名叫 db2fenc1 的用户,默认分组 db2fadm1 105 | * DB2 administration server user(DB2 管理服务器用户):DB2 管理服务器用户的用户标识用于在系统上运行 DB2 管理服务器 (DAS)。缺省用户为 dasusr1,缺省组为 dasadm1。每台计算机上只能有一个 DAS。一个 DAS 维护一个或多个数据库实例,包括属于不同安装的数据库实例。DAS 可以维护其发行版级别低于 DAS 发行版级别的数据库实例。但是,对于其发行版级别高于 DAS 发行版级别的数据库实例,DAS 必须迁移到更高级别。DAS 发行版级别必须不低于所维护的任何数据库实例的发行版级别。注意, [V9.7 中已经不推荐使用 DAS 106 | ](http://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.wn.doc/doc/i0059276.html),在以后的发行版中可能会将其除去。推荐使用 IBM® Data Studio 和 IBM Optim™ 工具来代替控制中心工具。有关详细信息,请参阅 不推荐使用控制中心工具。推荐使用采用安全 shell (SSH) 协议的软件程序进行远程管理。例如,可以在 Data Studio 配置工作台以运行 SQL 语句、实用程序和命令,或使用安全 shell (SHH) 协议来浏览和访问远程服务器上的文件。 107 | 108 | 109 | ### 用户标识限制 110 | 111 | 用户标识具有下列限制和要求: 112 | * 必须具有除 guests、admins、users 和 local 之外的主组 113 | * 可以包含小写字母 (a-z)、数字 (0-9) 和下划线字符 ( _ ) 114 | * 长度不能超过八个字符 115 | * 不能以 IBM、SYS、SQL 或数字开头 116 | * 不能是 DB2 保留字(USERS、ADMINS、GUESTS、PUBLIC 或 LOCAL)或 SQL 保留字 117 | * 不能使用任何具有 root 用户特权的用户标识作为 DB2 实例标识、DAS 标识或受防护标识 118 | * 不能包含重音字符 119 | * 如果已指定现有用户标识,而不是创建新用户标识,那么确保该用户标识: 120 | * 未锁定 121 | * 不具有到期的密码 122 | 123 | 124 | 125 | 126 | 127 | ## 执行 db2_install 安装 DB2 128 | 129 | 执行安装 130 | 131 | ``` 132 | linux-rrkj:/home/software/expc/db2_install 133 | 134 | DBI1324W Support of the db2_install command is deprecated. 135 | 136 | Default directory for installation of products - /opt/ibm/db2/V10.5 137 | 138 | *********************************************************** 139 | Install into default directory (/opt/ibm/db2/V10.5) ? [yes/no] 140 | ``` 141 | 142 | 期间需要确认安装位置,输入 yes 继续 143 | 144 | 安装完成后,输出如下: 145 | 146 | ``` 147 | The execution completed successfully. 148 | 149 | For more information see the DB2 installation log at 150 | "/tmp/db2_install.log.26071". 151 | ``` 152 | 153 | 默认安装目录为 /opt/ibm/db2/V10.5 ,该 tmp 目录下,存储的是日志文件 154 | 155 | ## 安装 license 156 | 157 | license 文件在解压包目录 /home/software/expc/db2/license/db2expc_uw.lic 158 | 159 | 安装 license,命令如下: 160 | 161 | ``` 162 | linux-rrkj:~ # /opt/ibm/db2/V10.5/adm/db2licm -a /home/software/expc/db2/license/db2expc_uw.lic 163 | 164 | LIC1402I License added successfully. 165 | 166 | 167 | LIC1426I This product is now licensed for use as outlined in your License Agreement. USE OF THE PRODUCT CONSTITUTES ACCEPTANCE OF THE TERMS OF THE IBM LICENSE AGREEMENT, LOCATED IN THE FOLLOWING DIRECTORY: "/opt/ibm/db2/V10.5/license/en_US.iso88591" 168 | ``` 169 | 170 | 查看授权信息 171 | 172 | ``` 173 | linux-rrkj:~ # /opt/ibm/db2/V10.5/adm/db2licm -l 174 | Product name: "DB2 Express-C" 175 | License type: "Unwarranted" 176 | Expiry date: "Permanent" 177 | Product identifier: "db2expc" 178 | Version information: "10.5" 179 | Max number of CPUs: "2" 180 | Max amount of memory (GB): "16" 181 | Enforcement policy: "Soft Stop" 182 | ``` 183 | 184 | ## 使用 db2icrt 创建实例 185 | 186 | /opt/IBM/db2/V10.5/instance/db2icrt -p 50001 -u db2fenc1 db2inst1 187 | 188 | 其中,-p 制定了服务器端口号,不指定默认是 50000。 189 | 190 | ``` 191 | waylau:~ # /opt/ibm/db2/V10.5/instance/db2icrt -p 50001 -u db2fenc1 db2inst1 192 | DBI1446I The db2icrt command is running. 193 | 194 | 195 | DB2 installation is being initialized. 196 | 197 | Total number of tasks to be performed: 4 198 | Total estimated time for all tasks to be performed: 309 second(s) 199 | 200 | Task #1 start 201 | Description: Setting default global profile registry variables 202 | Estimated time 1 second(s) 203 | Task #1 end 204 | 205 | Task #2 start 206 | Description: Initializing instance list 207 | Estimated time 5 second(s) 208 | Task #2 end 209 | 210 | Task #3 start 211 | Description: Configuring DB2 instances 212 | Estimated time 300 second(s) 213 | Task #3 end 214 | 215 | Task #4 start 216 | Description: Updating global profile registry 217 | Estimated time 3 second(s) 218 | Task #4 end 219 | 220 | The execution completed successfully. 221 | 222 | For more information see the DB2 installation log at "/tmp/db2icrt.log.3207". 223 | DBI1070I Program db2icrt completed successfully. 224 | 225 | ``` 226 | 227 | ### 问题处理 228 | 229 | 可能会出现如下问题: 230 | ``` 231 | linux-rrkj:~ # /opt/ibm/db2/V10.5/instance/db2icrt -p 50001 -u db2fenc1 db2inst1 232 | DBI1446I The db2icrt command is running. 233 | 234 | 235 | DB2 installation is being initialized. 236 | 237 | The host name "linux-rrkj" is invalid. Specify a valid host name. 238 | 239 | A major error occurred during the execution that caused this program to 240 | terminate prematurely. If the problem persists, contact your technical service 241 | representative. 242 | 243 | For more information see the DB2 installation log at "/tmp/db2icrt.log.21212". 244 | DBI1264E This program failed. Errors encountered during execution were 245 | written to the installation log file. Program name: 246 | db2icrt. Log file name: /tmp/db2icrt.log.21212. 247 | 248 | Explanation: 249 | 250 | This message is returned when some processes and operations have failed. 251 | Detailed information about the error was written to the log file. 252 | 253 | User response: 254 | 255 | Contact IBM support to get assistance in resolving this issue. Keep the 256 | log file intact as this file is an important reference for IBM support. 257 | ``` 258 | 259 | 解决方法: 260 | 261 | 设置主机名称,比如,本例为 waylau.com 262 | 263 | linux-rrkj:~ # hostname waylau.com 264 | linux-rrkj:~ # vi /etc/hosts 265 | 266 | 在 hosts 中添加一个 267 | 268 | 127.0.0.1 waylau.com 269 | ::1 waylau.com 270 | 271 | 修改 HOSTNAME 为 waylau.com 272 | 273 | linux-rrkj:~ # vi /etc/HOSTNAME 274 | 275 | 276 | ### 设置数据库实例自动启动 277 | 278 | 设置数据库实例 db2inst1 自动启动,执行 279 | 280 | waylau:~ # /opt/ibm/db2/V10.5/instance/db2iauto -on db2inst1 281 | 282 | ## 验证安装 283 | 284 | 1. 作为具有 SYSADM 权限的用户登录系统(这里指 db2inst1)。 285 | 2. 输入 db2start 命令来启动数据库管理器。 286 | 3. 输入 db2sampl 命令来创建 SAMPLE 数据库。 287 | 处理此命令可能要花几分钟。没有完成消息;当返回命令提示符时,该过程完成。 288 | 创建 SAMPLE 数据库时,该数据库自动以数据库别名 SAMPLE 进行编目。 289 | 290 | 4. 连接至 SAMPLE 数据库,检索所有在部门 20 工作的职员的列表,然后重置数据库连接。从命令行处理器 (CLP) 中输入下列命令: 291 | 292 | ``` 293 | connect to sample 294 | select * from staff where dept = 20 295 | connect reset 296 | ``` 297 | 298 | 输出应该类似于以下内容: 299 | 300 | ``` 301 | db2inst1@waylau:~> db2 302 | (c) Copyright IBM Corporation 1993,2007 303 | Command Line Processor for DB2 Client 10.5.7 304 | 305 | You can issue database manager commands and SQL statements from the command 306 | prompt. For example: 307 | db2 => connect to sample 308 | db2 => bind sample.bnd 309 | 310 | For general help, type: ?. 311 | For command help, type: ? command, where command can be 312 | the first few keywords of a database manager command. For example: 313 | ? CATALOG DATABASE for help on the CATALOG DATABASE command 314 | ? CATALOG for help on all of the CATALOG commands. 315 | 316 | To exit db2 interactive mode, type QUIT at the command prompt. Outside 317 | interactive mode, all commands must be prefixed with 'db2'. 318 | To list the current command option settings, type LIST COMMAND OPTIONS. 319 | 320 | For more detailed help, refer to the Online Reference Manual. 321 | 322 | db2 => connect to sample 323 | 324 | Database Connection Information 325 | 326 | Database server = DB2/LINUXX8664 10.5.7 327 | SQL authorization ID = DB2INST1 328 | Local database alias = SAMPLE 329 | 330 | db2 => select * from staff where dept = 20 331 | 332 | ID NAME DEPT JOB YEARS SALARY COMM 333 | ------ --------- ------ ----- ------ --------- --------- 334 | 10 Sanders 20 Mgr 7 98357.50 - 335 | 20 Pernal 20 Sales 8 78171.25 612.45 336 | 80 James 20 Clerk - 43504.60 128.20 337 | 190 Sneider 20 Clerk 8 34252.75 126.50 338 | 339 | 4 record(s) selected. 340 | 341 | db2 => connect reset 342 | DB20000I The SQL command completed successfully. 343 | db2 => terminate 344 | DB20000I The TERMINATE command completed successfully. 345 | db2 => quit 346 | DB20000I The QUIT command completed successfully. 347 | 348 | ``` 349 | 350 | 停止数据库 351 | 352 | db2inst1@waylau:~> db2stop 353 | SQL1064N DB2STOP processing was successful. 354 | 355 | 356 | ## 参考引用 357 | 358 | * [Installing DB2 Servers](http://public.dhe.ibm.com/ps/products/db2/info/vr105/pdf/en_US/DB2InstallingServers-db2ise1051.pdf) --------------------------------------------------------------------------------