目 录
第1篇 入 门 篇
第1章 Tuxedo概述 2
1.1 什么是 Tuxedo 系统 2
1.2 Tuxedo 的历史及发展 2
1.1.1 Tuxedo的产生 3
1.2.2 Tuxedo 的发展 3
1.3 Tuxedo 支持的平台 5
1.4 Tuxedo的技术架构 6
1.4.1 客户机/服务器模式 6
1.4.2 Tuxedo ATMI体系结构 10
1.4.3 Tuxedo CORBA体系结构 13
1.4.4 ATMI与CORBA对比 17
1.5 Tuxedo 系统的关键特性 17
1.5.1 名字服务和位置透明性 17
1.5.2 强大的C/S通信能力 17
1.5.3 强大的联机交易性能 18
1.5.4 强大的分布式事务协调能力 18
1.5.5 完善的负载均衡机制 18
1.5.6 数据依赖路由 18
1.5.7 请求的优先级 19
1.5.8 容错和透明故障迁移 20
1.5.9 安全性 20
1.5.10 开放性和易用性 20
1.5.11 先进的组织架构 21
1.6 Tuxedo 与其他产品横向与纵向的比较 21
1.6.1 CICS 简介 21
1.6.2 Tuxedo 和 CICS 的对比 22
第2章 Tuxedo的简单安装和运行 24
2.1 安装前准备 24
2.1.1 检查软件包 24
2.1.2 必备的硬件和软件 24
2.1.3 如何获得安装介质及文档 24
2.1.4 Tuxedo许可证 24
2.2 快速安装 25
2.2.1 Tuxedo环境要求 25
2.2.2 内核参数的调整 25
2.2.3 进行Tuxedo安装 25
2.2.4 兼顾需要License的版本 28
2.3 部署应用(simpapp例子) 29
2.3.1 修改配置文件 29
2.3.2 加载配置文件 29
2.3.3 启动Tuxedo 30
2.3.4 相关的日志文件 30
2.4 编译和运行 30
2.4.1 编译程序 30
2.4.2 运行程序 31
2.5 卸载Tuxedo 31
第2篇 基 础 篇
第3章 OLTP基本知识 34
3.1 三层或多层C/S架构 34
3.2 事务的概念 35
3.2.1 什么是事务 35
3.2.2 什么是全局事务 35
3.2.3 XA规范 36
3.3 IPC机制简介 37
3.3.1 命名管道 37
3.3.2 消息队列 37
3.3.3 信号量 38
3.3.4 共享内存 38
3.3.5 IPC资源相关的操作系统内核参数 38
第4章 Tuxedo的基本概念 39
4.1 域Domain 39
4.1.1 域的概念和范围 39
4.1.2 为什么要使用域 39
4.2 逻辑机器Machine 39
4.2.1 Machine的概念和范围 39
4.2.2 为什么使用Machine 40
4.3 服务器组Group 40
4.3.1 组的概念和范围 40
4.3.2 为什么要使用组 40
4.4 服务进程Server和服务Service 40
4.4.1 什么是Server和Service 40
4.4.2 Server和Service的关系 40
4.4.3 服务进程中的主要函数 41
4.5 Tuxedo通信方式综述 41
4.5.1 请求/应答式通信 41
4.5.2 会话方式tpsend()/tprecv() 45
4.5.3 通知广播tpnotify()/tpbroadcast() 47
4.5.4 事件代理tppost()/tpsubscribe() 49
4.5.5 队列存储tpenqueue()/tpdequeue() 50
4.6 Tuxedo多机部署 52
4.6.1 Tuxedo集群 52
4.6.2 及多套Tuxedo应用之间的通信 52
4.7 Tuxedo远程客户端 52
4.7.1 什么是远程客户端 52
4.7.2 WSL/WSH配置与工作机理 53
4.7.3 Java远程客户端接入Jolt 54
第5章 Tuxedo主要的目录结构 57
5.1 总体目录结构分布 57
5.2 可执行文件说明 57
5.3 提要系统目录udataobj 58
5.4 C语言头文件和库 58
第6章 Tuxedo配置相关文件 59
6.1 几个关键环境变量 59
6.2 系统配置文件UBB及其内容 60
6.2.1 *RESOURCES 段的配置 61
6.2.2 *MACHINES段的配置 62
6.2.3 *GROUPS段的配置 63
6.2.4 *NETWORK段的配置 63
6.2.5 *SERVERS段的配置 63
6.2.6 *SERVICES段的配置 64
6.2.7 *ROUTING段的配置 64
6.3 域配置文件DMCONFIG及其内容 65
6.3.1 域(Domain)简介 65
6.3.2 Tuxedo域划分原则 65
6.3.3 域(Domain)的功能 66
6.3.4 Tuxedo Domain的配置 66
6.4 日志文件ULOG 67
第3篇 实 施 篇
第7章 Tuxedo应用的部署模式 70
7.1 单机SHM模式 70
7.2 多机MP模式 72
7.3 多域模式 77
7.4 各种模式的比较 81
7.5 Tuxedo与多种平台连通 83
7.5.1 与其他系统的互联概要 83
7.5.2 经典的WTC 83
7.5.3 JCA Adapter新特性 88
第8章 Tuxedo常用的管理操作 90
8.1 启停Tuxedo应用 90
8.1.1 相关应用环境 90
8.1.2 启动Tuxedo应用 92
8.1.3 停止Tuxedo应用 92
8.2 管理和监控 93
8.2.1 一般管理监控tmadmin 93
8.2.2 域管理监控dmadmin 96
8.2.3 队列管理监控qmadmin 97
8.3 动态配置tmconfig 105
8.3.1 概述 105
8.3.2 配置tmconfig运行环境 105
8.3.3 tmconfig常用操作 106
8.4 TSAM 107
8.4.1 TSAM简介 107
8.4.2 TSAM安装 107
8.4.3 TSAM配置 112
8.4.4 TSAM监控 113
8.4.5 TSAM监测预警 114
8.5 高可用性 115
8.5.1 高可用性概述 115
8.5.2 高可用性详细分析 116
8.6 Tuxedo如何打补丁 118
8.6.1 备份 118
8.6.2 补丁升级 118
8.6.3 重启应用 119
第9章 如何用好全局事务 120
9.1 什么是全局事务 120
9.2 本地事务的优缺点 120
9.3 Tuxedo对事务的控制与管理 120
9.4 常用事务相关的函数 121
9.5 数据库连接 122
9.5.1 TMS介绍 122
9.5.2 XA模式与NO-XA模式 123
9.5.3 Tuxedo与各种数据库的连接 123
9.6 全局事务的使用规则 124
9.6.1 谁发起谁结束 124
9.6.2 不允许嵌套 125
9.6.3 处理好超时 125
9.7 事务挂起的问题 125
第10章 Tuxedo性能调优 127
10.1 目标描述 127
10.2 调优独立的Tuxedo服务 127
10.3 将相似的Tuxedo服务分组到一个SERVER 129
10.4 调整SERVER数量 131
10.5 FML性能 134
10.6 额外的性能参数 135
10.6.1 多个WSH连接 135
10.6.2 关闭WSL / WSH加密 136
10.6.3 打开WSL / WSH压缩 136
10.6.4 机器类型 136
10.6.5 SPINCOUNT 136
10.6.6 去掉授权和审计安全 137
10.6.7 关闭多线程处理 137
10.6.8 关闭XA事务 137
第4篇 诊 断 篇
第11章 Tuxedo监控 140
11.1 监控Tuxedo应用的方法 140
11.2 可以监控的系统和应用数据 141
11.3 使用管理控制台监控应用 141
11.4 使用命令行方式监控 141
11.5 使用EventBroker监视应用程序 141
11.5.1 相关API介绍 142
11.5.2 相关例子参考 143
11.6 使用MIB监视应用程序 144
11.7 使用日志文件来监控 147
11.7.1 Tuxedo日志的分类 147
11.7.2 Tuxedo事务日志 147
11.7.3 Tuxedo用户日志 149
第12章 服务core dump分析 151
12.1 什么是服务core dump文件 151
12.2 什么情况可以导致core dump文件生成 151
12.3 服务器core dump文件探查 151
12.3.1 检查系统环境以保证core dump生成 152
12.3.2 保存core文件 152
12.3.3 找到core文件并使用其探测错误成因 153
12.3.4 探查错误的根源 154
12.4 core dump成因案例 157
12.4.1 为strings分配太少的内存 157
12.4.2 使用已经释放的内存 158
12.4.3 在scanf调用丢掉& 158
12.4.4 用非法的参数调用函数 158
12.4.5 没有分配内存给指针 158
12.4.6 没有初始化变量 158
12.5 错误信息的含义 158
12.5.1 总线错误 159
12.5.2 内存错误 159
12.5.3 I/O陷阱 159
12.5.4 跟踪/BPT陷阱 159
12.5.5 浮点异常 160
12.5.6 分段错误 160
12.5.7 非法命令 160
第13章 异常高CPU占用率故障 161
13.1 异常高CPU占用率 161
13.2 异常高CPU占用率的伴随症状 161
13.3 异常高CPU占用率探查 161
13.3.1 探查概述 161
13.3.2 初步探查 162
13.3.3 进一步跟踪 162
13.4 异常高CPU占用率故障排除策略 165
第14章 常规服务器阻塞故障 166
14.1 确认是服务器阻塞 166
14.2 服务器阻塞的可能原因 166
14.3 服务器阻塞的探查 166
14.3.1 Solaris 167
14.3.2 Linux 170
14.3.3 AIX 171
14.3.4 HP-UX 172
14.3.5 Windows 173
14.4 故障排查清单 175
14.5 进程挂起例子分析 175
14.5.1 进程挂起在sleep循环中 175
14.5.2 进程一直等待数据库查询大数据 175
14.5.3 死锁:不同SERVER中的服务相互调用 175
第15章 内存不足和内存泄漏故障 177
15.1 问题描述 177
15.2 问题诊断 177
15.2.1 进程地址空间及物理内存的区别 177
15.2.2 为什么这个问题会发生 177
15.3 问题研究 178
15.4 分析与检测内存泄漏 179
15.4.1 监控进程虚拟内存大小 179
15.4.2 隔离应用程序来跟踪内存泄漏 183
15.4.3 隔离应用服务 184
15.4.4 隔离应用的组织机构的库/代码 184
15.5 内存分析工具 184
15.5.1 memwatch 184
15.5.2 Purify 185
15.5.3 Valgrind 186
15.5.4 Insure++ 186
15.6 常见的内存泄漏的原因 187
15.6.1 非成对使用tpalloc()/malloc()与tpfree()/free() 187
15.6.2 重写指针 187
15.6.3 C库函数的bug 188
第16章 与全局事务XA相关的故障 189
16.1 问题描述 189
16.2 通过配置让Tuxedo 支持事务 189
16.2.1 配置 Tuxedo XA 189
16.2.2 创建事务管理器和XA服务器 190
16.2.3 XA-OPENINFO 字符串 191
16.2.4 TMS服务器 192
16.3 运行时问题 193
16.3.1 调用tx_open() 或tpopen() 失败 193
16.3.2 启发式失败 193
16.3.3 xa_start ()返回XAER_RMERR 193
16.3.4 xa_start()= -9 问题 194
16.3.5 Oracle TMS挂起错误 195
16.4 XA跟踪 195
16.4.1 TMTRACE 195
16.4.2 DbgFl 196
第17章 IPC相关故障 198
17.1 Tuxedo使用的IPC 198
17.1.1 信号量(Semaphore) 198
17.1.2 消息队列(Message Queue) 198
17.1.3 共享内存(Shared Memory) 199
17.1.4 Tuxedo 使用的IPC资源 199
17.1.5 定义IPC限制 199
17.2 IPC设置 200
17.3 IPC命令 201
17.3.1 ipcs 202
17.3.2 ipcrm 202
17.3.3 tmipcrm 203
17.3.4 IPC 清除脚本 204
17.3.5 bbsread 204
17.4 IPC常见疑难问题 205
第18章 一般网络故障 207
18.1 防火墙及防火墙相关故障 207
18.2 网络状态查询netstat 207
18.3 网络报文追踪 208
18.4 其他网络工具 210
18.4.1 ping命令 210
18.4.2 telnet命令 211
18.4.3 ifconfig 212
18.4.4 ipconfig 212
18.4.5 网络压缩 213
18.5 Tuxedo多机架构(MP) 213
18.5.1 Tuxedo MP应用的注意事项 213
18.5.2 负载均衡网络应用程序 213
18.5.3 常见问题 214
18.5.4 用tmadmin监控 215
18.6 Tuxedo的多域架构(Domain) 217
18.6.1 DMCONFIG 常见配置问题 218
18.6.2 使用dmadmin监控domain 218
18.7 故障分类排除 219
18.7.1 Tuxedo MP应用 219
18.7.2 Tuxedo Domain应用 220
第19章 WTC和JOLT支持模式 221
19.1 重温什么是WTC和JOLT 221
19.1.1 概述 221
19.1.2 WebLogic Txuedo 连接器介绍 221
19.1.3 JOLT介绍 221
19.2 什么引发WTC和JOLT故障 222
19.2.1 JOLT和WTC问题主要的两种形式 222
19.2.2 选择适当技术:JOLT VS WTC 222
19.2.3 引发JOLT和WTC错误的主要原因 222
19.3 WTC和JOLT相关故障的症状及解决方法 223
19.3.1 JOLT常见问题及解决方法 223
19.3.2 WTC常见问题及解决方法 225
19.4 WTC和JOLT故障排查清单 226
19.4.1 WTC故障排除步骤 226
19.4.2 JOLT故障排除步骤 226
第5篇 高 阶 篇
第20章 Tuxedo的COBOL编程 228
20.1 运行环境配置 228
20.1.1 Tuxedo COBOL数据记录类型 228
20.1.2 如何使用FML 数据类型 233
20.1.3 Tuxedo COBOL客户端编程 236
20.1.4 Tuxedo COBOL服务器端编程 238
20.2 Tuxedo下使用COBOL编程与C语言编程的异同 245
20.3 使用COBOL编写Tuxedo程序的局限性 245
20.3.1 FML支持的局限性 245
20.3.2 COBOL语言编译的局限性 245
20.3.3 开发人员要求比较高 246
20.3.4 错误处理开销 246
20.3.5 数据类型的使用相对有限 246
20.4 Tuxedo下COBOL与C语言的混合编程及模块集成 246
20.4.1 混合编程规则 246
20.4.2 COBOL调用C 247
20.4.3 C调用COBOL 249
第21章 基于Tuxedo对大机应用的迁移——ART 251
21.1 ART简介 251
21.2 Application Rehosting Workbench作业运行环境 251
21.2.1 关键特性 251
21.2.2 优点 251
21.2.3 流程简介 252
21.2.4 详细流程 252
21.3 ART for CICS作业运行环境 255
21.3.1 关键特性 255
21.3.2 优点 255
21.3.3 流程简介 256
21.3.4 详细流程 256
21.4 ART for Batch 作业运行环境 259
21.4.1 流程简介 259
21.4.2 详细流程 260
后记 264
??
??
??
??
XII
叱咤风云:Tuxedo企业级运维实战
XI
目录