第一部分 数据库基本概念 1
第1章 DB2数据库结构 1
1.1 关系数据库 1
1.2 关系数据库的对象 2
1.2.1 数据库 2
1.2.2 表空间 2
1.2.3 表 4
1.2.4 数据类型 4
1.2.5 检查约束 6
1.2.6 索引 7
1.2.7 视图 8
1.2.8 程序包 9
1.2.9 触发器 9
1.2.10 别名 10
1.2.11 事件监视器 10
1.2.12 模式 10
1.2.13 系统目录视图 11
1.2.14 恢复日志文件和恢复历史文件 11
1.2.15 配置文件 12
1.3 DB2数据库的目录 13
1.3.1 物理数据库目录 13
1.3.2 卷目录 14
1.3.3 系统目录 14
1.3.4 工作站目录 15
1.3.5 数据库连接服务目录 15
1.4 小结 15
第2章 数据库一致性机制 17
2.1 数据一致性的定义 17
2.2 事务 17
2.3 并发性和事务隔离级别 19
2.3.1 可重复读 20
2.3.2 读稳定性 20
2.3.3 游标稳定性 20
2.3.4 未提交的读 21
2.3.5 指定隔离级别 21
2.4 锁定 22
2.4.1 锁定的属性 22
2.4.2 锁的状态 23
2.4.3 锁定和应用程序性能 25
2.4.4 事务日志 30
2.4.5 数据库恢复 32
2.5 小结 33
第二部分 应用程序开发基础 35
第3章 DB2应用程序开发入门 35
3.1 什么是DB2数据库应用程序 35
3.2 设计一个DB2数据库应用程序 36
3.3 DB2数据库应用程序的元素 37
3.3.1 高级编程语言 38
3.3.2 SQL语句 38
3.3.3 CLI函数调用 40
3.3.4 API函数调用 41
3.4 建立DB2数据库应用程序开发环境 42
3.5 建立DB2数据库应用程序测试环境 43
3.5.1 创建测试数据库 43
3.5.2 创建测试表和视图 43
3.5.3 产生测试数据 44
3.6 管理事务 44
3.7 创建并准备源代码文件 45
3.8 小结 45
第4章 编写API应用函数 47
4.1 API源代码文件的基本结构 47
4.2 API函数调用的类型 47
4.3 API命名规范 50
4.4 API数据结构 51
4.5 错误处理 53
4.5.1 评估返回代码 53
4.5.2 评估SQLCA返回代码 53
4.5.3 评估SQLSTATE 54
4.6 生成可执行应用程序 54
4.7 运行、测试和调试API应用程序 54
4.8 小结 55
第三部分 应用程序编程接口函数 57
第5章 程序预编译和通用编程API函数 57
5.1 嵌入SQL应用程序的准备 57
5.1.1 异常情况、信号和中断处理 58
5.1.2 指针操作和内存拷贝函数 58
5.1.3 指定连接记账字符串 58
5.1.4 检查SQLCA返回代码和SQLSTATE值 59
5.1.5 程序准备和常规应用程序编程函数表 60
5.2 PRECOMPILE PROGRAM 60
5.3 BIND 71
5.4 REBIND 75
5.5 GET INSTANCE 79
5.6 INSTALL SIGNAL HANDLER 81
5.7 INTERRUPT 84
5.8 GET ADDRESS 87
5.9 COPY MEMORY 88
5.10 DEREFERENCE ADDRESS 89
5.11 SET ACCOUNTING STRING 90
5.12 GET ERROR MESSAGE 92
5.13 GET SQLSTATE MESSAGE 95
5.14 GET AUTHORIZATIONS 98
第6章 DB2数据库管理器控制和数据库控制API 103
6.1 DB2数据库管理器的服务器进程 103
6.1.1 创建和删除DB2数据库 103
6.1.2 启动和停止DB2数据库 104
6.1.3 获得和设置其他连接设置值 104
6.1.4 控制DB2数据库管理器的连接实例 104
6.2 DB2数据库管理器和DB2数据库控制函数 104
6.3 START DATABASE MANAGER 105
6.4 STOP DATABASE MANAGER 108
6.5 FORCE APPLICATION 111
6.6 CREATE DATABASE 116
6.7 DROP DATABASE 123
6.8 ACTIVATE DATABASE 124
6.9 DEACTIVATE DATABASE 127
6.10 ATTACH 128
6.11 ATTACH AND CHANGE PASSWORD 132
6.12 DETACH 136
6.13 QUERY CLIENT 136
6.14 SET CLIENT 141
6.15 QUERY CLIENT INFORMATION 142
6.16 SET CLIENT INFORMATION 146
第7章 DB2数据库管理器和数据库配置的API函数 148
7.1 配置DB2 148
7.1.1 DB2数据库管理器配置参数 148
7.1.2 DB2数据库配置参数 149
7.1.3 DB2数据库管理器和数据库配置函数 149
7.2 GET DATABASE MANAGER CONFIGURATION 150
7.3 GET DATABASE MANAGER CONFIGURATION DEFAULTS 159
7.4 UPDATE DA TABASE MANAGER CONFIGURATION 162
7.5 RESET DATABASE MANAGER CONFIGURATION 166
7.6 GET DATABASE CONFIGURATION 167
7.7 GET DATABASE CONFIGURATION DEFAULTS 176
7.8 UPDATE DATABASE CONFIGURATION 179
7.9 RESET DATABASE CONFIGURATION 184
第8章 数据库、节点和DCS目录管理API 186
8.1 DB2目录 186
8.1.1 系统数据库目录 186
8.1.2 卷目录 186
8.1.3 工作站目录 187
8.1.4 数据库连接服务目录 187
8.2 在NetWare服务器上注册/注销DB2数据库服务器 187
8.3 DB2数据库、节点和DCS目录管理函数 188
8.4 CATALOG DATABASE 189
8.5 UNCATALOG DATABASE 193
8.6 CHANGE DATABASE COMMENT 195
8.7 OPEN DATABASE DIRECTORY ENTRY 198
8.8 GET NEXT DATABASE DIRECTORY ENTRY 201
8.9 CLOSE DATABASE DIRECTORY SCAN 203
8.10 CATALOG NODE 203
8.11 UNCATALOG NODE 208
8.12 OPEN NODE DIRECTORY SCAN 211
8.13 GET NEXT NODE DIRECTORY ENTRY 213
8.14 CLOSE NODE DIRECTORY SCAN 215
8.15 CATALOG DCS DATABASE 216
8.16 UNCATALOG DCS DATABASE 219
8.17 OPEN DCS DIRECTORY SCAN 222
8.18 GET DCS DIRECTORY ENTRIES 224
8.19 GET DCS DIRECTORY ENTRY FOR DATABASE 226
8.20 CLOSE DCS DIRECTORY SCAN 226
8.21 REGISTER 227
8.22 DEREGISTER 231
第9章 表和表空间管理的API 233
9.1 表空间和表空间容器 233
9.1.1 重组表数据 233
9.1.2 更新表统计信息 234
9.2 DB2的表和表空间的管理函数 234
9.3 OPEN TABLESPACE QUERY 235
9.4 FETCH TABLESPACE QUERY 238
9.5 CLOSE TABLESPACE QUERY 241
9.6 TABLESPACE QUERY 241
9.7 SINGLE TABLESPACE QUERY 245
9.8 GET TABLESPACE STATISTICS 248
9.9 OP EN TABLESPACE CONTAINER QUERY 251
9.10 FETCH TABLESPACE CONTAINER QUERY 254
9.11 CLOSE TABLESPACE CONTAINER QUERY 255
9.12 TABLESPACE CONTAINER QUERY 256
9.13 FREE MEMORY 259
9.14 REORGANIZE TABLE 260
9.15 RUN STATISTICS 263
第10章 数据库迁移和灾难恢复API 268
10.1 数据库迁移 268
10.2 从一个“不一致”的状态中恢复 268
10.3 创建备份映像 269
10.4 从备份映像中恢复数据库和表空间 270
10.5 执行重定向的恢复操作 270
10.6 使用前滚恢复 270
10.7 恢复历史文件 271
10.8 DB2数据库迁移和灾难恢复函数 273
10.9 MIGRATE DATABASE 273
10.10 RESTART DATABASE 276
10.11 BACKUP DATABASE 278
10.12 RESTORE DATABASE 286
10.13 RECONCILE 294
10.14 SET TABLESPACE CONTAINERS 298
10.15 ROLLFORWARD DATABASE 305
10.16 ASYNCHRONOUS READ LOG 317
10.17 OPEN RECOVERY HISTORY FILE SCAN 323
10.18 GET NEXT RECOVERY HISTORY FILE ENTRY 328
10.19 CLOSE RECOVERY HISTORY FILE SCAN 331
10.20 UPDATE RECOVERY HISTORY FILE 332
10.21 PRUNE RECOVERY HISTORY FILE 336
第11章 数据处理API 341
11.1 调出数据 341
11.2 调入数据 341
11.3 装入数据 342
11.4 调出、调入和装入操作的支持文件格式 343
11.5 DB2数据处理函数 344
11.6 EXPORT 344
11.7 IMPORT 352
11.8 LOAD 364
11.9 LOAD QUERY 379
11.10 QUIESCE TABLESPACES FOR TABLE 381
第12章 DB2数据库分区管理函数 384
12.1 节点组和数据库分区 384
12.2 并行操作的类型 385
12.2.1 I/O并行处理 385
12.2.2 查询并行处理 385
12.2.3 实现查询并行处理 387
12.3 启用数据库分区 387
12.4 DB2数据库分区管理函数 388
12.5 ADD NODE 388
12.6 DROP NODE VERIFY 391
12.7 CREATE DATABASE AT NODE 393
12.8 DROP DATABASE AT NODE 396
12.9 SET RUNTIME DEGREE 398
12.10 GET TABLE PARTITIONING INFORMATION 401
12.11 GET ROW PARTITIONING NUMBER 404
12.12 REDISTRIBUTE NODEGROUP 410
第13章 数据库监控器和不确定事务处理API 415
13.1 DB2数据库系统监控器 415
13.1.1 数据库系统监控器的开关 415
13.1.2 开始计数时 416
13.1.3 获取快照监控器的数据 417
13.2 在多个数据库中工作 417
13.3 两阶段提交的处理过程 417
13.3.1 在使用两阶段提交时遇到错误的恢复 419
13.3.2 手工解决不确定事务 420
13.3.3 使用XA兼容的事务管理器的两阶段提交的处理 422
13.4 DB2数据库监控器和不确定事务的处理函数 422
13.5 GET/UPDATA MONITOR SWITCHES 423
13.6 RESET MONITOR 427
13.7 ESTIMATE DATABASE SYSTEM MONITOR BUFFER SIZE 430
13.8 GET SNAPSHOT 433
13.9 LIST DRDA INDOUBT TRANSACTIONS 441
13.10 LIST INDOUBT TRANSACTIONS 445
13.11 COMMIT AN INDOUBT TRANSACTION 450
13.12 ROLLBACK AN INDOUBT TRANSACTION 454
13.13 FORGET TRANSACTION STATUS 458
第14章 线程上下文管理函数 459
14.1 上下文 459
14.2 DB2线程上下文管理函数 459
14.3 SET APPLICATION CONTEXT TYPE 460
14.4 CREATE AND ATTACH TO AN APPLICATION CONTEXT 463
14.5 DETACH AND DESTROY APPLICATION CONTEXT 467
14.6 ATTACH TO CONTEXT 471
14.7 DETACH FROM CONTEXT 472
14.8 GET CURRENT CONTEXT 472
14.9 INTERRUPT CONTEXT 476
第四部分 附录 481
附录A SQL数据结构 481
附录B DB2日志记录 484
附录C 例子程序是怎样开发的 512