db db2 soft / db2 books / db2 tools / db2 dba / db2 error list / db2 7.3 8.2 9.7 9.8 / db2 maintenance
s
- db2 soft
WebSphere Data Event Publisher Developer Edition, V9.1.1 for Windows
IBM WebSphere MQ for Windows V6.0 Multilingual
C87RUML.tar.gz
WebSphere MQ for Linux x86-64 V6.0.1
Provided for restricted use. Install this image if you plan to use the WebSphere Replication Server WBI wrapper or the MQ UDFs which require WebSphere MQ.
DB2ESE82AIX5L.tar[db2_8.2_server_install]
[db2_doc]
[db2_driver]
DB2_DSClient_V95_AIX.tar
DB2_DSClient_V95_Win_x86.exe
DB2_DSDrivers_V95_UNIX.tar
DB2_DSDrivers_V95_Win_x86.exe
DB2_EAS_V95_AIX.tar
DB2_EAS_V95_Win_x86.exe
DB2_ESE_CPU_Activation_V95.zip
DB2_ESE_V95_AIX.tar
DB2_ESE_V95_Win_x86.exe
DB2_Info_Ctr_Upd_V95.tar
DB2_Info_Ctr_Upd_V95.zip
DB2_Info_Ctr_Upd_V95_Linux_x86.tar
DB2_Info_Ctr_V95.exe
DB2_MOD_V95.zip
DB2_NSE_V95_AIX.tar.gz
DB2_NSE_V95_Win_x86.zip
DB2_PDF_Doc_V95.zip
DB2_RTC_V95_AIX.tar
DB2_RTC_V95_Win_x86.exe
[DB2_RunTime_Client_V8.2_full]
DB2_Server_QS_V95.zip
DB2_Spatial_Extr_V95_AIX.tar
DB2_Spatial_Extr_V95_Win_x86.exe
dlmgr.pro
IBM_Data_Studio_V11_Linux_x86.zip
IBM_Data_Studio_V11_Windows_x86.zip
[Quest Central for DB2 v4.9 setup]
[Quest.Central.for.DB2.v4.9.4.3.Incl.Keymaker-CORE]
SAfMP_V230_BaseComp_Windows.exe
http://www-01.ibm.com/software/data/
DB2 730认证学习笔记(一)
http://jythoner.iteye.com/blog/349663
第一章 DB2规划
1.Your ability to identify the products that make up the DB2 Family
DB2 Everyplace
【移动硬盘】
G:\ibm_soft\DB2\[IBM.DB2.企业版.For.Linux].IBM.DB2.Enterprise.Edition.v8.2.Linux.bin
G:\ibm_soft\DB2\[IBM.DB2.企业版.For.Linux].IBM.DB2.Enterprise.Edition.v8.2.Linux.cue
DB2 Everyplace主要用于移动设备,能够与其他系统(DB2 9, Informix, Oracle, Sybase, and Microsoft SQL Server)进行数据同步。
DB2 Personal Edition
DB2 Personal Edition是单用户 RDBMS。DB2 Personal 支持Windows 和 Linux 系统。DB2 Personal 包含 DB2 Express 的所有特性,但是不能用客户端连接服务器。
DB2 Express - C
DB2免费版,可以用于Linux和Windows系统。用于学习。
DB2 Express Edition
DB2 Express Edition(DB2 Express)是一种功能全面的支持 Web 的客户机/服务器 RDBMS。DB2 Express 可以用于Windows 和 Linux 系统。
最多支持2个CPU,4G内存。
DB2 Workgroup Edition
DB2 Workgroup Edition(DB2 Workgroup)是一种功能全面的支持 Web 的客户机/服务器 RDBMS。它可以用于所有支持的 UNIX 版本、Linux 和 Windows。DB2 Workgroup主要用于小型企业和部门的计算任务。
最多支持4个CPU,16G内存。
DB2 Enterprise Edition
DB2 Enterprise Edition(DB2 Enterprise)是一种功能全面的支持 Web 的客户机/服务器 RDBMS。它可以用于所有支持的 UNIX 版本、Linux 和 Windows。DB2 Enterprise 适合作为大型和中型的部门服务器。
CPU内存无限制。
Data Enterprise Developer Edition
开发人员专用版本
2.Your knowledge of the different DB2 clients available
DB2 9 Runtime Client
适合让应用程序访问 DB2 9 数据服务器,提供了执行此任务所需的 API,但是不提供管理工具。
DB2 9 Client
包含 DB2 Runtime Client 中的所有功能,还提供了一组图形化工具进行客户机 - 服务器配置、数据库管理和应用程序开发的功能。
3. Your knowledge of how nonrelational data is managed by the DB2 extenders
XML Extender
DB2 的 XML Extender 提供 XML 数据类型,支持在 DB2 数据库中存储并操作 XML 的功能。
可 以在 DB2 中存储完整的 XML 文档,也可以将它们存储为由数据库管理的外部文件。这个方法称为 XML 列。还可以将 XML 文档分解存储进关系表中,从数据库中取出时再将信息重新组合成 XML。这基本上意味着 DB2 数据库可以将 XML 文档拆解,只取得数据,从数据库中取出时用数据重新创建 XML 文档。这个方法称为 XML 集合。
DB2 Net Search Extender
这个扩展器提供高性能的内存搜索。可以使用这个扩展器搜索大型 XML 文档。
4. Your knowledge of the implications of storing and managing Extensible Markup Language (XML) data
如果要在 DB2 9 中使用 pureXML 特性,那么需要以 UTF-8 unicode 格式创建数据库
XML Extender与 pureXML的区别
DB2 XML Extender 提供了 DB2 8 中就有的 XML 功能。
pureXML 特性使 DB2 服务器能够利用新的混合型存储引擎在 DB2 9 中原生存储 XML。pureXML 的性能、易用性、灵活性和总体的 XML 体验不是原有的 XML Extender 技术能够相提并论的,强烈建议使用 pureXML 特性。
pureXML 特性允许将 XML 存储在磁盘上经过解析的树中,而不必将 XML 存储在大对象中或者将它分解存储进关系列中(就像 XML Extender 所要求的)。这对于需要使 XML 数据持久化的应用程序非常有好处。
在 XML Extender 中,您需要使用函数,它不支持 XQuery。如果要检索 XML 数据,可以只访问 XML 文档的一些部分,而不需要读取整个文档(如果它存储在 LOB 中)并拆分它,也不必执行连接(如果它存储在关系表中),只有 XML Extender 支持这种方法。
在使用 pureXML 特性提供的功能时,访问数据是非常顺畅的体验。例如,可以使用 SQL 或 XQuery 分别访问关系或 XML 数据。
DB2 9 支持按照与 XML Extender 相同的方式将 XML 数据分解成关系数据,但是它使用一种出色得多的不同技术来执行这一任务。可能由于许多原因希望将 XML 数据分解成关系数据,比如在 XML 数据本身是表格性的情况下。要使用 DB2 XML Extender 将 XML 数据分解成关系数据,必须手工生成 Document Access Definition 文档,这些文档用于把节点映射到列。在 DB2 9 中(即使没有 pureXML 特性),可以使用 DB2 Developer Workbench 对数据进行分解并自动地发现这些映射。DB2 9 中的新机制也比 XML Extender 方法快得多。
5. Your knowledge of the features and functions available with the tools that are provided with DB2
DB2 工具是 DB2 Client 的组成部分。在安装 DB2 服务器时,实际上也安装了 DB2 Client 的所有组件
向导和顾问的区别
如 果向导不只是帮助完成任务,还能够提供建议型的功能,DB2 就将它们称为顾问(advisor)。它们的操作方式就像是向导,但是非常智能化(具有非常复杂的算法),能够根据一些输入要素(比如工作负载或统计数 据)提出建议。顾问收集信息并指出您可能没有考虑到的选项,从而帮助您执行比较复杂的活动,比如性能调优。可以从 GUI、API 或命令行界面调用顾问。
在 DB2 9 中有两个主要的顾问:Configuration Advisor 和 Design Advisor。
Configuration Advisor
Configuration Advisor 可以用来为 DB2 环境设置实例和数据库级配置参数。它会提出几个高层问题,从而描述您的环境;比如您更关心数据库的性能还是可用性,或者对这两者同样关心,有多少用户会同 时访问数据库,希望有多少内存专门供 DB2 使用,等等。将回答转换为输入参数并传递给底层算法之后,DB2 会智能化地考虑您给出的回答,并根据这些回答提出几个配置建议。Configuration Advisor 尤其适合 OLTP 工作负载,但是对于基于智能的业务工作负载也是有效的。
Design Advisor
Design Advisor 以工作负载作为输入,这可以在文件、缓存、DB2 Query Patroller 存储库等地方提供。Design Advisor 可以根据这个提交的工作负载对底层数据库模式提出修改建议,帮助管理员获得优化的性能。Design Advisor 还可以建议新建(或修改)索引、MQT、MDC 和分区键(在安装了 Database Partitioning 特性的情况下)。它还能够识别出未被使用的索引并建议删除它们。
DB2 Command Line Processor(DB2 CLP)
DB2 Command Line Processor(DB2 CLP)是所有 DB2 产品中都有的,可以使用这个应用程序运行 DB2 命令、操作系统命令或 SQL 语句。如果希望输入操作系统命令,那么就必须在前面加上惊叹号(!),也称为 bang 键。
DB2 Command Window(DB2 CW)
DB2 CW 是在操作系统的本机 CLP 中内置的。在 Windows 环境中,可以在 Windows 命令提示中输入db2cmd命令来启动 DB2 CW
在 DB2 处理程序中输入list command options可以获得所有有效选项的列表。
操作系统可能对在一个语句中可以读取的最大字符数量有限制(即使命令行在显示器上转入下一行)。为了在输入长语句时解决这个限制,可以使用续行字符(\)。
DB2 工具实际上分成两大类:
Control Center(CC)
主要用来管理 DB2 服务器。有其他几个集成的中心,可以从 Control Center 启动。
Configuration Assistant(CA)
用来设置客户机/服务器通信和维护注册表变量等等。
DB2 Control Center
Control Center(CC)是 DB2 数据服务器的中心管理工具。可以使用 CC 管理系统、DB2 实例、数据库、数据库对象等等。在 CC 中,还可以打开其他中心和工具,帮助对查询进行优化、对作业进行调度、编写和保存脚本、创建存储过程和用户定义的函数、执行 DB2 命令、监视 DB2 系统的健康状态等等。(这些功能的一部分由从 CC 启动的工具提供。)
以在操作系统的命令提示中输入db2cc命令来启动 CC。
DB2 Replication Center
使 用 DB2 Replication Center(DB2 RC)管理 DB2 数据服务器和其他关系数据库(DB2 或非 DB2)之间的复制。在 DB2 RC 中,可以定义复制环境,将来自一个位置的指定的修改应用于另一个位置,以及对两个或多个位置中的数据进行同步。可以在命令行上输入db2rc命令来启动 DB2 RC。
DB2 Satellite Administration Center
使 用 Satellite Administration Center(DB2 SAC)来设置和管理执行同样业务功能的 DB2 服务器组。这些服务器称为卫星,它们都运行同一个应用程序并采用同样的 DB2 配置(数据库定义)来支持这个应用程序。可以使用 DB2 SAC 让几个 DB2 数据服务器利用一个主服务器来同步和维护它们的配置和数据。
DB2 Command Editor
使用 DB2 Command Editor 构造和执行 DB2 命令和 SQL 语句,以及查看 SQL 语句的访问计划的图形表示。
DB2 Task Center
使用 DB2 Task Center(DB2 TC)运行任务(立即运行或者根据调度计划运行)以及通知相关人员任务完成了。可以在命令提示中输入db2tc命令来启动 DB2 TC。
DB2 Health Center
使用 DB2 Health Center(DB2 HC)监视 DB2 环境的状态并对它做必要的修改。可以在命令提示中输入db2hc命令来启动 DB2 HC。
DB2 Journal
DB2 Journal 显示关于任务、数据库活动和操作、Control Center 操作、消息、出现的健康状态警报等等的历史信息。
DB2 License Center
DB2 License Center 显示系统上安装的 DB2 产品的 DB2 许可证和使用信息。还允许配置系统来进行适当的许可证监视。可以使用 DB2 License Center 添加新的许可证、设置授权用户策略、将试用许可证升级到生产许可证等等。还可以在命令行上使用db2licm命令控制 DB2 许可证。
DB2 Information Center
使 用 Information Center 寻找关于任务、参考资料、故障排除、示例程序和相关 Web 站点的信息。这个中心会提供丰富的 DB2 信息。可以通过 Control Center、Windows 环境中的 Start 菜单或者输入db2ic命令来启动 Information Center。
Configuration Assistant
Configuration Assistant(CA)允许维护应用程序可以连接和管理的数据库的列表。它主要用来进行客户机配置。可以在命令提示中输db2ca命令启动 CA。
在 CA 中,可以操作现有的数据库、添加新数据库、绑定应用程序、设置客户机配置和注册表参数(如上所示)以及导入和导出配置文件。
my db2 list
文件:dlmgr.pro
文件下载:http://dl.iteye.com/topics/download/20467d87-e9e2-38fd-9238-98c948659189
下载链接:http://www15.software.ibm.com/tqd
DB2 软件下载
ftp://ftp.software.ibm.com/ps/products/db2/
http://www-01.ibm.com/support/docview.wss?rs=434&uid=swg24021288
| C14SSML | DB2_ESE_V95_Linux_x86-64.tar | IBM DB2 Enterprise Server Edition Version 9.5 for Linux on xSeries This part is for limited use with Performance Expert Server Version 3.2.2 |
![]()
http://www.ibm.com/developerworks/cn/data/v9/index_download.html?S_TACT=105AGX52&S_CMP=content
| DB2 Express-C 9.7 数据服务器 | 大小 | 下载链接 |
|---|---|---|
| Multiplatform (Linux®, Windows®) | 297MB | 下载 |
| DB2 Enterprise 9 试用版 | 大小 | 下载链接 |
| Multiplatform | 438MB | 下载 |
| DB2 开发与管理工具 | ||
| IBM Data Studio | 下载 | |
| IBM Data Server Client | 下载 | |
| IBM Data Server Runtime Clients | 下载 | |
| DB2 客户端组件 | ||
| IBM Data Server Driver for JDBC and SQLJ | 下载 | |
| IBM Data Server Driver for ODBC, CLI and .Net | 下载 | |
| IBM Data Server Driver for ODBC and CLI | 下载 | |
| DB2 Runtime Client Merge Modules | 下载 | |
| DB2 Runtime Client Merge Modules Language Pack | 下载 | |
| DB2 Runtime Client Installer for Windows 32 bit | 下载 | |
| DB2 Runtime Client Installer for Windows AMD 64 bit | 下载 | |
| DB2 数据服务器选件 | ||
| DB2 9 Embedded Application Server(所有平台)More information | 150-200 MB | 下载 |
| DB2 9.5 Spatial Extender(所有平台) More information | 50-280 MB | 下载 |
| DB2 9.5 National Language Package 所有 Linux 平台(无需在 Windows 平台安装) |
275MB | 下载 |
| DB2 9.5 Net Search Extender | 下载 | |
| DB2 9 文档 | ||
| DB2 V9.7 信息中心(在线) | 查看 | |
| DB2 V9.5 信息中心(在线) | 查看 | |
| DB2 9.5 信息中心(安装) | 下载 | |
| 支持 | ||
| DB2 Express-C 论坛(英文) | 查看 |
IBM DB2 Database for Linux, UNIX, and Windows Information Center
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp
\\172.17.25.104\data (E)\ibm_db2\DB2_ESE_97_Linux_x86-64.tar.gz
\\192.168.121.19\install\xu\DB2_ESE_97_Linux_x86-64.tar.gz
file:///media/hdb1/soft/database/DB2_ESE_97_Linux_x86-64.tar.gz/ ese/readmefirst/zh_CN/html/readmefirst.htm
file:///media/hdb1/soft/database/ese/readmefirst/zh_CN/html/readmefirst.htm
开始使用 DB2 产品
要安装 DB2 产品,请运行以下任一命令:
- 在 Linux 和 UNIX 操作系统上,运行 db2setup 命令。
- 在 Windows 操作系统上,运行 setup 命令。
在线 DB2 信息中心中具有产品文档,网址为:http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp
如果您不能访问因特网,那么可以从产品 DVD 的下列目录中获取 HTML 和文本格式的基本安装和设置文档:doc\gettingstarted\locale \format ,其中:
- locale 是五位语言代码,例如 en_US
- format 表示 html 或 txt。
如果没有使用您语言环境的文档,那么请访问使用英文语言环境(en_US)的文档。
question
http://www.ibm.com/developerworks/forums/thread.jspa?threadID=182136
he only download offered for Infocenter on Linux is 32-bit.
But I am running 64-bit Ubuntu Gutsy.
When I run db2setup, it says:
DBI1189E There has been an attempt to use db2setup
on an image for a platform that does not match the current platform
'Linux/x86-64' on which it is being run.
How do I install infocenter on a 64-bit system?
Message was edited by: bkc
-
【原出版社】 I BM Press
【作 者】(美)George Baklarz;Paul C.Zikopoulos [同作者作品] [作译者介绍]
【译 者】 吴骅[同译者作品]
【出 版 社】 机械工业出版社
【书 号】 9787111264330
【上架时间】 2009-5-16
【出版日期】 2009 年4月
【开 本】 16开
【页 码】 737
1.3.5 WebSphere Federation Server与WebSphere Information Server --Page 24
《DB2 9 for Linux,UNIX,Windows数据库管理认证指南》 是一本DB2 9数据库管理及认证指南。
本书分为四个部分,包括DB2简介、使用SQL、DB2管理和应用程序开发。
第1章将介绍在Linux、UNIX和 Windows操作系统上运行的DB2产品家族中的成员。
本节说的是WebSphere Federation Server与WebSphere Information Server。
WebSphere Information Server提供了放置、发布、集成、搜索、清除以及访问数据的功能和特性。涉及数据访问时的联邦能力是值得一提的,WebSphere Federation Server包含了WebSphere Information Server中的功能子集,即联邦能力(在本节中重点介绍)。可以在IBM网站上学习有关WebSphere Federation Server和WebSphere Information Server的详细信息,地址是:www.ibm.com/software/data/integration/ 。
联邦系统是一个分布式的数据库环境,对于终端用户和应用程序来说可以把它看做一个虚拟数据库。WebSphere Federation Server技术允许SQL语句透明地访问、连接或者更改来自异构数据源的数据。通过联邦DB2数据库可以衡量全局的统计信息以优化对远程数据的请求。例 如,全局优化器可以使用源的统计信息、索引、函数、服务器以及网络速度等。
支持DB2联邦环境下的SQL同样也支持非联邦环境,包括在联邦数据源之间的高级对象关系型SQL操作,如递归SQL、公共表表达式(CTE)等。如果远程的数据源没有这个能力,DB2将会补偿这个遗失的功能。
也许对于联邦系统来说,最大的好处就是开发人员只能学习这一种SQL语言类型,即DB2 ANSIcompliant SQL API。如果外部数据源使用了不同的数据类型或者不是标准的SQL,DB2将会补偿遗失的部分并对数据类型进行转化。例如,SQL Server 2005有MONEY数据类型,而在DB2中使用的是DECIMAL数据类型来支持货币类型。如果没有WebSphere Federation Server技术,那么开发人员就必须了解这些数据服务器之间的区别或者使用OLE DB将它们转化成为能够识别的类型。在使用WebSphere Federation Server之后,开发人员就可以像只对DB2数据进行访问那样进行编码就够了,而不需要关心其他的事情。
图114中显示的就是一个联邦访问的例子。
|
| 图1-14联邦的威力:一个API与多种数据 |
从图115中可以看到那些补充联邦数据库的技术组件。昵称(Nickname)被用于去实现关联一个用户想要使用的数据源的低粒度形式。它实质上 是远程表的本地别名,尽管它们可以映射到具体的行和列上。昵称集合是位于服务器上用以代表实际的数据源。例如,在图115中的Oracle就是这样的一 个数据源,
|
| 图1-15联邦的工作方式 |
因此Server组件将代表一个具体的Oracle数据库。所有的SQL最终都从包装器中通过,包装器就是允许访问一种具体类别的数据服务器代码库。这些服务器连接使用它们原有的协议。例如,Oracle的连接使用的就是Net8客户端。
通过图114中的WebSphere Federation Server,用户可以很轻松地将环境当中的DB2扩展到其他数据源。例如,在生命科学领域,科学家需要访问特定的数据来支持他们的研究。IBM提供了一 套用于生命科学的封装器,用于构建联邦系统去帮助科学家访问需要的数据,其数据格式包括Excel电子表格、图像数据、纯文本文件和 BLAST(Basic Local Alignment Search Tool)等。
如果没有可用的封装器购买的话,用户可以使用软件开发工具箱(SDK, Software DeveloperS Kit)来构建自己的封装器。
-
attention :toad和db2自带图形管理客户端,只要查询,都会锁表,只有你关闭界面才会commit,建议会Quest吧
Toad® for IBM DB2® LUW
http://www.questsoftware.com.cn/toad-for-db2/
Quest Central for DB2
http://www.questsoftware.com.cn/china/Quest_central_for_DB2.pdf
http://res1.51src.com/storage2/content_vi93pu3bna7uqw/develop/Quest.Central.for.DB2.v5.0.1.6/Quest.Central.for.DB2.v5.0.1.6.rar
quest central for db2连接远程数据库
http://qingzuochen.iteye.com/blog/406186
装好工具后,打开.我的quest central for db2是 v5.0
没特别说明的地方默认或随便
1.在左边蓝色的小球(quest central for db2)上右键,"Add Instance or subsystem";
2."NEXT"
host name 填欲连接的数据库IP 如 "192.168.100.41"
Operating system: 数据库的操作系统 如 linux
"NEXT"
node name 随便填
port number 端口 如"50000"
"NEXT" "NEXT" "FINISH"
这时候就多了个电脑咯...名字就是上面填的 host name
3.在新建的节点上(白色的双圆柱)右键 "add database"
database name 填数据库的名字
database alias 跟上面一致就行
4.一直"next" 到"finish"
DB2 自带管理工具 DB2数据库导出表结构
============================================================
关于 DB2 管理工具环境
============================================================
DB2 管理工具级别:
产品标识 SQL09010
级别标识 02010107
级别 DB2 v9.1.0.356
构件级别 s060629
PTF NT32
============================================================
Java development kit(JDK):
级别 IBM Corporation 1.5.0
============================================================
http://softkf.iteye.com/blog/435545
方法一:在DB2控制中心的对象视图窗口中,选择所要导出表结构的数据表,单击鼠标右键,->生成DDL即可。或者在db2客户端Quest Central for DB2选中所要导出表结构的数据表,右击->extract DDL->Build script即可。
方法二:使用db2命令
db2look -d database名称 -e -a -x -i 用户名 -w 密码 -o 文件名
例如db2look -d test -e -a -x -i db2admin -w db2admin -o test.sql
接下来会产生这样的提示信息:
-- 为所有创建程序生成统计信息
-- 创建表的 DDL
-- 输出被发送到文件: test.sql
-- 自动绑定程序包 ...
-- 绑定成功
-- 自动绑定程序包 ...
-- 绑定成功
即把表的数据结构导出到了test.sql中。
- db2 dba
db2 doc
IBM DB2 数据库 Linux 版、UNIX 版和 Windows 版信息中心
http://www.ibm.com/software/data/db2/udb/sysreqs.html
IBM DB2 Database for Linux, UNIX, and Windows Information Center
http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp
http://www.ibm.com/software/data/db2/udb/support/manualsv9.html
http://www.ibm.com/software/data/db2/udb/support/manualsNLVv9.html
快速启动您的 Linux 应用: 使用 DB2 和 DB2 控制中心
http://www.ibm.com/developerworks/cn/linux/linux-speed-start/l-ss-db2cc/index.html
DB2 移植经验交流视频 下载视频资料,分享华为工程师的 DB2 移植经验
http://www.ibm.com/developerworks/cn/data/downloads/db2migr/
简述数据库管理员的任务。
(1)保证数据的完整性;
(2)保证数据的正确性;
(3)保证数据的安全性;
(4)对数据库进行有效的控制。
db2 setup
DB2 for Linux UNIX and Windows
System Requirements
http://www-01.ibm.com/software/data/db2/linux-unix-windows/sysreqs.html
DB2 9.1 Installation Requirements
Here you will find installation, system, disk and memory requirements for DB2 Clients and Servers and DB2 Connect. Included are specific requirements for AIX, HP-UX, Linux, Solaris Operating Environment, Windows and the Development Kit for Java level for DB2 products.
db2 setup for redhat linux
http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.uprun.doc/doc/r0025127.htm
安装 DB2
install db2v8 on linux
http://hnroger.itpub.net/post/116/477985
[root@linuxb local]# groupadd db2grp1
[root@linuxb local]# groupadd db2fgrp1
[root@linuxb local]# groupadd dasadm1
[root@linuxb local]# useradd db2inst1 -g db2grp1
[root@linuxb local]# useradd db2fenc1 -g db2fgrp1
[root@linuxb local]# useradd dasusr1 -g dasadm1
[root@linuxb local]# passwd db2inst1
[root@linuxb local]# passwd db2fenc1
[root@linuxb local]# passwd dasusr1
AS4下cue,bin文件转换为iso后“虚拟光驱
http://blog.csdn.net/qiek/archive/2005/10/10/498833.aspx
从http://he.fi/bchunk/下载bchunk,这是一个把cue,bin文件转换为iso的工具。
我用的是bchunk-1.2.0-0.i386.rpm
直接安装 rpm -hiv bchunk-1.2.0-0.i386.rpm
然后就可以直接执行bchunk file.bin file.cue file
就会得到一个file.iso
mkdir /mnt/cd1
mount file.iso /mnt/cd1 -o loop
OK,现在/mnt/cd1下就是光盘镜像的内容。
[root@linuxb db2inst1]# rpm -ivh bchunk-1.2.0-0.i386.rpm
[root@linuxb db2]# bchunk IBM.DB2.Enterprise.Edition.v8.2.Linux.bin
IBM.DB2.Enterprise.Edition.v8.2.Linux.cue db2v82
[root@linuxb db2]# mount -t iso9660 db2v8201.iso /mnt/cdrom -o loop
[root@linuxb root]# sysctl -w kernel.msgmni=2048
[root@linuxb root]# sysctl -w kernel.shmmax=1073741824
[root@linuxb root]# sysctl -w fs.file-max=32768
[root@linuxb root]# sysctl -w kernel.sem="512 32000 32 1024"
[root@linuxb root]# sysctl -w kernel.threads-max=20480
[root@linuxb root]#
DB2 同步
用AWK实现DB2 数据库 Schema的同步
http://database.ctocio.com.cn/153/9076653.shtml
DB2性能调优
http://reeboo.iteye.com/blog/265447
一次性能调优的实战
http://reeboo.iteye.com/blog/265451
db2数据库性能调整的相关命令
http://reeboo.iteye.com/blog/265455
DB2性能调优 / DB2执行计划_explain / DB2快照_snapshot
DB2_Universal_Database_Visual_Explain_Tutoria.rar
http://reeboo.iteye.com/blog/265447
性能是数据库应用的永恒话题,也是衡量一个项目成功与否的重要指标。但是,想让系统达到最优性能从来就不是一件简单的任务,需要涉及很多方面的知识。为了帮助大家更好地完成性能调优任务,我们特地将与 DB2 性能调优相关的资源组成一个专题,供大家参考。经验法则
对于很多人来说,特别是对于 DB2 新手来说,性能调优似乎是一个无从着手的任务。下面的文章阐述了一些经过专家实践得出的经验之谈,可以为您的优化过程提供参考。但要提醒大家的是,性能调优没有一成不变的法则,结合实际环境具体问题具体分析才可能达到最佳效果。
![]()
在 DB2 Universal Database 中提高 INSERT 性能的技巧
![]()
调优 DB2 Universal Database EEE 的快速参考
未雨绸缪胜于亡羊补牢,在设计阶段就对 DB2 应用程序和数据库所需的资源进行合理的估计会为以后打下良好的基础。下面的文章阐述了在设计阶段需要考虑的与性能相关的因素。
SQL 是用于存取数据的根本手段。高效的 SQL 语句能够成倍的提高应用程序的效力。下面的文章告诉你如何能够写出高效的 SQL 语句以及充分发挥 DB2 优化器的作用,从而生成最优的存取路径。
![]()
高性能 SQL: 通过 DB2 TPC-C 基准实现探索 SQL
在开发应用程序的时候,不同的实现方式不同会给性能带来不同的影响。下面的文章就一些流行的应用程序接口的性能问题进行了探讨。
![]()
用 C# Builder 开发 DB2 Web 应用程序的 5 项性能法则
![]()
DB2 Content Manager Web 应用程序: 性能调优和调试方法
俗话说,手巧不如家什妙。一个好的性能调优工具可以在一定程度上帮助用户完成繁琐的性能调优工作。DB2 中自带了一些工具,可以帮助用户对系统进行调优,此外,IBM 还提供了名为 DB2 Performance Expert 的工具,可以完成更加全面细致的调优工作。
![]()
用 DB2 Performance Expert 简化性能管理和调优,第 1 部分
![]()
用 DB2 Performance Expert 简化性能管理和调优,第 2 部分
很多软件供应商都提供了进行系统性能测试的工具,下面的文章推荐了一个基于 Java 的开放源码的测试工具。
数据库的优化涉及到很多方面的因素,下面的文章虽然不是直接描写如何进行系统优化的,但所包含的内容对用户完成 DB2 系统调优任务会有很大帮助。
一次性能调优的实战
http://reeboo.iteye.com/blog/265451
项目情况:是一个大型公司的内部办公系统,该系统有两个和一般企业应用不太一样的特点:一是用户量非常多,人员数达到2W左右,另一个是采用分级管理的形式,各个分公司数据分开管理。
我们的定位:我们是作为业务平台的提供商参与这个项目的,我们提供底层的开发平台,系统集成商在此基础上进行二次开发。
在项目从开发到部署的过程中遇到了很多的问题,也反映出很多问题。
一、怎么回事,跑得比猫还慢
项 目开发完毕后部署在Ibm aix 小型机上,32G内存,16个cpu。应用服务器采用的是weblogic9.2,数据库是oracle10.0.2。上线后发现系统运行的非常缓慢,甚 至比开发环境下的tomcat还要慢。于是开始排查原因,最开始是对SQL进行监控,优先考虑是数据库访问性能产生瓶颈。通过监控,发现很多业务需要执行 大量的SQL语句,查看客户编写的相关代码,发现在查询数据时循环执行了大量SQL。主要原因在于他们在代码中循环调用了我们相关API,一个最典型的例 子是通过用户ID查找用户NAME,他们在业务表格里没有保存用户name,而是在查询的时候通过用户ID查找用户name填充到页面,几乎每一个查询都 是n+1。
另外由于平台使用了hibernate,使得oo编程得非常爽快,导致开发人员完全忽略了相应的数据库操作所带来的压力。很多业务逻辑直接通过PO叠加完成,把一些可以通过很少SQL完成的逻辑全部分散放置到PO里,导致了大量PO的交互和SQL语句。
开 始优化SQL,优化的同时增加大量业务缓存。但优化完毕后运行缓慢的现象依旧存在,性能有了一定的提升但是不是非常明显。继续优化,其中考虑过多频繁访问 的数据使用内存数据库的方式。但是优化过后在tomcat上效果明显,部署到生产环境就问题依旧。于是考虑weblogic的配置问题,作为开发平台提供 商,我们只是提供系统开发相关方面的支持,对于应用服务器和数据库服务器只是做基本的配置系统可运行即可。但是在这个问题上系统集成商咬定是我们平台的问 题不放,并且存在一个很严重的问题:他们使用的是盗版的weblogic,这样根本就没有相应的技术支持。
问题的解决:最后是找了一 个BEA曾经的开发人员,问题实际非常的简单,现场部署的weblogic默认是运行在32位机器上,与64位机器存在一定的不兼容。通过替换相应的 jar包,问题得到了解决,主要是IO方面。替换完毕后,速度提升了进30% 。该开发人员说,如果没有lisence,根本就不会得到这些替换的jar包。
二、内存耗尽了
访问速度的问题解决了,系统的使用量很快上来,马上遇到新的问题:内存耗尽了。严重到几乎每天都要out of memory一次。这种问题在客户现场频繁出现。
本 地测试,tomcat,sun jdk 通过Jprofiler监测内存使用情况。在并发访问门户的情况下,内存确实存在暴涨的情况,100并发,内存使用立刻上升了150m左右,继续并发 100,再增长150m。但是很快在抵达高峰时会有一次gc发生,内存使用稳定在200m,内存里大量char[]数组对象。疲劳测试,内存使用曲线并没 有出现逐渐上升泄露的情况。换weblogic和jrocket测试,gc发生的更加频繁,内存使用稳定。
但是现场依旧频繁当机,内存 根本释放不了,一直逐渐增长,典型的内存泄露。对系统缓存、单态对象包括spring管理的对象、IO流进行了统一排查,依旧没有找到内存泄露的原因。使 用IBM 工具分析heapdump文件,结果还是大量的char[]数组对象占据内存,查找应用,找不到相关业务对象引用。
问题解 决:问题解决是一篇偶尔搜到的oracle论坛的帖子,这里http://forums.oracle.com/forums /message.jspa?messageID=1040570 。原因在于oracle10的数据库驱动对statement最后执行的结果集有着引用,并且不会释放,目的在于通过内存而换取更好的性能。数据库连接采 用的是weblogic的连接池,关于connection有个相关的statement cache设定,设定一个connection能够被缓存的statement个数,最大是1024,而现场就被设定为了1024!connection pool的connection个数被设置为了500 。真是个恐怖的设置。在将1024改为10后,内存使用量轰然倒地,稳定在1g左右。这个设置是在前面系统访问速度存在问题时由系统集成商的开发人员设置 上去的,他们将所有和优化相关的参数全部开到了最大。这个问题要是用户购买的是正版的weblogic和oracle的话,相信也会很快得到解决。
三、线程阻塞
内 存泄露的问题解决后,线程阻塞的问题浮出水面。系统集成商报告是线程死锁,通过分析工具其实是线程阻塞,主要问题在于系统用到了 synchronized关键字,对工作流相关API全部使用了synchronized,原因在这里:http: //ronghao.iteye.com/blog/205731 。分析发现一个工作项提交的操作在连接数据库时被挂起了20分钟!造成了大量线程的排队阻塞。被挂起的原因有很多种。我们采用的方法是将接口拆分和设置事 务timeout时间。但是这显然不是一个好方法。最后是去掉所有的synchronized关键字,将同步的问题交由数据库解决,问题解决。
db2数据库性能调整的相关命令
http://reeboo.iteye.com/blog/265455
IBM DB2数据库性能调整命令:
查看执行计划:
db2expln:
db2expln -d dbname -c pkgOwner -p pkgNmae -o expln.out
dynexpln:
dynexpln -d eos -q "select * from eosmenu" -g -t
dynexpln -d eos -f query.sql -o out.txt
更新统计信息:
runstats:
db2 runstats on table songxn.eosmenu and indexs songxn.ix1,songxn.ix2 allow read access
db2 runstats on table songxn.eosmenu with distribution and detailed index all
调整优化等级:
(0,1,2,3,5,7,9):
更改DFT_QUERYOPT(db cfg), 默认为5
SQL:set current query optimization = 3
索引:
建立索引:
create unique index ind1 on vicky.staff ( dept, lastname )
create unique index ind2 on vicky.emplyee ( empno ) include ( lastname, salary)
include中的字段不列入排序范围
丛集索引:
记录与索引的顺序一致
cretae index ind3 on vicky.staff ( dept ) CLUSTER
SCAN MODE:
Index Scan,Full Index Scan(Index only Access),Relation Scan
查询索引:
select indname from syscat.indexes where tabname='customer'
索引建议器:
db2advis -d dbname -i query.sql | -s "sql stmt" -o advis.out
在数据页中预留空间:
alter table vicky.staff PCTFREE 30(预留30%)
load from staff.ixf of ixf modified by pagefreespace=30 replace into vicky.staff
缓冲池与IO
默认为IBMDEFAULTBP
新建缓冲池:
db2 create bufferpool bpname size 1000 pagesize 4k
alter tablespace tbname bufferpool bpname
当脏页超过CHNGPGS_THRESH(%,db cfg)时,缓冲池将被清空并写回
<<DB2调优案例、问题总结和技巧>>
缓冲池是操作系统共享内存集中的一部分。
在32位数据库环境中,DB2具有数据库共享内存大小的限制,
AIX 上是1.75 GB / Sun Solaris 3.35GB / HP-UX 0.75 GB / Linux 1.75 GB / Windows 2GB或3GB(若boot.ini 中启用了3GB开关),
因此需要平衡缓冲池和其他共享内存缓冲区的配置。
64为环境中则无需考虑此问题。
延展缓冲池:
ESTORE_SEG_SZ& NUM_ESTORE_SEGS(db cfg)
db2 alter bufferpool ibmdefaultbp [ not ] extended storage
I/O SERVER:
NUM_IOSERVERS(db cfg):一般为磁盘数+2
数据重整:
REORGCHK:
db2 reorgchk update statistics on table all 该语句也用来对所有表做RUNSTATS
db2 reorgchk current statistics on table vicky.staff
table statistics:
CARD:记录笔数
OV(ERFLOW)overflow的记录数
NP(AGES):含有记录的页数
FP(AGES):表格占用的总页数
TSIZE(Bytes):表格大小
index statistics:
LEAF:leaf page数
ELEAF:空叶数
NDEL:被删除的RID数
LVLS:索引层级数
ISIZE:索引平均长度
KEYS:不同的索引值的个数
表格重整:
db2 reorg table vicky.staff index ind1 use tempspace2 indexscan
索引重整:
db2 reorg indexes all for table vicky.staff _options_
options:allow read|write|no access, cleanup only pages|all(不重建索引结构,只回收空索引页)
联机表格重整(V8+):
db2 reorg table vicky.staff index vicky.ind2 inplace allow write access
db2 reorg table vicky.staff index vicky.ind2 inplace pause|resume
db2 list history reorg all for dbname
MQT
MQT:
建立MQT:
CREATE TABLE vicky.mqt1 AS
( SELECT name, location, salary
FROM vicky.staff, vicky.org
WHERE staff.dept=org.deptnumb AND salary>20000
) DATA INITIALLY DEFERRED REFRESH DEFERRED|IMMEDIATE
ENABLE|DISABLE QUERY OPTIMIZATION
REFRESH TABLE vicky.mqt1
利用MQT:
RUNSTATS ON TABLE vicky.mqt1
UPDATE DB CFG FOR sample USING DFT_REFRESH_AGE ANY
并行处理
设置并行处理:
UPDATE DBM CFG USING INTRA_PARALLEL YES
UPDATE DB CFG FOR EOS USING DFT_DEGREE ANY
并行处理上限:
应用级:
SET RUNTIME DEGREE FOR ( 25 ) TO 4
SET RUNTIME DEGREE FOR ALL TO 6
实例级:
UPDATE DBM CFG USING MAX_QUERYDEGREE 6
MDC表:
CREATE TABLE vicky.sales
( YearAndMonth CHAR(4),
Region CHAR(20),
Product CHAR(2),
Sales BIGINT
) ORGANIZE BY DIMENSIONS ( YearAndMonth, Region )
CREATE TABLE vicky.table1
( col1 CHAR(10),
col2 CHAR(10),
col3 CHAR(10),
col4 INTEGER,
col5 DECIMAL(10,2),
) ORGANIZE BY DIMENSIONS ( col1, ( col2, col3 ),col4 )
查看db2连接状况
db2 list application
-------------------------------------------------------------------------------------
H:\ibm_soft\ibm_tivoli\DB2_Enterprise_Server_Edition9.1\C7427NA_DB2_ESE_9_1_0_0_LNXX86_1.iso
H:\ibm_soft\ibm_tivoli\DB2_National_Language_Pack_v9.1\C752TNA_DB2_NLPACK_9_1_0_0_LNXX86_1.iso
==============================================================================================================
/root/db2ese.rsp
/opt/ibm/db2/V9.1
==============================================================================================================
DB2数据字典
http://ace-life.iteye.com/blog/1135426
每个数据库都有它自己的系统目录表和视图。它们存储关于数据对象的元数据。
你可以像使用普通的数据库表一样查询这些表。有三种模式用来识别系统目录表:
SYSIBM: 基本表, 对 DB2使用进行最优化
SYSCAT: 基于SYSIBM表的视图, 对平常轻负荷使用进行优化
SYSSTAT: 数据库分析
db2 describe table SYSCAT.tables
db2 "select bpname,npage from SYSCAT.bufferpolls"
db2 connect to remall
db2 "select bpname,npage from SYSCAT.bufferpolls"
db2 describe table SYSCAT.bufferpools
db2 "select BPNAME,NPAGES,PAGESIZE from SYSCAT.bufferpools"
IBM在数据库领域十件大事
http://www.db2china.net/club/viewthread.php?tid=1315
1974: IBM 的研究员 Don Chamberlin 和 Ray Boyce 通过 System R 项目的实践,发表了论文“SEQUEL:A Structured English Query Language”。论文中提出的 SEQUEL 语言是一套比关系微积分与关系代数更适合最终用户使用的非程序化查询语言,我们现在所熟知的 SQL 语言就是基于它发展起来的。
1983: 千呼万唤始出来,IBM 在这一年发布了DATABASE 2( DB2 )for MVS(内部代号为“Eagle”),一个长盛不衰的品牌就此出现了。
1993: IBM 发布了DB2 for OS/2 V1(DB2 for OS/2 可以被简写为DB2/2)和DB2 for RS/6000 V1(DB2 for RS/6000 可以被简写为DB2/6000),这是 DB2 第一次在Intel 和 Unix 平台上出现。
1995: IBM 发布了 DB2 Common Server V2,这是第一个能够在多个平台上运行的对象—关系型数据库产品,并能够对 Web 提供充分支持。DataJoiner for AIX 也诞生在这一年,该产品赋予了 DB2 对异构数据库的支持能力。
1996: IBM将DB2更名为 DB2 通用数据库(DB2 Universal Database),这是第一个能够对多媒体和 Web 进行支持的关系型数据库管理系统。该系统具有很好的伸缩性,可以从桌面系统扩展到大型企业,适应单处理器、 SMP 和 MPP 计算环境,并可以运行在所有主流 操作系统 和硬件平台上。DB2 V5 是以前的两个产品的合并:DB2 Common Server V 2.1.2 和 DB2 并行版 1.2。
1998: IBM 发布了 DB2 OLAP Server,这是一个基于 DB2 的完整的 OLAP 解决方案。这个产品是和 Arbor Software(Hyperion的前身)合作开发的。
2000: IBM 启动了数据库管理工具业务,起初着重于为主机上的 IMS 和 DB2 提供高效管理工具,最终这项业务扩展到 UNIX、 Linux 和 Windows 平台。Informix 数据库产品也在支持之列。
2001: IBM 以 10 亿美金收购了 Informix 的数据库业务,这次收购扩大了 IBM 的分布式数据库业务。
2003 (to May 15): IBM 将数据管理产品统一更名为信息管理产品。
2008: IBM将发布基于 XML 的下一代数据库,以开创数据库技术的新纪元。
AIX DB2 数据库快照分析过程 transfer.rar
http://dl.iteye.com/topics/download/8992d238-25fd-3ca7-8649-e044768b1b63
$ oslevel -r
6100-04
// 分析数据快照文件dynsql_201206201.out , 如何抓数据库快照(略)
$ perl transfer.pl dynsql_201206201.out
#Transfer snapshot.txt to stmt.txt
use strict;
use IO::File;
use Time::Local;
#Open the snapshot.txt
unless (open(FILE1,$ARGV[0])){
die ("Please enter the snapshot.txt\n");
}
my $date;
my $line;
my @array;
my $NumberExecutions;
my $NumberCompilations;
my $WorstPreparation;
my $BestPreparation;
my $TotalExecutionTime;
my $InternalRowsDeleted;
my $InternalRowsInserted;
my $InternalRowsupdated;
my $StatementText;
my $Statementsorts;
my $Statementsortoverflows;
my $Totalsorttime;
my $Rowsread;
my $AverageRowRead;
my $Rowswritten;
my $AverageRowSelect;
my $BPDLR;
my $BPDPR;
my $BPILR;
my $BPIPR;
my $BPTDLR;
my $BPTDPR;
my $BPTILR;
my $BPTIPR;
my $BPRatio;
my $flag = 0;
my $position;
my $AverageTime;
my $TUsrTm;
my $TSysTm;
#Show start time.
$date=localtime(time);
print "Start from ".$date;
#Write the tag to the txt.
open (OUTFILE, ">>transfer.txt");
print OUTFILE (" NumEx;NumComp;WorstP;BestP;IntRDel;IntRIns;RowsRead;IntRUpd;RowsWri;Sorts;SortOflo;TSortTm;BPDLR;BPDPR;BPTDLR;BPTDPR;BPILR;BPIPR;BPTILR;BPTIPR;TELapTm;TUsrTm;TSysTm;AvgElap;AverageRowRead;AverageRowSelect;BPRatio;Text;\n");
#Close the file handle.
close(OUTFILE);
print("\nBegin to transfer,please wait!\n");
#Read the data from snapshot.txt.
while($line = <FILE1>)
{
if($line=~/Number\sof\sexecutions/){
$NumberExecutions=$line;
$position=index($NumberExecutions,"=");
$NumberExecutions=substr($NumberExecutions,$position+1,);
if($NumberExecutions=~/\s0.*\s/){
$flag=1;
$NumberExecutions="";
next;
}else{
$flag=2;
#print $NumberExecutions;
}
$NumberExecutions=~s/\s//g;
}
if($line=~/Number\sof\scompilations/ && $flag==2){
$NumberCompilations=$line;
$position=index($NumberCompilations,"=");
$NumberCompilations=substr($NumberCompilations,$position+1,);
$NumberCompilations=~s/\s//g;
#print $NumberCompilations;
}
if($line=~/Worst\spreparation\stime/ && $flag==2){
$WorstPreparation=$line;
$position=index($WorstPreparation,"=");
$WorstPreparation=substr($WorstPreparation,$position+1,);
$WorstPreparation=~s/\s//g;
#print $WorstPreparation;
}
if($line=~/Best\spreparation\stime/ && $flag==2){
$BestPreparation=$line;
$position=index($BestPreparation,"=");
$BestPreparation=substr($BestPreparation,$position+1,);
$BestPreparation=~s/\s//g;
#print $BestPreparation;
}
if($line=~/Internal\srows\sdelete/ && $flag==2){
$InternalRowsDeleted=$line;
$position=index($InternalRowsDeleted,"=");
$InternalRowsDeleted=substr($InternalRowsDeleted,$position+1,);
$InternalRowsDeleted=~s/\s//g;
#print $InternalRowsDeleted;
}
if($line=~/Internal\srows\supdated/ && $flag==2){
$InternalRowsupdated=$line;
$position=index($InternalRowsupdated,"=");
$InternalRowsupdated=substr($InternalRowsupdated,$position+1,);
$InternalRowsupdated=~s/\s//g;
#print $InternalRowsupdated;
}
if($line=~/Internal\srows\sinserted/ && $flag==2){
$InternalRowsInserted=$line;
$position=index($InternalRowsInserted,"=");
$InternalRowsInserted=substr($InternalRowsInserted,$position+1,);
$InternalRowsInserted=~s/\s//g;
#print $InternalRowsInserted;
}
if($line=~/Statement\ssorts/ && $flag==2){
$Statementsorts=$line;
$position=index($Statementsorts,"=");
$Statementsorts=substr($Statementsorts,$position+1,);
$Statementsorts=~s/\s//g;
#print $Statementsorts;
}
if($line=~/Statement\ssort\soverflows/ && $flag==2){
$Statementsortoverflows=$line;
$position=index($Statementsortoverflows,"=");
$Statementsortoverflows=substr($Statementsortoverflows,$position+1,);
$Statementsortoverflows=~s/\s//g;
#print $Statementsortoverflows;
}
if($line=~/Total\ssort\stime/ && $flag==2){
$Totalsorttime=$line;
$position=index($Totalsorttime,"=");
$Totalsorttime=substr($Totalsorttime,$position+1,);
$Totalsorttime=~s/\s//g;
#print $Totalsorttime;
}
if($line=~/Total\sexecution\stime/ && $flag==2){
$TotalExecutionTime=$line;
$position=index($TotalExecutionTime,"=");
$TotalExecutionTime=substr($TotalExecutionTime,$position+1,);
$TotalExecutionTime=~s/\s//g;
#print $TotalExecutionTime;
}
if($line=~/Rows\sread/ && $flag==2){
$Rowsread=$line;
$position=index($Rowsread,"=");
$Rowsread=substr($Rowsread,$position+1,);
$Rowsread=~s/\s//g;
#print $Rowsread;
}
if($line=~/Rows\swritten/ && $flag==2){
$Rowswritten=$line;
$position=index($Rowswritten,"=");
$Rowswritten=substr($Rowswritten,$position+1,);
$Rowswritten=~s/\s//g;
#print $Rowswritten;
}
if($line=~/Buffer\spool\sdata\slogical\sreads/ && $flag==2){
$BPDLR=$line;
$position=index($BPDLR,"=");
$BPDLR=substr($BPDLR,$position+1,);
$BPDLR=~s/\s//g;
#print $BPDLR;
}
if($line=~/Buffer\spool\stemporary\sdata\slogical\sreads/ && $flag==2){
$BPTDLR=$line;
$position=index($BPTDLR,"=");
$BPTDLR=substr($BPTDLR,$position+1,);
$BPTDLR=~s/\s//g;
#print $BPTDLR;
}
if($line=~/Buffer\spool\sdata\sphysical\sreads/ && $flag==2){
$BPDPR=$line;
$position=index($BPDPR,"=");
$BPDPR=substr($BPDPR,$position+1,);
$BPDPR=~s/\s//g;
#print $BPDPR;
}
if($line=~/Buffer\spool\stemporary\sdata\sphysical\sreads/ && $flag==2){
$BPTDPR=$line;
$position=index($BPTDPR,"=");
$BPTDPR=substr($BPTDPR,$position+1,);
$BPTDPR=~s/\s//g;
#print $BPTDPR;
}
if($line=~/Buffer\spool\sindex\slogical\sreads/ && $flag==2){
$BPILR=$line;
$position=index($BPILR,"=");
$BPILR=substr($BPILR,$position+1,);
$BPILR=~s/\s//g;
#print $BPILR;
}
if($line=~/Buffer\spool\stemporary\sindex\slogical\sreads/ && $flag==2){
$BPTILR=$line;
$position=index($BPTILR,"=");
$BPTILR=substr($BPTILR,$position+1,);
$BPTILR=~s/\s//g;
#print $BPTILR;
}
if($line=~/Buffer\spool\sindex\sphysical\sreads/ && $flag==2){
$BPIPR=$line;
$position=index($BPIPR,"=");
$BPIPR=substr($BPIPR,$position+1,);
$BPIPR=~s/\s//g;
#print $BPIPR;
}
if($line=~/Buffer\spool\stemporary\sindex\sphysical\sreads/ && $flag==2){
$BPTIPR=$line;
$position=index($BPTIPR,"=");
$BPTIPR=substr($BPTIPR,$position+1,);
$BPTIPR=~s/\s//g;
#print $BPTIPR;
}
if($line=~/Total\suser\scpu\stime/ && $flag==2){
$TUsrTm=$line;
$position=index($TUsrTm,"=");
$TUsrTm=substr($TUsrTm,$position+1,);
$TUsrTm=~s/\s//g;
#print $TUsrTm;
}
if($line=~/Total\ssystem\scpu\stime/ && $flag==2){
$TSysTm=$line;
$position=index($TSysTm,"=");
$TSysTm=substr($TSysTm,$position+1,);
$TSysTm=~s/\s//g;
#print $TSysTm;
}
if($line=~/Statement\stext/ && $flag==2){
$StatementText=$line;
$position=index($StatementText,"=");
$StatementText=substr($StatementText,$position+1,);
#print $StatementText;
}
else{
next;
}
if($flag==2){
$AverageTime=sprintf("%.15f", ($TotalExecutionTime)/($NumberExecutions));
$AverageRowRead=sprintf("%.5f", ($Rowsread)/($NumberExecutions));
if($Rowsread==" 0"||$Rowswritten==" 0"){
$AverageRowSelect=0;
}else{
$AverageRowSelect=sprintf("%.5f", ($Rowswritten)/($Rowsread));
}
if(($BPDLR+$BPILR)==0||($BPIPR+$BPDPR)==0){
$BPRatio=100;
}else{
$BPRatio = (1-($BPIPR+$BPDPR)/($BPDLR+$BPILR))*100;
}
open (OUTFILE, ">>transfer.txt");
print OUTFILE ($NumberExecutions.";".$NumberCompilations.";".$WorstPreparation.";".$BestPreparation.";".$InternalRowsDeleted.";".$InternalRowsInserted.";".$Rowsread.";".$InternalRowsupdated.";".$Rowswritten.";".$Statementsorts.";".$Statementsortoverflows.";".$Totalsorttime.";".$BPDLR.";".$BPDPR.";".$BPTDLR.";".$BPTDPR.";".$BPILR.";".$BPIPR.";".$BPTILR.";".$BPTIPR.";".$TotalExecutionTime.";".$TUsrTm.";".$TSysTm.";".$AverageTime.";".$AverageRowRead.";".$AverageRowSelect.";".$BPRatio.";".$StatementText);
$StatementText="";
$TotalExecutionTime="";
$NumberExecutions="";
$Statementsorts="";
$Statementsortoverflows="";
$Totalsorttime="";
$TUsrTm="";
$TSysTm="";
}
}
#Show end time.
$date=localtime(time);
print "End at ".$date;
#Close the file handle.
close(OUTFILE);
close(FILE1)
$ ls -l dynsql_201206201.txt
// 用excel 排序 dynsql_201206201.txt 即可得出数据库中消耗最大的sql
- db2 error list
[root@localhost ~]# /media/DB2_ESE_9_7_0_0_LNXX86_64/db2prereqcheck
WARNING:
The 32 bit library file libstdc++.so.6 is not found on the system.
32-bit applications may be affected.
CentOS 6 64位上安装db2提示缺少 32 bit library file libstdc++.so.6
http://blog.163.com/ibm_db2_man/blog/static/185638282201171354122335/
http://tgyd2006.iteye.com/blog/441891
问题:
C:\Documents and Settings\Lindows>db2
DB21061E 未初始化命令行环境。
解决:
http://bbs.chinaunix.net/archiver/?tid-142456.html
C:\Documents and Settings\Lindows>db2cmd
C:\Documents and Settings\Lindows>db2 ?
C:\Documents and Settings\Lindows>db2
(c) Copyright IBM Corporation 1993,2007
DB2 客户机 9.5.0 的命令行处理器
可从命令提示符处发出数据库管理器命令和 SQL 语句。例如:
db2 => connect to sample
db2 => bind sample.bnd
要获得一般帮助,输入:?。
要获得命令帮助,输入:? command,其中 command 可以是
数据库管理器命令的前几个关键字。例如:
? CATALOG DATABASE 用于关于 CATALOG DATABASE 命令的帮助
? CATALOG 用于关于所有 CATALOG 命令的帮助。
要退出 db2 交互方式,在命令提示符处输入
QUIT。在非交互方式下,所有命令都必须以“db2”作前缀。
要列出当前命令选项设置,输入 LIST COMMAND OPTIONS。
要获取更详细的帮助,请参阅 Online Reference Manual。
db2 =>quit
DB2错误代码/SQL返回码信息对照<!--newcoin-->
用COBOL链接DB2时,出现DB2错误信息时,如果你不懂代码是什么意思,可以用这份资料查找,
当然你也可以直接在db2的命令行下输入:db2 ? SQLN"错误代码",系统会给出一些提示信息.
| sqlcode | sqlstate | DB2错误信息(按sqlcode排序) |
| 000 | 00000 | SQL语句成功完成 |
| 01xxx | SQL语句成功完成,但是有警告 | |
| +012 | 01545 | 未限定的列名被解释为一个有相互关系的引用 |
| +098 | 01568 | 动态SQL语句用分号结束 |
| +100 | 02000 | 没有找到满足SQL语句的行 |
| +110 | 01561 | 用DATA CAPTURE定义的表的更新操作不能发送到原来的子系统 |
| +111 | 01590 | 为2型索引设置了SUBPAGES语句 |
| +117 | 01525 | 要插入的值的个数不等于被插入表的列数 |
| +162 | 01514 | 指定的表空间被置为检查挂起状态 |
| +203 | 01552 | 使用非唯一的名字来解决命名的限定列 |
| +204 | 01532 | 命名的对象未在DB2中定义 |
| +206 | 01533 | 命名的列不在SQL语句中指定的任何表中存在 |
| +218 | 01537 | 因为SQL语句引用一个远程对象,不能为该SQL语句执行EXPLAIN |
| +219 | 01532 | 命名的PLAN TABLE不存在 |
| +220 | 01546 | 不正确定义PLAN TABLE,检查命名列的定义 |
| +236 | 01005 | SQLDA中的SQLN的值至少应于所描述的列的个数一样大 |
| +237 | 01594 | 至少有一个被描述的列应该是单值类型,因此扩展的SQLVAR条目需要另外的空间 |
| +238 | 01005 | 至少应有一个被描述的列是一个LOB,因此扩展的SQLVAR条目需要另外的空间 |
| +239 | 01005 | 至少应有一个被描述的列应是单值类型,因此扩展的SQLVAR条目需要另外的空间 |
| +304 | 01515 | 该值不能被分配给宿主变量,因为该值不再数据类型的范围之内 |
| +331 | 01520 | 不能被翻译的字符串,因此被设置为NULL |
| +339 | 01569 | 由于与DB2 2.2版本的子系统连接,所以可能存在字符转换问题 |
| +394 | 01629 | 使用优化提示来选择访问路径 |
| +395 | 01628 | 设置了无效的优化提示,原因代码指定了为什么,忽略优化提示 |
| +402 | 01521 | 未知的位置 |
| +403 | 01522 | 本地不存在CREAT ALIAS对象 |
| +434 | 01608 | 在DB2未来发布的版本中将不支持指定的特性,IBM建议你停止使用这些特性 |
| +445 | 01004 | 值被CAST函数截取 |
| +462 | 01Hxx | 由用户定义的函数或存储过程发出的警告 |
| +464 | 01609 | 命名的存储过程超出了它可能返回的查询结果集的个数限制 |
| +466 | 01610 | 指定由命名的存储过程返回的查询结果集的个数。成功完成 |
| +494 | 01614 | 由存储过程返回的结果集的个数超过了由ASSOCIATE LOCATORS语句指定的结果集定位器的个数 |
| +495 | 01616 | 因为倒台SQL的成本估算超出了在ELST中指定的警告阀值,所以发出警告 |
| +535 | 01591 | 请求一个主健的定位更新,或请求一个使用自我引出 约束的表的删除操作 |
| +541 | 01543 | 命名外健是一个重复的引用约束 |
| +551 | 01548 | 命名的授权ID缺少在命名的DB2对象上执行命名操作的权限 |
| +552 | 01542 | 命名的授权ID缺少执行命名操作的权限 |
| +558 | 01516 | 已经被授权该PUBLIC,因此WITH GRANT OPTION不可用 |
| +561 | 01523 | 对ALTER REFERENCES INDEX 和TRIGGER特权,PUBLIC AT ALL LOCATION无效 |
| +562 | 01560 | 因为GRANTEE已经拥有这些特权,所以一个或更多的特权被忽略 |
| +585 | 01625 | 模式名指定了不止一次 |
| +599 | 01596 | 没有为长字符数据类型(BLOB,CLOB和DBCLOB)建立比较函数 |
| +610 | 01566 | 由于建立了一个指定为DEFER YES的索引,指定的对象处于PENDING状态,或者因为使用了ALTER INDEX改变关键值的范围,所以指定的对象处于PENDING状态 |
| +625 | 01518 | 因为删除了主健索引,所以表定义被标注为不完整 |
| +626 | 01529 | 删除了加强UNIQUE约束的索引,唯一性不在被加强 |
| +645 | 01528 | 因为建立的索引中没有包含NULL,所以WHERE NOT NULL被忽略 |
| +650 | 01538 | 不能更改或者建立已命名的表为从属表 |
| +653 | 01551 | 在已指定的分区表空间中尚没有建立指定的分区索引,所以分区索引不可得 |
| +655 | 01597 | 为CREATE或ALTER STOGROUP语句指定特定或者非特定的卷ID,在DB2较新发布的版本中(版本6以后)将不再支持他们 |
| +658 | 01600 | 当建立目录索引时,不能指定SUBPAGES语句,SUBPAGES将被忽略,并缺省为1 |
| +664 | 01540 | 分区索引的限制关键字超出了最大值 |
| +738 | 01530 | 已命名的对象的更改可能像只读系统中对象的改变要求一样 |
| +799 | 0157 | SET语句中引用的特定寄存器不存在,将忽略 SET请求 |
| +802 | 01519 | 数据溢出或者因除法异常而引起的数据异常错误 |
| +806 | 01553 | ISOLATION(RR)与LOCKSIZE PAGE 冲突 |
| +807 | 01554 | 由于十进制乘法导致溢出 |
| +863 | 01539 | 连接成功,但是只支持SBCS |
| +2000 | 56094 | SUBPAGES不等于1的1型索引不能成为数据共享环境中的缓冲池组依赖者 |
| +2002 | 01624 | 因为指定的缓冲池不允许超高速缓存,GNPCACHE指定被忽略 |
| +2007 | 01602 | 因为DB2子系统的参数禁用“提示(hiats)”所以不能指定优化提示 |
| +30100 | 01558 | 分布式协议错误被检测到,提供原来的SQLCODE和SQLSTATE |
| -007 | 42601 | SQL语句中由非法字符 |
| -010 | 42603 | 字符串常量非正常终止;检查到有遗漏的引号标志 |
| -029 | 42601 | 需要INTO语句 |
| -060 | 42815 | 某特定数据类型的长度或者标量规范无效 |
| -084 | 42612 | 不能执行SQL语句,因为该语句对动态SQL无效或者对OS/390的DB2无效 |
| -097 | 42601 | 在单位类型、用户自定义的函数以及过程中不能使用带有CAST的LONG VARCHAR或LONGVARGRAPHIC |
| -101 | 54001 | SQL语句超出了已确定的DB2限制:例如,表的数目太多,语句中的字节太多 |
| -102 | 54002 | 字符串常量太长 |
| -103 | 42604 | 无效数学文字 |
| -104 | 42601 | SQL语句中遇到非法符号 |
| -105 | 42604 | 无效的字符串格式;通常引用一个格式不正确的图形字符串 |
| -107 | 42622 | 对象名太长 |
| -108 | 42601 | RENAME语句中指定的名字有错误,不能使用限定词 |
| -109 | 42601 | 指定了无效语句;例如CREATE VIEW不能包含ORDER BY 语句 |
| -110 | 42606 | 遇到了无效的十六进制的文字 |
| -111 | 42901 | 指定的列函数没有给出列名 |
| -112 | 42607 | 无效的列函数语法;列函数不能运行与其他的列函数之上 |
| -113 | 42602 | 遇到无效字符 |
| -114 | 42961 | 该语句的位置名称必须与当前服务器匹配,但是却没有匹配 |
| -115 | 42601 | 因为比较运算符没有伴着一个表达式或者列表,遇到了无效谓词 |
| -117 | 42802 | 待插入的数值的个数于被插入的行中的列数不相等 |
| -118 | 42902 | 数据修改语句(UPDATE或DELETE)和FROM语句中的表和视图命名不合法 |
| -119 | 42803 | HAVING语句中的列的列表与GROUP BY语句中的列列表不匹配 |
| -120 | 42903 | 不允许WHERE语句、SET语句、VALUES语句或者SET ASSIGNMENT语句引用列函数 |
| -121 | 42701 | 在INSERT或UPDATE语句中,某一列被非法引用了两次 |
| -122 | 42803 | 非法使用了列函数。因为没有用于一个列函数的所有列不再GROUP BY语句中 |
| -123 | 42601 | 特定位置的参数必须是一个常数或者一个关键词 |
| -125 | 42805 | ORDER BY语句中指定了无效数字,该数字要么小于1要么大于选定的列数 |
| -126 | 42829 | 不能为一个UPDATE语句指定ORDER BY语句 |
| -127 | 42905 | 在子选择中DISTINCT只能指定一次 |
| -128 | 42601 | SQL谓词中NULL使用不当 |
| -129 | 54004 | SQL语句中包含的表多于15个 |
| -130 | 22019 | ESCAPE语句必须为一个字符 |
| 22025 | 无效的ESCAPE模式 | |
| -131 | 42818 | LIKE谓词只能用于字符数据 |
| -132 | 42824 | LIKE语句、ESCAPE语句、LOCATE函数或POSSTR函数中有无效运算对象 |
| -133 | 42906 | 无效相关子查询引用 |
| -134 | 42907 | 大于255字节的列被不正确使用 |
| -136 | 54005 | 排序关键字的长度大于4000字节 |
| -137 | 54006 | 被连接的字符串太大;字符的最大值为32767;图形的最大值为16382 |
| -138 | 22011 | SUBSTR列函数的第二个或第三个操作符无效 |
| -142 | 42612 | 不支持的SQL语句。该语句可能在另外的RDBMS上有效,也有可能在其他的上下文中有效(例如,VALUES只能在触发器中出现) |
| -144 | 58003 | 指定的段号无效 |
| -147 | 42809 | 某一源函数不能更改。要改变源函数,必须删除该源函数并重新建立他 |
| -148 | 42809 | RENAME和ALTER无法执行。RENAME不能对视图或者活动RI.ST表重新命名。ALTER不能用于改变列的长度,因为该列参与了RI、一个用户退出程序、全局的临时表或打开DATACAPTURE CHANGES表的列 |
| -150 | 42807 | 触发活动的INSERT,UPDATE或DELETE语句中指定了无效的视图更新或一个无效的转换表 |
| -151 | 42808 | 试图更新一个不可更新的视图的列、一个DB2 CATALOG表的列或者一个ROWID列 |
| -152 | 42809 | DROP CHECK试图删除一个参照约束,或者DROP FOREIGN试图删除一个检查约束 |
| -153 | 42908 | 无效的视图建立请求,必须为旋转列表中列出的列出的未命名的列或者重复的列提供一个名字 |
| -154 | 42909 | 不能用UNION、UNION ALL或者一个远程表建立视图 |
| -156 | 42809 | 在视图上建立索引是非法的,或者在ALTER TABLE,CREATE TRIGGER,DROP TABLE或LOCK TABLE语句上指定一个不是表的其他对象这是无效的 |
| -157 | 42810 | 必须在FOREIGN KEY语句中指定一个表名 |
| -158 | 42811 | 视图的列和选择列表中的列不相匹配 |
| -159 | 42089 | 无效DROP或COMMENT ON语句 |
| -160 | 42813 | 对该视图的WITH CHECK OPTION无效 |
| -161 | 44000 | 正被更新的视图WITH CHECK OPTION语句使得这行不能被插入或更新 |
| -164 | 42502 | 用户没有建立这个视图的权限 |
| -170 | 42605 | 标量函数指定了无效的参数个数 |
| -171 | 42815 | 标量函数指定了无效的数据类型长度或者无效数值 |
| -173 | 42801 | 在非只读型的游标上不能指定隔离级别UR |
| -180 | 22007 | DATE、TIME、TIMESTAMP值的字符串表示法的语法不对 |
| -181 | 22001 | 不是有效的DATE、TIME、TIMESTAMP值 |
| -182 | 42816 | 在算术表达式中的日期/时间值无效 |
| -183 | 22008 | 在算术表达式中返回的日期/时间值的结果不在有效值的范围内 |
| -184 | 42610 | 没有正确使用日期/时间值的参数标记 |
| -185 | 57008 | 没有定义本定的日期/时间出口 |
| -186 | 22505 | 改变本定的日期/时间出口引发这个程序的长度无效 |
| -187 | 22506 | MVS返回无效的当前日期/时间 |
| -188 | 22503 | 字符串表示无效 |
| -189 | 22522 | 指定的编码字符集的ID无效或没有定义 |
| -190 | 42837 | 不能象所设定的那样改变(ALTER)列。只能改变(ALTER)VARCHAR列的长度 |
| -191 | 22504 | 字符串中包含了无效的混合数据 |
| -197 | 42877 | 当两个或多个表被联合在一起排序时,限定的列名不能在ORDER BY语句中使用 |
| -198 | 42617 | 试图对空的字符串发布一个PREPARE或EXECUTE IMMEDIATE语句 |
| -199 | 42601 | SQL语句中使用了非法关键词 |
| -203 | 42702 | 模糊列引用 |
| -204 | 42704 | 没有定义的对象名 |
| -205 | 42703 | 指定的表的列名无效 |
| -206 | 42703 | 列名没有在FROM语句所引用的任何表中,或者没有在定义触发器所在的表中 |
| -208 | 42707 | 不能ORDER BY指定列,应为该列不在选择列表中 |
| -212 | 42712 | 指定的表名在触发器中不允许多次使用,只能使用一次 |
| -214 | 42822 | DISTINCT、ORDER BY 引起的无效表达式 |
| -219 | 42704 | 因为PLAN_TABLE不存在,EXPLAIN无法执行 |
| -220 | 55002 | 遇到无效的PLAN_TABLE列 |
| -221 | 55002 | 如果为PLAN_TABLE定义了可供选择的列,那么,必须定义所有的列 |
| -229 | 42708 | 指定的现场找不到 |
| -240 | 428B4 | LOCK TABLE语句的PART子句无效 |
| -250 | 42718 | 没有定义本地位置名 |
| -251 | 42602 | 记号无效 |
| -300 | 22024 | 宿主变量或参数中的字符串不是以NULL为终止 |
| -301 | 42895 | 无效的宿主变量数据类型 |
| -302 | 22001 | 输入的变量值对指定的列无效 |
| 22003 | 输入的变量值对指定的列而言太大 | |
| -303 | 42806 | 因为数据类型不兼容,不能分配数值 |
| -304 | 22003 | 因为数据超出了范围,不能分配数值 |
| -305 | 22002 | 没有NULL指示符变量 |
| -309 | 22512 | 因为引用的宿主变量被设置成NULL,所以谓词无效 |
| -310 | 22501 | 十进制的宿主变量或参数包含非十进制数据 |
| -311 | 22501 | 输入的宿主变量长度无效,或者时负值或者太大 |
| -312 | 42618 | 没有定义宿主变量或者宿主变量不可用 |
| -313 | 07001 | 宿主变量的个数不等于参数标识的个数 |
| -314 | 42714 | 模糊的宿主变量引用 |
| -327 | 22525 | 在最后分区的关键字范围内,不能插入行 |
| -330 | 22021 | 不能成功的翻译字符串 |
| -331 | 22021 | 字符串不能分配到宿主变量,因为其不能成功的被翻译 |
| -332 | 57017 | 不能为两个命名的编码字符集的ID定义翻译规则 |
| -333 | 56010 | 子类型无效导致翻译失败 |
| -338 | 42972 | ON语句无效,必须引用连接的列 |
| -339 | 56082 | 访问DB2 2.2版本的子系统被拒绝,原因时ASCII到EBCDIC翻译不能进行 |
| -350 | 42962 | 无效的大对象规范 |
| -351 | 56084 | SELECT列表中有不支持的数据类型 |
| -352 | 56084 | 输入列表中有不支持的数据类型 |
| -355 | 42993 | LOB列太大,以至不能被记录在日志中 |
| -372 | 428C1 | 每个表只允许有一个ROWID列 |
| -390 | 42887 | 在上下文中指定的函数无效 |
| -392 | 42855 | 自从前一次FETCH以来,指定游标的SQLDA已被不恰当的改变 |
| -396 | 38505 | 在最后的访问过程中,视图执行SQL语句 |
| -397 | 428D3 | 在某一列上不恰当的指定了GENERATED因为该列不是ROWID数据类型 |
| -398 | 428D2 | 为某一个宿主变量请求LOCATOR,但是该宿主变量不是一个LOB |
| -399 | 22511 | 在INSERT语句中为ROWID列指定的值无效 |
| -400 | 54027 | 在DB2编目中定义的用户自定义索引不能超过100个 |
| -401 | 42818 | 算术操作符或比较操作符的操作对象不是兼容的 |
| -402 | 42819 | 算术函数不能用于字符或日期时间数据 |
| -404 | 22001 | SQL语句指定的字符串太长 |
| -405 | 42820 | 数值文字超出了范围 |
| -406 | 22003 | 计算出的或者倒出的数值超出了范围 |
| -407 | 23502 | 不能把NULL值插到定义为NOT NULL的列中 |
| -408 | 42821 | 数值不能被更新或插入,因为他与列的数据类型不兼容 |
| -409 | 42607 | COUNT函数指定的运算对象无效 |
| -410 | 42820 | 浮点文字笔30个字符的最大允许长度长 |
| -411 | 56040 | CURRENT SQLID使用无效 |
| -412 | 42823 | 在子查询的选择列表中遇到了多个列 |
| -413 | 22003 | 当转换为一个数字型数据类型时,数据溢出 |
| -414 | 42824 | LIKE谓词不能运行于用数字或日期时间类型定义的列 |
| -415 | 42825 | 为UNION操作指定的选择列表不是联合兼容的 |
| -416 | 42907 | 包含UNION操作符的SQL语句不允许有长的字符串列 |
| -417 | 42609 | 两参数标识符作为运算对象被指定在同一谓词的两边 |
| -418 | 42610 | 参数标识符使用无效 |
| -419 | 42911 | 十进制除法无效 |
| -420 | 22018 | 字符串自变量值不符合函数的要求 |
| -421 | 42826 | UNION操作的选择列表中没有提供相同数目的列 |
| -423 | 0F001 | 为LOB或结果集定位器指定的值无效 |
| -426 | 2D528 | 在不允许更新的应用服务器不允许执行COMMIT语句 |
| -427 | 2D529 | 在不允许更新的应用服务器不允许执行ROLLBACK语句 |
| -430 | 38503 | 在用户自定义的函数或存储过程中遇到了错误 |
| -433 | 22001 | 指定的值太长 |
| -435 | 428B3 | 无效的应用定义的SQLSTATE |
| -438 | xxxxx | 使用了RAISE_ERROR函数的应用发出了一个错误 |
| -440 | 42884 | 存储过程或用户自定义函数的参数列表参数个数于预期的个数不匹配 |
| -441 | 42601 | 与标量函数一起使用DISTINCT或ALL是不正确的用法 |
| -443 | 42601 | 指定的外部函数返回错误的SQLSTATE |
| -444 | 42724 | 与被称为存储过程或用户自定义函数有关的程序不能找到 |
| -449 | 42878 | 对存储过程或用户自定义的 函数,CREATE或ALTER语句不正确(缺失EXTERNAL NAME 子句) |
| -450 | 39501 | 存储过程或用户自定义函数写入存储器的值超过了参数声明的长度 |
| -451 | 42815 | CREATE FUNCTION中指定了不正确的数据类型 |
| -453 | 42880 | 用户自定义函数中的RETURNS语句无效 |
| -454 | 42723 | 指定的函数识别标记与已存在的另一函数的识别标记冲突 |
| -455 | 42882 | 模式名不比配 |
| -456 | 42710 | 为用户自定义函数指定的函数名已经存在 |
| -457 | 42939 | 用户自定义函数或用户自定义类型正试图使用系统中定义的函数或者类型所用的名称 |
| -458 | 42883 | 没有找到函数 |
| -463 | 39001 | 特定的外部例程返回无效的SQLSTATE |
| -469 | 42886 | 参数定义为OUT或INOUT的CALL语句必须提供宿主变量 |
| -470 | 39002 | 指定了NULL参数,但是该例程却不支持NULL |
| -471 | 55023 | 存储过程或用户自定义函数失败:提供原因代码 |
| -472 | 24517 | 外部的函数程序使游标处于打开状态 |
| -473 | 42918 | 用户自定义数据类型命名不能和系统定义的数据类型一样 |
| -475 | 42866 | 结果类型不能被转换成RETURNS类型 |
| -476 | 42725 | 在其模式中该函数不是独一无二的 |
| -478 | 42893 | 不能DROP或REVOKE特定的对象,因为其他对象依赖于该对象 |
| -480 | 51030 | 直到存储过程已经被CALL后,DESCRIBE PROCEDURE和ASSOCIATE LOCATORS才能被发布 |
| -482 | 51030 | 存储过程不返回到任何一个定位器 |
| -483 | 42885 | CREATE FUNCTION语句中的参数个数与源函数中的参数个数不匹配 |
| -487 | 38001 | 选择了NO SQL选项建立指定的存储过程或用户自定义函数,但却视图发布SQL语句 |
| -491 | 42601 | CREATE FUNCTION语句无效,因为该语句没有RETURNS语句或者因为该语句没有指定有效的SOURCE或者EXTERNAL语句 |
| -492 | 42879 | 指定函数的指定参数的个数有错误 |
| -495 | 57051 | 语句的估计处理器成本超出了资源限制 |
| -496 | 51033 | 语句无法执行,因为当前服务器与调用存储过程的服务器不同 |
| -497 | 54041 | 指定的数据库超过了32767 OBID的上限,或者CREATE DATABASE语句使之达到了32511DBID的上限 |
| -499 | 24516 | 指定的游标已被分配到结果集,该结果集来自已经指定的存储过程 |
| -500 | 24501 | 因为连接被破坏,WITH HOLD游标被关闭 |
| -501 | 24501 | 在试图获取数据或关闭一个游标前必须打开一个游标 |
| -502 | 24502 | 在没有关闭游标前不能再次打开游标 |
| -503 | 42912 | 因为列在游标的FOR UPDATE OF语句中没有被指定,该游标用于获取该列,所以不能更新该列 |
| -504 | 34000 | 不能引用一个游标,因为他不是定义到程序里的 |
| -507 | 24501 | 在试图更新或者删除WHERE CURRENT OF前,必须打开游标 |
| -508 | 24504 | 因为被引用的游标当前不是处于数据行上,所以不能被更新或删除 |
| -509 | 42827 | 除了在游标上指定的那个表(该表由WHERE CURRENT OF语句引用的)以外,再也不能从别的表上更新数据 |
| -510 | 42828 | 表或视图不能被修改 |
| -511 | 42829 | 对不可修改的表或视图,FOR UPDATE OF语句无效 |
| -512 | 56023 | 对远程对象的无效引用 |
| -513 | 42924 | 一个别名不能再被定义成另外的别名 |
| -514 | 26501 | 游标尚没有被准备 |
| -516 | 26501 | 试图描述未准备好的SQL语句 |
| -517 | 07005 | 因为SQL语句尚没有准备好,游标无效 |
| -518 | 07003 | 试图执行尚没有准备好的SQL语句 |
| -519 | 24506 | 当为游标的SQL语句发布一个准备语句是,游标不能是打开的 |
| -525 | 51015 | 不能在已指定的程序包中执行SQL语句,因为在绑定时间内该程序包无效 |
| -526 | 42995 | 在给定的上下文中,不能使用全局的临时表 |
| -530 | 23503 | 对特定的约束名指定了无效的外健值 |
| -531 | 23504 | 从版本5开始,父关键字的多行更新将试图删除一个外关键字依赖的父关键字值,在版本5以前,当引用主关键值外健值当前存在时,试图更新该主健值 |
| -532 | 23504 | 删除操作违反了已指定的参照约束 |
| -533 | 21501 | 多行插入无效,试图将多行插到自我引用的表中 |
| -534 | 21502 | 可改变主健列值的更新语句不能在同一时刻用于更新多行 |
| -535 | 21502 | 当从自我引用表中删除数据或者更新主健列时,不能指定WHERE CURRENT OF。不是版本5的子系统才调用该代码 |
| -536 | 42914 | 因为某一特定表的参照约束存在,所以删除语句无效 |
| -537 | 42709 | 在外健语句或主健语句的规范中,每个列的出现不能多于一次 |
| -538 | 42830 | 无效的外健;不符合引用的表没有主健 |
| -539 | 42888 | 不能定义外健,因为被引用的表没有主健 |
| -540 | 57001 | 表定义不完整,直到为主健建立了唯一索引或UNIQUE语句、或者包含GENERATED BYDEFAULT属性的ROWID列 |
| -542 | 42831 | 可以为空的列不允许作为主健的一部分包含在内 |
| -543 | 23511 | 因为该表是指定了SET NULL删除规则的参照约束的父表而且检查约束不允许NULL,所以DELETE不能发生 |
| -544 | 23512 | 不能用ALTER添加检查约束,因为已存在的某行与该检查约束冲突 |
| -545 | 23513 | INSERT或者UPDATE导致检查约束冲突 |
| -546 | 42621 | 在CREATE或ALTER TABLE中指定的检查约束无效 |
| -548 | 42621 | 因为指定的列而引起的检查约束无效 |
| -549 | 42509 | DYNAMICRULES(BIND)计划或程序包的无效SQL语句 |
| -551 | 42501 | 用户试图对不拥有权限的特定的对象进行操作,或者表不存在 |
| -552 | 42502 | 用户试图执行未被授权的操作 |
| -553 | 42503 | 不能指定CURRENT SQLID,因为用户尚没有被允许改变那个ID |
| -554 | 42502 | 不能对你本身赋予一个权限 |
| -555 | 42502 | 不能对你本身撤销一个权限 |
| -556 | 42504 | 不能撤销用户没有拥有的权限 |
| -557 | 42852 | 指定了不一致的授予或撤销关键词 |
| -558 | 56025 | 为授予或撤销语句指定了无效的语句(一个或一组) |
| -559 | 57002 | DB2权限机制已经禁用,授予或者撤销不能被发布 |
| -567 | 42501 | 指定的权限ID缺少对指定的程序包的绑定权限 |
| -571 | 25000 | 不允许多点更新 |
| -573 | 42890 | 不能定义参照约束,因为已指定的父表中在指定的列上没有唯一健 |
| -574 | 42864 | 指定的缺省与列定义冲突 |
| -577 | 38002 | 试图修改用户自定义函数中的数据或者存储过程中的数据,但这些对象的建立没有选择MODIFIES SQL DATA选项 |
| -579 | 38004 | 试图修改用户自定义函数中的数据或者存储过程中的数据,但这些对象的建立没有选择READ SQL DATA选项,也没有选择MODIFIES SQL DATA选项 |
| -580 | 42625 | CASE表达式中的结果表达式不能都是空的 |
| -581 | 42804 | CASE表达式中的结果表达式为不兼容的数据类型 |
| -582 | 42625 | SEARCHED-WHEN-CLAUSE中的查找条件指定了一个限定的、IN或EXISTS谓词 |
| -583 | 42845 | 指定的函数失败,因为他不是决定性的,或者可能有外部动作 |
| -585 | 42732 | 在当前路径中模式名不止一次出现 |
| -586 | 42907 | CURRENT PATH专用寄存器在长度上不能超过254字符 |
| -587 | 428C6 | 项目引用的列表必须是同一个家族 |
| -590 | 42734 | 在命名的存储过程或用户自定义的函数中的参数必须是独一无二的 |
| -592 | 42510 | 没有授权权限,让你在WLM环境中建立的存储过程或者用户自定义函数 |
| -601 | 42710 | 试图创建(或重命名)已经存在的对象 |
| -602 | 54008 | CREATE INDEX语句中指定的列太多 |
| -603 | 23515 | 因为发现有重复值,所以不能建立唯一的索引 |
| -604 | 42611 | 在CREATE或ALTER TABLE语句中的为数据类型指定的长度、精度以及标度无效 |
| -607 | 42832 | 指定的INSERT、UPDATE或DELETE语句不能被发布,应为这些语句对DB2 CATLOG表执行写操作 |
| -611 | 53088 | 当LOCKSIZE是TABLE或者TABLESPACE时,LOCKMAX必须为0 |
| -612 | 42711 | 在同一个表、索引或试图中不允许有重复列名 |
| -613 | 54008 | 主健或UNIQUE约束太长或者包含了太多的列 |
| -614 | 54008 | 已经超过了索引的内部健长度的最大长度(255)限制 |
| -615 | 55006 | 不能删除这个程序包,因为该程序包目前正在执行 |
| -616 | 42893 | 指定的对象不能被删除,因为其他对象依赖于该对象 |
| -617 | 56089 | 对于DB2版本6,1型索引无效。对于以前的版本,1型索引不能用LOCKSIZE ROW或LARGE表空间定义 |
| -618 | 42832 | 对DB2 CATALOG表的请求操作时不允许的 |
| -619 | 55011 | DSNDB07不能修改,除非他先被停止了 |
| -620 | 53001 | 对在DSNDB07中的表空间不允许指定该关键词 |
| -621 | 58001 | 遇到了重复的DBID,遇到了系统问题 |
| -622 | 56031 | 不能指定FOR MIXED DATA因为没有安装混合数据选项 |
| -623 | 55012 | 不能为单一的表定义多个族索引 |
| -624 | 42889 | 不能为单一的表定义多个主健 |
| -625 | 55014 | 用主健定义的表要求唯一索引 |
| -626 | 55015 | 不能发布ALTER语句来改变PRIQTY SECQTY或ERASE,除非先停止了表空间 |
| -627 | 55016 | 不能发布ALTER语句来改变PRIQTY SECQTY或ERASE,除非先把表空间定义为使用存储器组的表空间 |
| -628 | 42613 | 指定语句时相互排斥的(例如,不能分区一个分段的表空间) |
| -629 | 42834 | 因为该外健不能包含空值,所以SET NULL无效 |
| -630 | 56089 | 不能为1型索引指定WHERE NOT NULL |
| -631 | 54008 | 无效的外健;要么是比254个字节长,要么包含的列数多于40 |
| -632 | 42915 | 指定的删除规则禁止把这个表定义为已制定表的从属表 |
| -633 | 42915 | 无效删除规则;必须使用特定的强制删除规则 |
| -634 | 42915 | 在这种情况下,DELETE CASCADE不允许 |
| -635 | 42915 | 删除规则不能有差异或者不能为SET NULL |
| -636 | 56016 | 在分区索引健的升序或降序规范中,分区所以必须与该规范一致 |
| -637 | 42614 | 遇到重复的关键词 |
| -638 | 42601 | 在CREATE TABLE语句中缺少列定义 |
| -639 | 56027 | 带有SET NULL的删除规则的外健的可空列不能是分区索引的列 |
| -640 | 56089 | 不能为这个表空间指定LOCKSIZE ROW,因为在该表空间中的表上定义了1型索引 |
| -642 | 54021 | 唯一约束包含太多的列 |
| -643 | 54024 | 检查约束超出了3800个字符的最大长度 |
| -644 | 42615 | 在SQL语句中为关键词指定的值无效 |
| -646 | 55017 | 在指定的分区表空间或者缺省表空间中不能创建表,因为指定的表空间已经包含了一个表 |
| -647 | 57003 | 指定的缓冲池无效,因为他没有被激活 |
| -650 | 56090 | ALTER INDEX不能被执行;提供了原因代码 |
| -651 | 54025 | 如果CREARE或ALTER TABLE被允许,表对象的描述词(object descriptor,OBD)将超过最大值(32KB) |
| -652 | 23506 | 遇到了EDITRPROC或VALIDPROC冲突 |
| -653 | 57004 | 在分区表空间中的表不可用,因为分区索引尚未被创建 |
| -655 | 56036 | 在卷的列表中,STOGROUP不能指定为特定的或不特定(“*”)的卷 |
| -658 | 42917 | 当试图删除指定的对象时,无法删除该对象,该对象的删除必须通过删除与之相关联的对象完成 |
| -660 | 53035 | 不正确的分区索引规范,必须为族索引定义有限制的关键字 |
| -661 | 53036 | 分区索引没有指定恰当的分区数目 |
| -662 | 53037 | 试图在未分区的表空间(分段的或简单的)上建立分区索引 |
| -663 | 53038 | 为分区索引指定的关键字限制值是一个无效数字 |
| -665 | 53039 | 为ALTER TABLESOACE语句指定了无效的PART语句 |
| -666 | 57005 | SQL语句不能被处理,因为指定的函数当前正处于进行过程中 |
| -667 | 42917 | 不能明确的删除分区表空间的族索引,必须除去分区表空间来去掉分区索引 |
| -668 | 56018 | 不能向用EDITPROC定义的表中添加列 |
| -669 | 42917 | 不能显式的删除分区表空间中的表,必须删除分区表空间来删除表 |
| -670 | 54010 | 表的记录长度超过了页面的大小 |
| -671 | 53040 | 不能更改指定的表空间的缓冲池,因为这将改变表空间的页面大小 |
| -672 | 55035 | 在命名的表上不允许DROP |
| -676 | 53041 | 只有4KB的缓冲池可被用于一个索引 |
| -677 | 57011 | 缓冲池扩展失败,由于可用的虚拟内存的大小不足 |
| -678 | 53045 | 为才分区索引中指定的限制健提供的值与数据类型不符 |
| -679 | 57006 | 不能创建某一个特定对象,因为该对象的一个drop目前正在挂起 |
| -680 | 54011 | 对DB2表不能超过750列 |
| -681 | 23507 | 列违反了指定的FIELDPROC |
| -682 | 57010 | 不能载入FIELDPROC |
| -683 | 42842 | 列、单值类型、函数或者过程无效,因为不兼容语句。例如,指定的INTEGER具有FORBITDATA选项 |
| -684 | 54012 | 指定的文字列表不能超过254个字节 |
| -685 | 58002 | FIELDPROC返回一个无效的域描述 |
| -686 | 53043 | 用FIELDPROC定义的一个列不能与一个使用不同的FIELDPROC定义的列作比较 |
| -687 | 53044 | 列不能与一个非兼容字段类型的列比较 |
| -688 | 58002 | 返回不正确的数据 |
| -689 | 54011 | 从属表定义了太多的列 |
| -690 | 23508 | 数据定义的控制支持拒绝这个语句 |
| -691 | 57018 | 命名的注册表不存在 |
| -692 | 57018 | 命名的索引不存在,但命名的注册表需要该索引 |
| -693 | 55003 | 命名的注册表/索引的命名列无效 |
| -694 | 57023 | DROP正在命名的注册表上挂起 |
| -696 | 42898 | 由于相关的名字或者转换表的名字使用不正确,指定的触发器无效 |
| -697 | 42899 | FOR EACH语句被指定,因此与OLD合NEW相关的名字是不允许的,或者不能为一个BEFORE触发器指定OLD_TABLE和NEW_TABLE |
| -713 | 42815 | 指定的专用寄存器是无效的 |
| -715 | 56064 | 命名的程序不能被运行,因为他依赖与你所安装的DB2版本的部件,但是你的数据中心没有安装这个部件 |
| -716 | 56065 | 命名的程序使用这个版本的不正确的发行版本做了预编译 |
| -717 | 56066 | BIND失败,因为他依赖与你所安装的DB2版本的部件,但是你的数据中心没有安装这个部件 |
| -718 | 56067 | REBIND失败,因为IBMREQD列无效 |
| -719 | 42710 | 不能BIND ADD一个已经存在的程序包 |
| -720 | 42710 | 不能BIND REPLACE一个已经存在的程序包版本 |
| -721 | 42710 | 程序包的一致性记号必须是独一无二的 |
| -722 | 42704 | 绑定错误,因为指定的程序包不存在 |
| -723 | 09000 | 一个触发的SQL语句接受到一个错误 |
| -724 | 54038 | 达到了(16)级联间接的SQL语句的最大项目 |
| -725 | 42721 | 对专门指定的寄存器提供了一个无效值 |
| -726 | 55030 | 因为SYSPKSYSTEM条目,不能绑定这个程序包 |
| -728 | 56080 | 指定的数据类型不能与私有协议发布一起使用 |
| -729 | 429B1 | 用COMMIT ON RETURN定义的存储过程不能用作嵌套的CALL过程的目标 |
| -730 | 56053 | 在只读的共享数据库中为表定义的参照完整性无效 |
| -731 | 56054 | VSAM数据集必须用SHAREOPTION(1.3)定义 |
| -732 | 56055 | 被定义为只读型数据库却拥有没有定义空间或者索引空间的DB2子系统 |
| -733 | 56056 | 只读共享数据库的定义不一致 |
| -734 | 56057 | 一旦一个数据库被定义为ROSHARE READ,他将不能被更改为其他不同的ROSHARE状态 |
| -735 | 55004 | 用DBID名称标识的数据库不再是一个只读共享数据库 |
| -736 | 53014 | 命名的DBID无效 |
| -737 | 53056 | 在这种状况下,不能建立一个隐含的表空间 |
| -739 | 56088 | 因为同时指定了ALLOW PARALLEL和MODIELES SQL DATA这两个语句,因此已设定的函数将不能再被更改 |
| -740 | 51034 | 在这种方式下不能用MODIELES SQL DATA定义指定的函数 |
| -741 | 55030 | 已经为命名的共享组成员的数据定义了工作文件数据库 |
| -742 | 53004 | DSNDB07是隐含的工作文件数据库 |
| -746 | 57053 | 在特定的触发器、存储过程或函数中的SQL语句违反嵌套SQL限制 |
| -747 | 57054 | 指定的表是不可用的除非为LOB数据列建立起必须的辅助表 |
| -748 | 54042 | 在指定的辅助表上已经有一个索引 |
| -750 | 42986 | 不能对已指定的表重新命名,因为他至少在一个现存的视图或触发器中被引用 |
| -751 | 42987 | 存储过程或用户自定义的函数试图执行一个不允许执行的SQL语句。DB2的线程被置于MUST_ROLLBACK状态 |
| -752 | 0A001 | 无效CONNECT语句 |
| -763 | 560A1 | 无效的表空间名 |
| -764 | 560A2 | LOB表空间必须与其相关的基表空间同在一个数据库中 |
| -765 | 560A3 | 表和数据库不兼容 |
| -766 | 560A4 | 不能对辅助表进行请求的操作 |
| -767 | 42626 | CREATE INDEX失败,因为在辅助表中为索引指定了列,或者因为没有为非辅助表的索引指定列 |
| -768 | 560A50 | 不能为指定的列或者指定的分区建立辅助表,因为其辅助表已经存在 |
| -769 | 53096 | CREATE AUX TABLE的规格与基表不匹配 |
| -770 | 530A6 | 指定的表必须有一个ROWID列,那么该表才可以包含一个LOB列 |
| -771 | 428C7 | 无效的ROWID列规范 |
| -797 | 42987 | CREATE TRIGGER包含不被支持的语法 |
| -798 | 428C9 | 不能把一个值插入到用GENERATED ALWAYS定义的ROWID列 |
| -802 | 22012 | 某一特定操作发生了异常错误。被零除 |
| 22003 | 某一特定操作发生了异常错误。但不是被零除 | |
| -803 | 23505 | 不能插入行,因为这将违反唯一索引的约束 |
| -804 | 07002 | SQLDA的调用参数列表有误 |
| -805 | 51002 | 在计划中没有发现DBRM或程序包名 |
| -807 | 23509 | 对已指定的环境和连接,该程序包不可用 |
| -808 | 08001 | CONECT语句与程序中的第一个CONNECT语句不一致 |
| -811 | 21000 | 当多行作为一内嵌的选择语句的返回结果是,必须使用游标 |
| -812 | 22508 | 在CURRENT PACKAGESET中的ID集合是空白的,语句不能被执行 |
| -815 | 42920 | 在一个内置选择语句或者一个基本谓词的子查询中,显式的或隐含的指定了GROUP BY或HAVING语句 |
| -817 | 25000 | 执行SQL语句将可能导致禁止更新用户数据或DB2编目 |
| -818 | 5103 | 计划<->载入组件的时间戳不匹配,在执行计划中没有从同一个预编译中建立DBRM,该预编译是作为组件载入的 |
| -819 | 58004 | 视图不能重建,因为在DB2编目中存储的分析树长度为0 |
| -820 | 58004 | 在这个DB2版本的DB2编目中遇到了无效值 |
| -822 | 51004 | 在SQLDA中遇到了无效地址 |
| -840 | 54004 | 在选择列表或插入列表中返回的项目太多 |
| -842 | 08002 | 到指定位置的连接已经存在 |
| -843 | 08003 | SET CONNECTION或RELEASE语句无法执行,因为连接不存在 |
| -870 | 58026 | 宿主变量描述符的个数不等于语句中宿主变量的个数 |
| -872 | 51302 | 这个子系统已指定了有效的CCSID |
| -873 | 53090 | 同一SQL语句中,不能同时引用EBCDIC表中的定义的列和ASCII表中定义的列 |
| -874 | 53901 | 指定对象的编码方案与其表空间的编码方案不匹配 |
| -875 | 42988 | 指定的操作符不能用于ASCII数据 |
| -876 | 53092 | 不能为指定的原因创建对象:提供了原因代码 |
| -877 | 53093 | 数据库或表空间不允许用ASCII,必须使用EBCDIC |
| -878 | 53094 | 该PLAN——TABLE不能是ASCII,必须使用EBCDIC |
| -879 | 53095 | 指定对象的CREATE或ALTER语句不能将列、单值类型,某个存储过程或用户自定义函数的参数定义为以下类型:MAXED DATA,GRAPHIC,VARGRAPHIC,LONGVARGRAPHIC,因为系统没有为指定的编码方案定义相应的CCSID |
| -900 | 08003 | 应用处理没有连接到应用服务器,语句不能被执行 |
| -901 | 58004 | 遇到时断时续的系统错误,该错误不能抑制后继的SQL语句的执行 |
| -902 | 58005 | 内部控制块的指针错误,要求重新绑定 |
| -904 | 57011 | 指定的资源不可用 |
| -905 | 57014 | 超出了资源上限 |
| -906 | 51005 | 因为重大错误,SQL语句无法执行 |
| -908 | 23510 | 当前资源限制设施的规范或者自动重绑定的系统参数不允许BIND,REBIND,AUTOREBIND |
| -909 | 57007 | 对象已被删除 |
| -910 | 57007 | 因为在该对象上挂起DROP,所以不能访问该对象 |
| -911 | 40001 | 当前工作单元已被回滚 |
| -913 | 57033 | 因为死锁或超时导致不成功执行 |
| -917 | 42969 | 绑定程序包已经失败 |
| -918 | 51021 | SQL语句不能被执行,因为连接丢失 |
| -919 | 56045 | 需要一个ROLLBACK |
| -922 | 42505 | 连接权限失败。试图从TSO、CICS或IMS访问DB2,同时相应的连接设施处于非活动的状态 |
| -923 | 57015 | 因为DB2不可用,所以不能建立连接 |
| -924 | 58006 | 遇到了DB2内部的连接错误:提供了原因代码 |
| -925 | 2D521 | SQL的COMMIT语句不能从CICS或IMS/TM发布 |
| -926 | 2D521 | SQL的ROLLBACK语句不能从CICS或IMS/TM发布 |
| -927 | 51006 | 当正在连接的环境没有建立时,语言接口被调用。利用DSN命令激发该程序 |
| -929 | 58002 | 数据获取退出已经失败(DPROP) |
| -939 | 51021 | 由于远程服务器的未请求的回滚,要求一个回滚 |
| -947 | 56038 | SQL语句失败,因为更新不能被传播(DPROP) |
| -948 | 56062 | DDF没有启动,分布式操作无效 |
| -950 | 42705 | 在SQL语句中指定的位置在SYSIBM.LOCATIONS中没有定义 |
| -965 | 51021 | 存储过程非正常终止(在DB2 6之前的版本) |
| -981 | 57015 | 当前不是处于允许SQL的状态时,试图在RRSAF中执行SQL |
| -991 | 57015 | 调用连接不能建立一个到DB2的隐含或开放连接 |
| -2001 | 53089 | 为储存过程指定的宿主变量参数的个数不等于预期的参数个数 |
| -20003 | 560A7 | 不能为GRECP中的表空间或索引指定GBPCACHE NONE |
| -20004 | 560A8 | 对于WORKFILE对象。8KB或16Kb的缓冲池页面大小无效 |
| -20005 | 54035 | 指定的对象类型超出了内部的ID极限 |
| -20006 | 53097 | 当没有指定WLM环境时,LOB不能被指定为参数 |
| -20070 | 53098 | 不能非LOB列建立一个辅助表 |
| -20071 | 53099 | 必须指定WLM环境名 |
| -20072 | 56052 | 指定的权限ID不拥有在触发器程序包上执行BIND所需的权限 |
| -20073 | 42927 | 不能按照指定的要求更改命名的函数,因为在现存的视图定义中引用了该函数 |
| -20074 | 42939 | 不能建立指定的对象,因为“SYS”是一个保留的前缀 |
| -20100 | 56059 | 在被触发的SQL语句中有BIND错误,指定了错误的SQLCODE和SQLSTATE |
| -20101 | 56059 | 由于指定的原因代码,该函数失败 |
| -20102 | 42849 | 在CREATE或ALTER FUNCTION语句中不能使用指定的选项 |
| -20104 | 42856 | 更改一个CCSID失败 |
| -20106 | 42945 | 不能改变表空间或数据库的CCSID,因为现存的试图引用 |
| -30000 | 58008 | DRDA分布协议错误;处理可以继续 |
| -30002 | 57057 | 使用DRDA的分布式客户把OPEN语句连接到PREPARE,但PREPARE接受到一个SQLCODE为+495的警告 |
| -30020 | 58009 | DRDA分布协议错误;对话被解除 |
| -30021 | 58010 | DRDA分布协议错误;处理不能继续 |
| -30030 | 58013 | 违反分布协议:COMMIT不成功,对话被解除(AS) |
| -30040 | 57012 | 因为不能得到资源,执行失败,处理可以继续(AS) |
| -30041 | 57013 | 因为不能得到资源,执行失败,处理不能成功的继续(AS) |
| -30050 | 58011 | 执行不成功,在BIND过程中不能执行语句 |
| -30051 | 58012 | 特定的BIND过程不是处于活动状态(远程BIND),从而导致失败 |
| -30052 | 42932 | 程序准备的假设错误 |
| -30053 | 42506 | 程序包的拥有者遭遇授权失败 |
| -30060 | 08004 | RBD遭遇授权失败 |
| -30061 | 08004 | 指定了无效或者没有存在的RDB |
| -30070 | 58014 | 目标子系统不支持这个命令 |
| -30071 | 58015 | 目标子系统不支持这个对象 |
| -30072 | 58016 | 目标子系统不支持这个参数 |
| -30073 | 58017 | 目标子系统不支持这个参数值 |
| -30074 | 58018 | 应答信息不被支持 |
| -30080 | 08001 | SNA通信错误 |
| -30081 | 58019 | TCP/IP通信错误 |
| -30082 | 08001 | 由于安全冲突、通信失败:提供了原因代码 |
| -30090 | 25000 | 指定的操作对远程执行失败 |
| -30104 | 56095 | 在绑定选项与绑定值中有错误 |
| -30105 | 56096 | 指定的绑定选项不兼容 |
- db2 8.2 / 9.7 / 9.8
db db2 doc
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp
Linux下DB2 81重装的问题
http://www.nokiamobile.org.cn/25_100101_456977.html
db db2 down
db2winIA32v8 fixpak
DB2 UDB Version 8 FixPaks & client
downloads
for 32-bit DB2 Products
for Windows Operating Systems
on 32-bit Intel and AMD systems
http://www-01.ibm.com/support/docview.wss?rs=71&uid=swg21256059#r17
ftp://public.dhe.ibm.com/ps/products/db2/fixes2/english-us/db2winIA32v8/fixpak/FP17_WR21416/FP17_WR21416_ESE.exe
db db2 setup
安装文件
C829HML.tar C829HML_ 335_ESE_LNXAMD26_64_NLV.tar 版本 8.2.2(等同于版本 8.1 修订包 9)
C50T9ML.tar C50T9ML_ 139_ESE_LNX_64_NL.tar
FP18_MI00295.tar
[root@ localhost ~]# cd /home/db2_v8/335_ESE_LNXAMD26_64_NLV/db2/linux26/Java-1.4/
IBMJava2-SDK-1.4.2-1.0.i386.rpm
ibm-java-x86_64-sdk-6.0-7.0.x86_64.rpm
C829HML_335_ESE_LNXAMD26_64_NLV.tar
DB2在Linux和UNIX环境下的安装
http://info.zhangye.gov.cn/dnwl/dnjs/200905/119695.html
DB2 V8.1 在RedHat Advanced Platform 5的安装
http://blog.chinaunix.net/u1/53256/showart_1154388.html
安装步骤
DB2 UDB V8.1 在RedHat Enterprise Linux AS4 Update 3(Linux 2.6 x86_64内核)平台的安装
http://roadli.spaces.live.com/blog/cns!98DEB1E47C7829CB!217.entry
安装完成后验证下面三个包是否存在
rpm -qa|grep compat-libstdc++
compat-libstdc++-33-3.2.3-47.3.x86_64.rpm
compat-libstdc++-296-2.96-132.7.2.i386.rpm
一定要去下载IBM 1.4.2 for AMD64/EM64T的JDK,下载完,安装
然后可以创建一个link,方便调用
ln -s /opt/IBMJava2-amd64-142 /opt/jdk
修改/etc/profile,增加下面的内容
export JAVA_HOME=/opt/jdk
export DB2USELOCALJRE=TRUE
export RPM_FORCE_NPTL=1
四,解压缩安装包到指定目录。我解压到了/DB2_64目录下,自动生成了335_ESE_LNXAMD26_64_NLV目录
进入安装包的目录 cd /DB2_64/335_ESE_LNXAMD26_64_NLV
mv java java.orig
ln -s /opt/IBMJava2-amd64-142 java
这样使用我们自己安装的64bit的JDK
然后安装数据库软件
IBM_db2msen81...
Preparing... ##################################################
IBM_db2msen81 ##################################################
IBM_db2cliv81...
Preparing... ##################################################
IBM_db2cliv81 ##################################################
IBM_db2icw81...
Preparing... ##################################################
IBM_db2icw81 ##################################################
IBM_db2ldap81...
Preparing... ##################################################
IBM_db2ldap81 ##################################################
IBM_db2wmsa81...
Preparing... ##################################################
IBM_db2wmsa81 ##################################################
IBM_db2cucs81...
Preparing... ##################################################
IBM_db2cucs81 ##################################################
IBM_db2conv81...
Preparing... ##################################################
IBM_db2conv81 ##################################################
IBM_db2secl81...
Preparing... ##################################################
IBM_db2secl81 ##################################################
IBM_db2sesm81...
Preparing... ##################################################
IBM_db2sesm81 ##################################################
IBM_db2icuc81...
Preparing... ##################################################
IBM_db2icuc81 ##################################################
IBM_db2icut81...
Preparing... ##################################################
IBM_db2icut81 ##################################################
IBM_db2jhen81...
Preparing... ##################################################
IBM_db2jhen81 ##################################################
IBM_db2repl81...
Preparing... ##################################################
IBM_db2repl81 ##################################################
IBM_db2sp81...
Preparing... ##################################################
IBM_db2sp81 ##################################################
IBM_db2chen81...
Preparing... ##################################################
IBM_db2chen81 ##################################################
IBM_db2adt81...
Preparing... ##################################################
IBM_db2adt81 ##################################################
IBM_db2adts81...
Preparing... ##################################################
IBM_db2adts81 ##################################################
IBM_db2xmls81...
Preparing... ##################################################
IBM_db2xmls81 ##################################################
IBM_db2cj81...
Preparing... ##################################################
IBM_db2cj81 ##################################################
IBM_db2dc81...
Preparing... ##################################################
IBM_db2dc81 ##################################################
IBM_db2dwcm81...
Preparing... ##################################################
IBM_db2dwcm81 ##################################################
IBM_db2fs81...
Preparing... ##################################################
IBM_db2fs81 ##################################################
IBM_db2inst81...
Preparing... ##################################################
IBM_db2inst81 ##################################################
IBM_db2wbdb81...
Preparing... ##################################################
IBM_db2wbdb81 ##################################################
IBM_db2xml81...
Preparing... ##################################################
IBM_db2xml81 ##################################################
IBM_db2jdbc81...
Preparing... ##################################################
IBM_db2jdbc81 ##################################################
IBM_db2ca81...
Preparing... ##################################################
IBM_db2ca81 ##################################################
IBM_db2rte81...
Preparing... ##################################################
IBM_db2rte81 ##################################################
IBM_db2conn81...
Preparing... ##################################################
IBM_db2conn81 ##################################################
IBM_db2crte81...
Preparing... ##################################################
IBM_db2crte81 ##################################################
IBM_db2das81...
Preparing... ##################################################
IBM_db2das81 ##################################################
IBM_db2dj81...
Preparing... ##################################################
IBM_db2dj81 ##################################################
IBM_db2engn81...
Preparing... ##################################################
IBM_db2engn81 ##################################################
IBM_db2smpl81...
Preparing... ##################################################
IBM_db2smpl81 ##################################################
IBM_db2djx81...
Preparing... ##################################################
IBM_db2djx81 ##################################################
IBM_db2inx81...
Preparing... ##################################################
IBM_db2inx81 ##################################################
IBM_db2pext81...
Preparing... ##################################################
IBM_db2pext81 ##################################################
IBM_db2essg81...
Preparing... ##################################################
IBM_db2essg81 ##################################################
IBM_db2cc81...
Preparing... ##################################################
IBM_db2cc81 ##################################################
IBM_db2icc81...
Preparing... ##################################################
IBM_db2icc81 ##################################################
IBM_db2icms81...
Preparing... ##################################################
IBM_db2icms81 ##################################################
The installation logfile can be found in /tmp/db2_install_log.5273.
groupadd db2grp1
groupadd db2fgrp1
groupadd dasadm1
useradd -g db2grp1 -m -d /home/db2inst1 -p “” db2inst1
useradd -g db2fgrp1 -m -d /home/db2fenc1 -p ““ db2fenc1
useradd -g dasadm1 -m -d /home/dasusr1 -p “” dasusr1
注:以上三个用户密码均为空,用su命令切换到相应用户下时,用passwd命令设置即可
首先我们使用以下命令创建管理服务器实例
/opt/IBM/db2/V8.1/instance/dascrt -u dasusr1
SQL4406W The DB2 Administration Server was started successfully.
DBI1070I Program dascrt completed successfully.
/opt/IBM/db2/V8.1/instance/db2icrt -u db2fenc1 db2inst1
DBI1070I Program db2icrt completed successfully.
/opt/IBM/db2/V8.1/cfg/db2ln
用su命令切换到db2实例所用者用户终端
su - db2inst1
db2set DB2_DISABLE_FLUSH_LOG=ON
db2set AUTOSTART=YES
db2set DB2_STRIPED_CONTAINERS=ON
db2set DB2_HASH_JOIN=Y
db2set DB2COMM=tcpip
db2set DB2_PARALLEL_IO=*
db2set DB2CODEPAGE=1386
[db2inst1@review root]$ db2
然后在DB2的提示符下输入
update database manager configuration using svcename server1
设置服务名为server1
然后 get database manager configuration ,检查一下参数
其中让我比较郁闷的就是JDK_PATH参数,居然设的不对,搞得数据库安装好后图形化管理工具无法使用
下面是我机器上执行的结果,以供参考!
Command Line Processor for DB2 SDK 8.2.2
prompt. For example:
db2 => connect to sample
db2 => bind sample.bnd
For command help, type: ? command, where command can be
the first few keywords of a database manager command. For example:
? CATALOG DATABASE for help on the CATALOG DATABASE command
? CATALOG for help on all of the CATALOG commands.
interactive mode, all commands must be prefixed with 'db2'.
To list the current command option settings, type LIST COMMAND OPTIONS.
DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.
Communications bandwidth (MB/sec) (COMM_BANDWIDTH) = 1.000000e+02
Data Links support (DATALINKS) = NO
Federated Database System Support (FEDERATED) = NO
Transaction processor monitor name (TP_MON_NAME) =
Notify Level (NOTIFYLEVEL) = 3
Diagnostic data directory path (DIAGPATH) = /home/db2inst1/sqllib/db2dump
Buffer pool (DFT_MON_BUFPOOL) = OFF
Lock (DFT_MON_LOCK) = OFF
Sort (DFT_MON_SORT) = OFF
Statement (DFT_MON_STMT) = OFF
Table (DFT_MON_TABLE) = OFF
Timestamp (DFT_MON_TIMESTAMP) = ON
Unit of work (DFT_MON_UOW) = OFF
Monitor health of instance and databases (HEALTH_MON) = ON
SYSCTRL group name (SYSCTRL_GROUP) =
SYSMAINT group name (SYSMAINT_GROUP) =
SYSMON group name (SYSMON_GROUP) =
Client Kerberos Plugin (CLNT_KRB_PLUGIN) =
Group Plugin (GROUP_PLUGIN) =
GSS Plugin for Local Authorization (LOCAL_GSSPLUGIN) =
Server Plugin Mode (SRV_PLUGIN_MODE) = UNFENCED
Server List of GSS Plugins (SRVCON_GSSPLUGIN_LIST) =
Server Userid-Password Plugin (SRVCON_PW_PLUGIN) =
Server Connection Authentication (SRVCON_AUTH) = NOT_SPECIFIED
Database manager authentication (AUTHENTICATION) = SERVER
Cataloging allowed without authority (CATALOG_NOAUTH) = NO
Trust all clients (TRUST_ALLCLNTS) = YES
Trusted client authentication (TRUST_CLNTAUTH) = CLIENT
Bypass federated authentication (FED_NOAUTH) = NO
Java Virtual Machine heap size (4KB) (JAVA_HEAP_SZ) = 2048
Audit buffer size (4KB) (AUDIT_BUF_SZ) = 0
Size of instance shared memory (4KB) (INSTANCE_MEMORY) = AUTOMATIC
Backup buffer default size (4KB) (BACKBUFSZ) = 1024
Restore buffer default size (4KB) (RESTBUFSZ) = 1024
Max requester I/O block size (bytes) (RQRIOBLK) = 32767
Query heap size (4KB) (QUERY_HEAP_SZ) = 1000
Max number of existing agents (MAXAGENTS) = 400
Agent pool size (NUM_POOLAGENTS) = 200(calculated)
Initial number of agents in pool (NUM_INITAGENTS) = 0
Max number of coordinating agents (MAX_COORDAGENTS) = (MAXAGENTS - NUM_INITAGENTS)
Max no. of concurrent coordinating agents (MAXCAGENTS) = MAX_COORDAGENTS
Max number of client connections (MAX_CONNECTIONS) = MAX_COORDAGENTS
Number of pooled fenced processes (FENCED_POOL) = MAX_COORDAGENTS
Initial number of fenced processes (NUM_INITFENCED) = 0
Transaction resync interval (sec) (RESYNC_INTERVAL) = 180
SPM log size (SPM_LOG_FILE_SZ) = 256
SPM resync agent limit (SPM_MAX_RESYNC) = 20
SPM log path (SPM_LOG_PATH) =
Discovery mode (DISCOVER) = SEARCH
Discover server instance (DISCOVER_INST) = ENABLE
Enable intra-partition parallelism (INTRA_PARALLEL) = NO
Number of FCM request blocks (FCM_NUM_RQB) = AUTOMATIC
Number of FCM connection entries (FCM_NUM_CONNECT) = AUTOMATIC
Number of FCM message anchors (FCM_NUM_ANCHORS) = AUTOMATIC
Max number of node connection retries (MAX_CONNRETRIES) = 5
Max time difference between nodes (min) (MAX_TIME_DIFF) = 60
DB2_db2inst1 60000/tcp
DB2_db2inst1_1 60001/tcp
DB2_db2inst1_2 60002/tcp
DB2_db2inst1_END 60003/tcp
server1 50000/tcp # DB2 connection service port
db2 update dbm cfg using SVCENAME server1
[db2inst1@review ~]$ db2start
05/24/2006 21:48:56 0 0 SQL1063N DB2START processing was successful.
SQL1063N DB2START processing was successful.
进入DB2的命令行
db2 => create database TEST
DB20000I The CREATE DATABASE command completed successfully.
先把DB2停了了
db2stop
回到root用户,重起系统
shutdown -r now
注:所有黑色粗体字为需要用户输入的内容
Redhat AS4u2 Linux x86_64上安装 ECC6.0 IDES SR2(Oracle10g)手记
http://www.itpub.net/thread-976354-1-1.html
RHEL5 安装 DB2 常见问题, 其它版本 Linux 可以借鉴
http://www.db2china.net/club/thread-6631-1-1.html
eg1:创建实例报错 <DB2DIR>/instance/db2icrt -s ese -u db2fenc1 db2inst1
tail: cannot open `+2' for reading: No such file or directory
lcount = 0
DBI1069E Unexpected error. Function = chk_fsystype, Return code =
22.
Explanation:
An unexpected error occurred during the execution of this
program.
User Response:
If the problem persists, contact IBM Support with the following
information:
o Message number
o Function name
o Return code
o Problem description
DBI1079I Output is saved in the log file /tmp/db2icrt.log.30249.
Explanation:
All processed and failed operations have been saved into this log
file.
User Response:
Do not modify this file in any way. This file is for IBM
Technical Support reference.
A:修改/opt/IBM/db2/V8.1/instance/db2iutil 文件,将tail +2 全部更改为tail -n +2(共三处).
eg2:创建实例报错 <DB2DIR>/instance/db2icrt -s ese -u db2fenc1 db2inst1
SQL6048N A communication error occurred during START or STOP DATABASE MANAGER
processing.
Update DBM cfg SYSADM_GROUP errcode = 8
DBI1281E The database manager configuration file could not be
initialized.
Explanation:
An error occurred when attempting to initialize the database
manager configuration file. A DB2 instance could not be created
or migrated.
User Response:
Refer to the log file for problem determination. Resolve the
problem and try the command again. If the problem persists,
please contact IBM Support.
DBI1079I Output is saved in the log file /tmp/db2icrt.log.4682.
Explanation:
All processed and failed operations have been saved into this log
file.
User Response:
Do not modify this file in any way. This file is for IBM
Technical Support reference.
A:检查 /etc/hosts, /etc/sysconfig/network 配置是否正确,最简单的方法是 ping <HOSTNAME> 看看是否与你设置的IP地址匹配.
network文件内容如下:
$ cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=localhost.localdomain
hosts文件内容如下:
$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
xxx.xx.xx.xx HOSTNAME
::1 localhost6.localdomain6 localhost6
eg3:
/opt/IBM/db2/V8.1/bin/db2greg: error while loading shared libraries: /opt/IBM/db2/V8.1/lib/libimf.so: cannot restore segment prot after reloc: Permission denied
A:
Disable SELinux using the following command and run db2setup.
/usr/sbin/setenforce 0
To disable SELinux permanently, set SELINUX=disabled in /etc/selinux/config.
A:
The specific change required can be found by navigating through the Gnome menu:
System || Administration || Security Level and Firewall.
Once at the Security Level Configuration, click on the SELinux tab (on the right) and again on Modify SELinux Policy.
Once SELinux modifies and reloads the new policy, then the db2setup will clear this hurdle.
DB2双机HA完整方案
http://www.litrin.net/2006/01/20/db2%E5%8F%8C%E6%9C%BAha%E5%AE%8C%E6%95%B4%E6%96%B9%E6%A1%88/
1. 摘要
本文档介绍在SuSE Linux Enterprise Server v8.0(SLES 8)上安装配置DB2 UDB Enterprise Serverv8.2双机互备的高可靠性方案的基本步骤。该方案配合采用SLES的卷管理器(LVM)和Veritas Cluster Server v2.2(VCS 2.2)作为HA实现组件。
2. 概述
本文档假定读者已经理解双机互备的HA方案的基本概念。
2.1. 双机互备HA方案的基本步骤
建立一个双机互备方案的基本步骤是:
1. 确定基本参数(如IP地址、存储空间,等等。本方案的参数均为示范参数,读者需要根据实际环境替换)
2. 配置共享存储(本方案不涉及共享存储方案的配置)
3. 在两台节点上分别安装应用(在本方案中是DB2 UDB)
4. 在一台节点上对应用作初始配置(在本方案中是在共享存储上建立DB2数据库)
5. 在另一台节点上引入共享存储上的配置(在本方案中是对共享存储上的数据库做catalog操作)
6. 在两台节点上分别手动测试应用
7. 配置HA Cluster管理软件(在本方案中是VCS)
8. 测试HA Cluster管理软件可以成功接管资源
2.2. 假设
本文档假定采用以下示例环境,SLES与VCS已在节点上正确安装,SLES的共享存储已经正确连接,VCS的心跳连接已经正确配置。
2.2.1. 存储
各节点上需要足够的本地磁盘空间,来安装DB2 UDB的可执行代码及实例。
本方案需要足够的共享存储空间,来放置数据库数据。
假定共享存储上分配给DB2数据库的卷组名为/dev/datavg1,逻辑卷名为/dev/datavg1/db2lv1(使用SLES的LVM服 务),在两个节点上的挂接点名为/home/db2data,且已正确格式化为合适的文件系统(Veritas工程师指出在SLES 8上VCS 2.2不支持ext3文件系统,建议格式化时指定ext2,在SLES 9和VCS 4.1上不存在这个问题)。注意这个挂接点要在fstab文件中配置为启动时不自动挂接。
数据库其他表空间可以建立在共享存储的其他卷上,如果是文件系统,同样要配置为不自动挂接。本文档暂不讨论。
2.2.2. 节点
本HA方案采用两个服务器节点做主从互备,以下分别称为Active节点和Passive节点。这两个节点具有相同的硬件和操作系统配置。
2.2.3. 网络
对外的IP网络。假定该方案中DB2 UDB对外提供服务使用的浮动IP(Floating IP)为192.168.10.110,Active节点的物理IP为192.168.10.11,Passive节点的物理IP为192.168.10.12。
HA管理软件需要一组内部IP来管理双机间的心跳连接。心跳IP不在本文档范围内。
3. 配置步骤
3.1. DB2 UDB安装、配置步骤
3.1.1. 建立用户和组
在两台节点上分别在root下执行以下命令:
groupadd –g 900 db2iadm1
groupadd –g 901 db2fadm1
groupadd –g 902 dasadm1
useradd –g db2iadm1 –u 800 –d /home/db2inst1 –s /bin/bash db2inst1
useradd –g db2fadm1 –u 801 –d /home/db2fenc1 –s /bin/bash db2fenc1
useradd –g dasadm1 –u 802 –d /home/dasusr1 –s /bin/bash dasusr1
组ID和用户ID可以根据实际情况选择,但务必保证在两台节点上相同的用户名/组名具有相同的ID。
3.1.2. 安装DB2 UDB产品代码
在两台节点上分别在root用户下执行以下命令:
cd
./db2install –p DB2.ESE
cd /opt/IBM/db2/V8.1/adm
./db2licm –a /db2/license/db2ese.lic
其中,是DB2 UDB ESE安装介质所在目录。
3.1.3. 建立实例
在两台节点上分别在root用户下执行以下命令:
cd /opt/IBM/db2/V8.1/instance
./db2icrt –p 50000 –u db2fenc1 db2inst1
3.1.4. 建立DAS
在两台节点上分别在root用户下执行以下命令:
cd /opt/IBM/db2/V8.1/instance
./dascrt –u dasusr1
3.1.5. 建立数据库
在Active节点上在root用户下执行以下命令:
mount /dev/datavg1/db2lv1 /home/db2data
su – db2inst1
db2start
db2 create database on /home/db2data
db2stop
exit
umount /home/db2data
其中,是数据库名。
3.1.6. Catalog数据库
在Passive节点上在root用户下执行以下命令:
mount /dev/datavg1/db2lv1 /home/db2data
su – db2inst1
db2start
db2 catalog database on /home/db2data
db2stop
exit
umount /home/db2data
其中,是上一步骤建立的数据库名
3.1.7. 检验DB2配置
在Active节点上,在root用户下执行以下命令:
mount /dev/datavg1/db2lv1 /home/db2data
su – db2inst1
db2start
db2 connect to
db2 create table T (ID INTEGER)
db2 connect reset
db2stop
exit
umount /home/db2data
检验上述命令均无出错信息。
在Passive节点上,在root用户下执行以下命令:
mount /dev/datavg1/db2lv1 /home/db2data
su – db2inst1
db2start
db2 connect to
db2 drop table T
db2 connect reset
db2stop
exit
umount /home/db2data
检验上述命令均无出错信息。
3.2. VCS配置
在VCS中,建立DB2资源组,在组中配置浮动IP、Application等资源,将Application的启动、停止等命令脚本配置为 db2start、db2stop、db2admin start和db2admin stop,将Application的监视命令脚本配置为ps命令,监视db2sysc和db2dasrrm进程。
db2在linux上无法启动
http://yezongbo.iteye.com/blog/371172
在redhat AS4上装了个db2,装好后发现无法启动,使用db2start的时候报错:
SQL6048N A communication error occurred during START or STOP DATABASE MANAGER processing.
SQL1032N No start database manager command was issued . SQLSTATE=57019
在google上搜索后发现和hosts有关
那怎么解决呢? 我们需要修改db2下的db2nodes.cfg文件或者hosts文件
db2nodes.cfg配置文件位于/home/db2inst1/sqllib目录下
先看下db2nodes.cfg 和hosts文件的内容是什么?
vi db2nodes.cfg 
vi /etc/hosts 
明显可以看到db2nodes.cfg内的localhost在hosts文件没有定义
所以我们需要把db2nodes.cfg内的localhost修改为hosts文件中的linux-vm23.localdomain 
接下来启动db2 正常的启动了! 
end
db2 v9 infocenter
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.qb.server.doc/doc/r0025127.html
db2 v9 setup / install
http://ishare.iask.sina.com.cn/f/13994822.html
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.common.doc%2Fdoc%2Ft0008271.html
http://dl.iteye.com/topics/download/f3b7ea0b-5d72-359e-b6d4-046b371fbc7a
- 创建用于 DB2 安装的组和用户标识
- 创建 DB2 管理服务器 (DAS)
- 使用 db2icrt 创建实例
- 为 DB2 文件创建链接 (可选)
-为 DB2 实例配置 TCP/IP 通信
-使用许可证中心注册许可证密钥
db2 v9.1 jdk
C:\Documents and Settings\Lindows>java -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pwi32devifx-20070706 (SR
5 + IZ00983))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-2007042
6 (JIT enabled)
J9VM - 20070420_12448_lHdSMR
JIT - 20070419_1806_r8
GC - 200704_19)
JCL - 20070706
苏飞作品:DB2视频教程!
http://www.rootman.cn/forum/redirect.php?tid=1128&goto=lastpost
|
本集是第一讲,介绍DB2 for Windows 9.5的安装 http://www.sqlclub.cn/tags.php?/DB2视频教程/
|
Windows查看DB2版本
set db2clp=%1
prompt DB2CLP $p$g
cls
%2 %3 %4 %5 %6 %7 %8 %9
@db2clpsetcp
@cls
@if /i "%COMSPEC%" == "%WINDIR%\system32\cmd.exe" goto WINNT
:WIN95
@%1 %2 %3 %4 %5 %6 %7 %8 %9
@goto END
:WINNT
@%*
:END
@echo off
rem -----------------------------------------------------------------------
rem (C) COPYRIGHT International Business Machines Corp. 2002
rem All Rights Reserved
rem
rem US Government Users Restricted Rights - Use, duplication or
rem disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
rem
rem NAME: db2cw
rem
rem FUNCTION: Launch the Command Window
rem
rem -----------------------------------------------------------------------
db2cmd db2setcp "%1 %2 %3 %4 %5 %6 %7 %8 %9"
"D:\Program Files\IBM\SQLLIB\BIN\db2ce.bat"
@echo off
rem -----------------------------------------------------------------------
rem (C) COPYRIGHT International Business Machines Corp. 2002
rem All Rights Reserved
rem
rem US Government Users Restricted Rights - Use, duplication or
rem disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
rem
rem NAME: db2ce
rem
rem FUNCTION: Run the DB2 UDB Command Editor.
rem
rem -----------------------------------------------------------------------
rem -Xquickstart -Xgcpolicy:optavgpause are options to make sure the JVM will be
rem optimized for client applications. Note that these options exist only in
rem the IBM jdk. Other jdks will refuse to start with these options.
set RUNTIME_FLAGS=-Xmx128m -Xms8m -Xquickstart -Xgcpolicy:optavgpause
IF "%1" == "wait" GOTO WAIT
db2javit -j:com.ibm.db2.tools.ce.ui.NewEditorAction -s: -i: -l: -o:"%RUNTIME_FLAGS%" -a:"-ce %1 %2 %3 %4 %5 %6 %7 %8"
GOTO END
:WAIT
db2javit -j:com.ibm.db2.tools.ce.ui.NewEditorAction -s: -w: -i: -l: -o:"%RUNTIME_FLAGS%" -a:"-ce %2 %3 %4 %5 %6 %7 %8 %9"
GOTO END
:end
--开机启动 DB2 桌面 右下角图标
【注册表】 DB2 9.1.0.356
----开始----运行----regedit----我的电脑
----HKEY_LOCAL_MACHINE----SOFTWARE----Microsoft----Windows----CurrentVersion----Run
----数值名称
DB2COPY1 - db2systray.exe DB2
----数值数据
E:\Program_Files\IBM\SQLLIB\BIN\db2systray.exe DB2
--查看db2版本详细信息和补丁级别
http://blog.chinaunix.net/u1/43842/showart_344622.html
C:\Documents and Settings\Lindows>db2level
DB21085I 实例 "DB2" 使用 "32" 位和 DB2 代码发行版 "SQL09050",级别标识为
"03010107"。
参考标记为 "DB2 v9.5.0.808"、"s071001" 和 "NT3295",修订包为 "0"。
产品使用 DB2 副本名 "DB2COPY1" 安装在 "D:\PROGRA~1\IBM\SQLLIB" 中。
--查看db2基本版本号
C:\Documents and Settings\Lindows>db2licm -v
9.5
Red Hat Enterprise Linux Server release 6.2 (Santiago)
Kernel \r on an \m
WARNING:
The 32 bit library file libstdc++.so.6 is not found on the system.
32-bit applications may be affected.
libstdc++.so: /usr/lib64/libstdc++.so.6
[root@localhost ~]# ls /media/RHEL_6.2\ x86_64\ Disc\ 1/Packages/*c++*
/media/RHEL_6.2 x86_64 Disc 1/Packages/compat-gcc-34-c++-3.4.6-19.el6.x86_64.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/compat-libstdc++-296-2.96-144.el6.i686.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/compat-libstdc++-33-3.2.3-69.el6.i686.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/dbus-c++-0.5.0-0.10.20090203git13281b3.1.el6.x86_64.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/gcc-c++-4.4.6-3.el6.x86_64.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/gcc-objc++-4.4.6-3.el6.x86_64.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/ImageMagick-c++-6.5.4.7-5.el6.x86_64.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/libsigc++20-2.2.4.2-1.el6.x86_64.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/libstdc++-4.4.6-3.el6.i686.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/libstdc++-4.4.6-3.el6.x86_64.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/libstdc++-devel-4.4.6-3.el6.i686.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/libstdc++-devel-4.4.6-3.el6.x86_64.rpm
/media/RHEL_6.2 x86_64 Disc 1/Packages/libstdc++-docs-4.4.6-3.el6.x86_64.rpm
[root@localhost ~]# rpm -ivh /media/RHEL_6.2 x86_64 Disc 1/Packages/ libstdc++-4.4.6-3.el6.i686.rpm --nodeps
[root@localhost ~]# rpm -qa | grep libstdc++
libstdc++-docs-4.4.6-3.el6.x86_64
libstdc++-4.4.6-3.el6.x86_64
libstdc++-4.4.6-3.el6.i686
[root@localhost ~]# ll /usr/lib/libstdc*
lrwxrwxrwx. 1 root root 19 Mar 29 08:38 /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.13
-rwxr-xr-x. 1 root root 930192 Aug 24 2011 /usr/lib/libstdc++.so.6.0.13
[root@localhost ~]# ll /usr/lib64/libstdc*
lrwxrwxrwx. 1 root root 18 Mar 29 08:43 /usr/lib64/libstdc++.so.5 -> libstdc++.so.5.0.7
-rwxr-xr-x. 1 root root 825480 Jun 28 2010 /usr/lib64/libstdc++.so.5.0.7
lrwxrwxrwx. 1 root root 19 Mar 26 13:57 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13
-rwxr-xr-x. 1 root root 989840 Aug 24 2011 /usr/lib64/libstdc++.so.6.0.13
CentOS x64位Linux安装db2 v9.7的问题
http://blog.csdn.net/airmy/article/details/6910320
由于公司有一部分项目是用db2,所以我也在实验环境中要架设db2环境..这里只提db2安装时候遇到的问题..
平台:centos6.0 数据库版本:db2 v.97
db2_install安装时候遇到如下错误:
db2安装最后报:
A minor error occurred while installing "DB2 Enterprise Server Edition" on this computer. Some features may not function correctly.
查看db2的安装日志显示如下
Installing or updating SA MP :.......Failure
Executing control tasks :.......Success
Updating global registry :.......Success
The installation of IBM Tivoli Monitoring for Databases has completed. The log
file can be found at /opt/ibm/db2/V9.7/itma/logs/itm_install.log.
Starting DB2 Fault Monitor :.......Success
Updating the db2ls link :.......Success
Registering DB2 licenses :.......Success
Setting default global profile registry variables :.......Success
Initializing instance list :.......Success
Registering DB2 Update Service :.......Success
Updating global profile registry :.......Success
WARNING: A minor error occurred while installing "DB2 Enterprise Server Edition
" on this computer. Some features may not function correctly.
这个warning错误可以忽略了..不影响正常使用
DB2 V9.7 在RedHat 5.4下安装(转载)
http://chenjialin2000.iteye.com/blog/784392
Linux(RedHat Enterprise Linux 5.4)下的DB2安装__使用图形界面
可以使用图形界面,也可以使用手工安装的方式。我们先介绍最简单的安装方法。
1.从IBM网站下载DB2 9.7 express C版本:文件名db2exc_971_LNX_x86.tar.gz,。
2.在LINUX下解压缩及解包
#gzip -d db2exc_971_LNX_x86.tar.gz
#tar -xvf db2exc_971_LNX_x86.tar
3.进入相关目录,运行安装文件
#xhost +
#cd expc
#./db2setup
先允许所有用户使用xwindows界面。
在当前目录中要找到db2setup文件,然后执行它。
如果权限不够,先运行chmod +x db2setup
4.根据图形界面安装
可以选择安装位置或内容等。
过程中需要对其中的三个DB2用户的名字和密码进行设置,并记录下来。注意DB2没有自己独立的用户管理系统,因此这几个用户实际就是LINUX的用户。
最后完成安装。
5.验证安装成功。
[root@bogon expc]# su - db2inst1
[db2inst1@bogon ~]$ db2 create database test
DB20000I The CREATE DATABASE command completed successfully.
[db2inst1@bogon ~]$
其中db2inst1为安装过程中创建的三个用户之一,为实例的管理者用户。
创建数据库成功表明安装成功。
更多的初始配置见DB2手工安装。
########################################################
DB2 for linux手动安装步骤
第一步下载db2数据包
当前最新版本为9.7,从IBM网站下载免费的Express C版本。
db2exc_971_LNX_x86.tar.gz及语言包db2exc_nlpack_971_LNX_x86.tar.gz(后者可选)。
第二步上传安装文件
把下载下来的包ftp上传到待安装的LINUX机器上
第三步解包db2exc_971_LNX_x86.tar.gz
# gzip -d db2exc_971_LNX_x86.tar.gz
# tar -xvf db2exc_971_LNX_x86.tar
第四步安装
解包以后会有目录名为expc,进入找到db2_install和db2setup文件,前者为手动安装,后者为图形界面安装。
#cd expc
#./db2_install
设定安装目录等以后,耐心等待安装任务完成。
默认安装路径是/opt/ibm/db2/V9.7,可检查之。
第五步注册license
本安装无须这一步。
对于企业版等版本,需要注册license才能使用。
对于V8.1 ESE版,注册license的文件一般是:/opt/DB2_V81_PE_LNX_32_NLV/db2/license/db2ese.lic,否则需要自己找一下db2ese.lic,
根据实际情况执行
#/opt/IBM/db2/V8.1/adm/db2licm -a /opt/334_ESE_LNX26_32_NLV/db2/license/db2ese.lic
若提示:
DBI1402I License added successfully.
DBI1426I This product is now licensed for use as specified in
the License Acceptance and License Information
documents pertaining to the licensed copy of this
product. USE OF THE PRODUCT CONSTITUTES ACCEPTANCE OF
THE TERMS OF THE IBM LICENSE ACCEPTANCE AND LICENSE
INFORMATION DOCUMENTS, LOCATED IN THE FOLLOWING
DIRECTORY: /opt/IBM/db2/V8.1/license/zh_CN.utf8
表明注册成功
第六步 创建DB2运行所需要的用户组和用户
注意DB2并没有独立的用户管理系统,必须借用OS用户来提供安全性认证,所以这里需要创建LINUX用户和组。
# groupadd -g 901 db2grp
# groupadd -g 902 db2fgrp
# groupadd -g 903 db2agrp# useradd -g db2grp -u 801 -d /home/db2inst1 -m -s /bin/sh db2inst1
# useradd -g db2fgrp -u 802 -d /home/db2fenc -m -s /bin/sh db2fenc
# useradd -g db2agrp -u 803 -d /home/db2das -m -s /bin/sh db2das
这里的默认用户名是:
DAS用户 dasusr1 组名: dasadm1
管理实例的用户 db2inst1 组名:db2iadm1
受防护用户 db2fenc1 组名: db2fadm1
但是DB2用户可以任意起名。
第七步添加密码
# passwd db2inst1
Changing password for db2inst1.
New password:[输入新密码]
Re-enter new password:[再次输入新密码]
Password changed
创建完成后,执行如下命令,检查用户组和用户是否创建成功。
# more /etc/group |grep db2
# more /etc/passwd |grep db2
如果结果中包含那三个用户和组,则创建成功。正确的结果应该是:
# more /etc/group |grep db2
dialout:x:16:db2inst1,db2fenc,db2das
video:x:33:db2inst1,db2fenc,db2das
db2grp:!:901:
db2fgrp:!:902:
db2agrp:!:903:
# more /etc/passwd |grep db2
db2inst1:x:801:901::/home/db2inst1:/bin/sh
db2fenc:x:802:902::/home/db2fenc:/bin/sh
db2das:x:803:903::/home/db2das:/bin/sh
第八步创建实例。
b1. 进入/opt/ibm/db2/V9.7/instance目录
# cd /opt/ibm/db2/V9.7/instance
2. 执行以下命令
# ./dascrt -u db2das
# ./db2icrt -u db2inst1 db2inst1
这里dascrt创建的是DB2 adminstration server,每台服务器只有一个这种server,为进行DB2管理(比如运行控制中心)所必须,同时指定其管理用户是db2das。
db2icrt创建的是实例,其名字一般和管理用户名一样,这里均为db2inst1。
3 启动DB2
切换到db2das用户,执行db2admin启动DB2管理服务器。
$ db2admin start
切换到db2inst1用户,执行db2start启动数据库实例。
$ db2start
第九步 配置DB2
1 设置DB2自启动。
使用root用户执行以下命令:
# cd /opt/ibm/db2/V9.7/instance
# ./db2iauto -on db2inst1
设置对db2inst1在LINUX启动时自动启动。
2 配置网络
切换到db2inst1用户。
# su - db2inst1
修改DB2的服务端口为50000,这里默认端口就是50000。
$ db2 update dbm cfg using SVCENAME 50000
DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.
修改DB2连接方式为TCPIP,然后可通过JDBC、ODBC等访问本DB2服务器上的数据库,安装了DB2客户端的其它机器也可访问数据库。
$ db2set DB2COMM=TCPIP
至此,安装过程结束。
第十步 创建和访问数据库,安装验证
1 启动与关闭数据库实例
做任何事情之前,首先要启动数据库实例
切换到db2inst1用户,执行db2start启动数据库实例。
$ db2start
SQL1063N DB2START processing was successful.
若需要,可运行下面的命令来关闭数据库实例
首先在db2inst1用户下强制关闭实例上的所有应用程序。
$ db2 force applications all
关闭数据库实例。
$ db2stop
SQL1064N DB2STOP processing was successful.
2 创建数据库
$ su - db2ins1
$ db2 create database test1
DB20000I The CREATE DATABASE command completed successfully.
数据库创建成功了。
3 远程访问数据库
笔者是在VMWARE虚拟机上安装RHEL5.4和DB2的,在主机上也安装了DB2 ESE for windows V9.7,经实验这样配置后主机可以访问到虚拟机上的DB2数据库。方法是在主机上运行db2cmd,然后运行:
C:\Documents and Settings\Administrator>db2 catalog tcpip node bogon remote 192.
168.211.132 server 50000
DB20000I CATALOG TCPIP NODE 命令成功完成。
DB21056W 直到刷新目录高速缓存之后,目录更改才生效。
C:\Documents and Settings\Administrator>db2 catalog database test1 as test_1 at
node bogon
DB20000I CATALOG DATABASE 命令成功完成。
DB21056W 直到刷新目录高速缓存之后,目录更改才生效。
C:\Documents and Settings\Administrator>db2
? Copyright IBM Corporation 1993,2007
DB2 客户机 9.7.0 的命令行处理器
可从命令提示符处发出数据库管理器命令和 SQL 语句。例如:
db2 => connect to sample
db2 => bind sample.bnd
要获得一般帮助,输入:?。
要获得命令帮助,输入:? command,其中 command 可以是
数据库管理器命令的前几个关键字。例如:
? CATALOG DATABASE 用于关于 CATALOG DATABASE 命令的帮助
? CATALOG 用于关于所有 CATALOG 命令的帮助。
要退出 db2 交互方式,在命令提示符处输入
QUIT。在非交互方式下,所有命令都必须以“db2”作前缀。
要列出当前命令选项设置,输入 LIST COMMAND OPTIONS。
要获取更详细的帮助,请参阅 Online Reference Manual。
db2 => !db2set
DB2INSTOWNER=WWW-A448048D8D7
DB2PORTRANGE=60000:60003
DB2INSTPROF=C:\DOCUMENTS AND SETTINGS\ALL USERS\APPLICATION DATA\IBM\DB2\DB2COPY
1
DB2COMM=TCPIP
db2 => connect to test_1 user db2inst1
输入 db2inst1 的当前密码:
数据库连接信息
数据库服务器 = DB2/LINUX 9.7.1
SQL 授权标识 = DB2INST1
本地数据库别名 = TEST_1
db2 =>
#####################################################
DB2 for linux卸载
由于某种原因,要卸载DB2再重新安装,一定要完全卸载DB2,否则不能重新安装或安装后的DB2不可用。
因为卸载步骤比较复杂,我建议在虚拟机上安装该软件的朋友,应该先做一个快照,然后方可进行,出错就恢复快照,重新来过。在主机上卸载则最好先做一个备份,以防万一。
为了操作方便,可以同时打开几个Shell,分别属于不同用户,配合完成下面的操作。
1、在linux上卸载DB2的一般过程:
a.删除所有数据库。可以使用“控制中心”或drop database命令删除数据库。笔者卸载而未删除数据库,结果是重新安装后无法建立同名数据库。
b.停止DB2管理服务器。
c.停止DB2实例。
d.除去DB2管理服务器。
e.除去DB2实例。
f.除去DB2产品。
2、停止DB2管理服务器:
必须要停止DB2管理服务器才能在linux上卸载DB2。
a.作为DB2管理服务器所有者登陆。
b.用db2admin stop命令停止DB2管理服务器。
3、停止DB2实例:
必须要停止DB2实例才能在linux上卸载DB2。
a.作为具有root用户权限的用户登陆。
b.输入/opt/ibm/db2/V9.7/bin/db2ilist命令,获取系统上的所有DB2实例的名称。
c.注销。
d.作为想要停止的实例的所有者登陆。
e.进入该用户的主目录下,运行脚本:. sqllib/db2profile
d.输入db2 force application all命令来停止所有数据库应用程序。
e.输入db2stop命令来停止DB2数据库管理器。
f.输入db2 terminate来确认DB2数据库管理器已停止。
g.对每一个要删除的实例重复以上步骤。
4、删除DB2管理服务器:
必须删除DB2管理服务器才能卸载DB2。
a.作为DB2管理服务器所有者登陆。
b.进入该用户的主目录下,运行脚本:. das/dasprofile.
c.注销。
d.作为root登陆,通过输入命令/opt/ibm/db2/V9.7/instance/dasdrop除去DB2管理服务器。
5、删除DB2实例:
一旦删除系统上的实例,该实例下的所有DB2数据库都将不可用。
a.通过输入/opt/ibm/db2/V9.7/instance/db2idrop db2instname删除实例。
6、卸载DB2产品
以root身份登陆,到DB2版本产品CD-ROM上的根目录或DB2安装文件(通常就是tar解包文件)下找到db2_deinstall命令,
运行db2_deinstall -a命令可以删除所有DB2产品。
可能需要输入DB2安装路径,这里是/opt/ibm/db2/V9.7
然后也可以在LINUX中删除DB2用户,这并非必须,重新安装仍可使用它们。
下面是英文的简要说明:
Following are the steps to remove DB2 from Unix/Linux:
1.Remove DB[首先删除数据库]
(1)su - db2inst1
(2)db2 list db directory
(3)db2 drop db <db name>
2.Remove Instance【删除实例】
(1)su - root
(2)cd <db2 dir>/instance
(3)./db2ilist
(4)./db2idrop -f <instance name>
3.Remove das【删除das】
(1)su - root
(2)cd <db2 dir>/instance
(3)./daslist
(4)./dasdrop <das user>
4.Uninstall【卸载】
(1)su - root
(2)cd <db2 dir>/install
(3)./db2_deinstall -a
5.Remove user ( db2inst1,db2fenc1,dasusr1)【删除用户】
userdel -r <username>
please lookinto the file /etc/passwd before and after you deleted users
########################################################
db2
db2数据库之四:数据库系统安装/卸载-linux
http://blog.csdn.net/lhfeng/article/details/3169995
[root@localhost db2v9.7]# ./db2_deinstall -a
Enter full path name for the install directory -
------------------------------------------------
/opt/ibm/db2/V9.7/
DBI1016I Program db2_deinstall is performing uninstallation. Please
wait.
The execution completed successfully.
For more information see the DB2 uninstallation log at
"/tmp/db2_deinstall.log.27707".
用db2_install命令行安装DB2数据库
http://hi.baidu.com/shunxinyangkun/blog/category/Ibm
http://hi.baidu.com/shunxinyangkun/blog/category/Ibm
http://hi.baidu.com/shunxinyangkun/blog/category/Ibm
http://hi.baidu.com/shunxinyangkun/blog/category/Ibm
http://hi.baidu.com/shunxinyangkun/blog/item/12beaa24e3a4d21a4c088d83.html
一、 上传安装文件
二、 解压安装文件 :# tar –xfv DB2.tar
三、 解压后 ,会出现 db2setup 和db2_install 两个可用于安装的文件 , db2setup是调用视窗安装,过程很简单,按照提示进行就可以。db2_install是命令行安装。下面我们就着重强调一下如何进行命令行安装。
1、 运行./db2_install ,安装DB2.
安装完成后显示信息如图。有消息:A minor Error occurred while installing "DB2 Enterprise Server Edition " on this computer. Some features may not function correctly. , 但是不要担心,这一般是Installing or updating SA MP :.......Failure 。不会影响我们的安装使用。
|
必需的用户
|
用户名
|
组名
|
|
实例所有者
|
db2inst1
|
db2iadm1
|
|
受防护的用户
|
db2fenc1
|
db2fadm1
|
|
管理服务器用户
|
dasusr1
|
dasadm1
|
1、 添加组账号 。
mkgroupdasadm1
2、 添加db2 用户账号
用smit命令来添加用户:
1.db2inst1 属于 db2iadm1 组;
2.db2fenc1 属于 db2fadm1 组;
3.dasusr1 属于 dasadm1 组;
然后分别设置用户的密码
3、 实例操作:
# cd /opt/ibm/db2/V9.5/instance
# ./db2icrt -u db2fenc1 db2inst1 -p 50003
DBI1070I Program db2icrt completed successfully. –提示实例创建成功。
当启动DB2实例时,会发现,DB2的监听端口并没有随着DB2实例的启动而启动。
下面过程设置如何启动监听。
1、 先执行db2set-all来检查是否有 DB2COMM=TCPIP 一项,如果没有则应该执行“ db2set DB2COMM=TCPIP ”设置。
# db2set –all
# db2set DB2COMM=TCPIP
# db2 get dbm cfg | grep SVCENAME 检查配置 SVCENAME 的值,
如果 SVCENAME为空值,则需要用下面的步骤设定该值,
如果是一个端口号 ( 端口号应小于 65536),则不用读取/etc/services文件中的端口定义,
如果该值是一个字符串(如:db2c_db2inst1),则在实例启动时会自动读取/etc/services 中的该字符串对应的端口号来监听。
# db2 update database manager configuration using svcename db2c_db2inst1(或者为端口号如:50001) -- 我们也可以通过这种方式修改DB2监听的端口号.
运行完成后再次运行# db2 get dbm cfg | grep SVCENAME 检查配置 SVCENAME 的值是否更新。
3.6设置db2自动启动
#db2set
DB2AUTOSTART=YES
五、 DB2 管理服务器
1、 创建DB2 管理服务器。
# cd /opt/ibm/db2/V9.5/instance
# ./dascrt -u dasusr1
DBI1070I Program dascrt completed successfully.
2、 启 动DB2 管理服务器# su - dasusr1# db2admin startSQL4409W The DB2 Administration Server is already active. –启动完成,这时可以用命令netstat-an 查看DB2 管理服务器的监听端口523是否被监听。说明:DB2 管理服务器启动完成后,可以通过客户端对服务器数据库进行管理,比如在windows机器上通过DB2控制中心访问远端服务器数据库!
3、 停止DB2管理服务器。# su – dasusr1# db2admin stop
让root用户可以直接运行db2的命令
http://hi.baidu.com/shunxinyangkun/blog/item/c1312f81a3385bc3bc3e1ebf.html
在/etc/profile文件中追加:
export PATH=/opt/IBM/db2/V9.5/bin:$PATH
. /home/db2inst1/sqllib/db2profile
在/etc/group文件中添加root 用户:
dasadm:|;101:dasusr1,db2inst1,root
db2iadm:|:102:root
db2fadm:|:103:db2fenc1,root
用db2_deinstall -a命令行卸载DB2数据库
http://hi.baidu.com/shunxinyangkun/blog/item/2891d6caf93bec99c81768c4.html
1.drop all databases --drop database <NAME>
2.stop all db2 instances --./db2idrop <INSTANCE NAME>
3.uninstall db2 --./db2_deinstall -a
db2数据库之四:数据库系统安装-linux
linux-lrq:/home/exp # ./db2setup
DBI1190I db2setup 正在准备"DB2 安装"向导,该向导将指导您完成程序安装过程。请稍候











linux-lrq:/home/exp # ./db2_deinstall
DBI1047I 用法:
db2_deinstall -F <featureName> | -a
[-l <logFile>]
[-b <installPath>]
[-t <trcFile>]
[-f sqllib]
[-h|-?]
说明:
-F 指定除去一个功能部件。除去所指定 DB2 组件后,您需要手工更新与
DB2 安装位置相关的 DB2 实例。此参数不能与 -a 配合使用,但以下
情况除外。如果要除去的功能部件是 IBM Tivoli System Automation
for Multiplatforms Base Component(TSAMP),并且您拥有 root 用
户权限,那么可以将 -F 与 -a 配合使用。
-a 从当前位置中除去所有已安装的 DB2 产品。此选项不能与 -F 配合使
用,但以下情况除外。如果要除去的功能部件是 IBM Tivoli System
Automation for Multiplatforms Base Component(TSAMP),并且您
拥有 root 用户权限,那么可以将 -F 与 -a 配合使用。在非 root 安
装中,将 -a 与 -f 配合使用也会除去非 root 实例,在此过程中,将
除去 $HOME/sqllib 目录。
-l 指定日志文件。如果是以 root 用户身份进行安装,那么缺省日志文件
是 /tmp/db2_deinstall.log$$,其中 $$ 表示进程标识。如果不是以
root 用户身份进行安装,那么缺省日志文件为 /tmp/db2_deinstall_
<userID>.log,其中 <userID> 表示进行非 root 用户安装的用户标识
。如果要除去的功能部件是 IBM Tivoli System Automation for
Multiplatforms Base Component(TSAMP),那么 SA MP Base
Component 的安装日志文件将保留在 DB2 日志文件所在的目录中。
-b 如果从 DB2 介质运行该命令,那么此选项有效。它指定要卸载的 DB2
产品的绝对安装路径。如果未指定该选项,那么此命令将提示您输入路
径。
-t 打开调试方式。会将调试信息写入指定的文件。
-f sqllib
此选项仅对于非 root 安装有效。将它与 -a 配合使用时,实例的顶级
目录及其中的任何内容都将被除去。
-h|-? 显示帮助信息。
用户响应:
重新输入该命令。
linux-lrq:/home/exp # ./db2_deinstall -a
输入安装目录的完整路径名 -
------------------------------------------------
/opt/ibm/db2/V9.5
DBI1016I Program db2_deinstall is performing uninstallation. Please wait.
The execution completed successfully.
For more information see the DB2 installation log at
"/tmp/db2_deinstall.log.589".
sql_temp
-- set schema sndbusr;
或
-- db2 set current schema sndbusr;
-- 查询商品库存
select * from xshwinventory xs left join catentry c on xs.partnumber = c.partnumber where c.catentry_id in(208601,167105);
或
select * from sndbusr.xshwinventory xs left join sndbusr.catentry c on xs.partnumber = c.partnumber where c.catentry_id in(208601,167105);
-- 导出商品库存
export to 'D:\库存.csv' of del select * from sndbusr.xshwinventory xs left join sndbusr.catentry c on xs.partnumber = c.partnumber where c.catentry_id in(208601,167105)with ur;
db2 v9 exception
Page Size Management Daemon
https://www-304.ibm.com/support/docview.wss?uid=isg1IZ46113
Very slow system operation when PSMD is in operation while
a particular page size pool has been exhausted but another
remains available for page size promotion or demotion.
23G 可分配给缓冲池的大小13.8G
IBMDEFAULTBP 2620000 4096 10G
BUF4K 128000 4096 500M
BUF8K 262000 8192 2G
BUF16K 131000 16384 2G
quick_db2_dynsql_snapshot_forV9.7.sh / DB2 9.7 快照自动抓取方法
http://dl.iteye.com/topics/download/0f0482d3-9bba-3a30-a141-74e3f061600a
#!/bin/bash
#############################################
## Update version for DB V9.7
## By Walter
## 12/26/2012
############################################
usage() {
echo "\
Usage:
`basename $0` -d databasename [-s sleeptime] [-u uid -p pw -n schema] [-r]
Description:
// To review the switch settings at the instance level, issue the GET DBM MONITOR SWITCHES or GET DBM CFG command.
db2 get dbm cfg (for instance level)
db2 get monitor switches (for db level)
// Using the following command to turn on all monitor before collecting snapshot
// You can also turn all the monitors with single command.
db2 UPDATE DBM CFG USING DFT_MON_LOCK ON (at the instance level)
//db2 update dbm cfg using DFT_MON_STMT ON DFT_MON_BUFPOOL ON DFT_MON_LOCK ON DFT_MON_SORT ON DFT_MON_TABLE ON DFT_MON_TIMESTAMP ON DFT_MON_UOW ON HEALTH_MON ON
db2 update monitor switches using lock ON sort ON bufferpool ON uow ON table ON statement ON TIMESTAMP ON
-d -- database name
-s -- sleep timer
-u -- account id for the db2advis command
-p -- password of the user
-n -- schema name
-r -- reset the db2 snapshot monitor counters
"
}
dbname=""
reset=""
uid=""
pw=""
schema=""
sleeptimer=0
while getopts "d:s:u:p:n:r" OPTION ; do
case "$OPTION" in
d) dbname=$OPTARG ;;
s) sleeptimer=$OPTARG ;;
u) uid=$OPTARG ;;
p) pw=$OPTARG ;;
n) schema=$OPTARG ;;
r) reset=true ;;
\?) usage ;
exit 1
;;
esac
done
if [ -z $dbname ]
then
usage
echo "Missing the database name, it is a mandatory argument!"
exit 2
fi
if [ "$reset" = "true" ]
then
echo "Resetting the db2 snapshot monitor counters ..."
db2 reset monitor for database $dbname
if [ $? -ne 0 ]
then
echo "Failed to reset the db snapshot monitor! Please verify current user permission or database name is correct!"
exit 3
fi
fi
if [ $sleeptimer -gt 0 ]
then
echo "Sleeping ..."
sleep $sleeptimer
fi
timestamp=`date +"%Y%m%d_%H%M%S"`
outfilename=${dbname}_${timestamp}.dynsql.snap
db2 get snapshot for dynamic sql on $dbname > ${dbname}_${timestamp}_snapshot_dynsql.raw
if [ $? -ne 0 ]
then
echo "Failed to dump the snapshot for your db! Please verify current user permission or database name is correct!"
exit 4
else
echo "the db2 snapshot raw text output file is: ${dbname}_${timestamp}_snapshot_dynsql.raw"
fi
# extract the head line (column names)
sed -n '8,38s/\s\([^=]*\)= \(.*\)/\1/p' snapshot_dynsql.raw | sed '1,29s/\s\{0,\}$/#/;30,30s/\s\{0,\}$//' | tr -d '\n' | awk '{print $0}'> ${dbname}_${timestamp}_snapshot_dynsql.headline
# drops first 7 head lines and all blank lines from the raw snapshot output file to unify the content.
sed -n '8,$p' snapshot_dynsql.raw | sed '/^$/d' > ${dbname}_${timestamp}_snapshot_dynsql.tmp
# extract the values and re-org to one line for each sql statement from 30 lines.
cat snapshot_dynsql.tmp | sed 's/\([^=]*\)= \(.*\)/\2/' | awk 'BEGIN {lines=0;} {lines++; if (lines%30==0) printf("%s\n",$0); else printf("%s#",$0)}' | sed '/^0#/d' > ${dbname}_${timestamp}_snapshot_dynsql.body
# Only pay attention to a number of columns as well as the avg exeuction time we manually calculated.
awk 'BEGIN {FS="#"; OFS="#"} {print $25,"avg execution time(sec.ms)",$26,$27,$1,$7,$9,$30}' ${dbname}_${timestamp}_snapshot_dynsql.headline > $outfilename
awk 'BEGIN {FS="#"; OFS="#"} {print $25,$25/$1,$26,$27,$1,$7,$9,$30}' ${dbname}_${timestamp}_snapshot_dynsql.body | sort -nrt# -k2 >> $outfilename
#Remove all the temporary file
rm -f ${dbname}_${timestamp}_snapshot_dynsql.headline ${dbname}_${timestamp}_snapshot_dynsql.body ${dbname}_${timestamp}_snapshot_dynsql.tmp
echo " The statistics file is $outfilename , it can be checked by MS Excel"
#############################
##
## You can use the db2advis command to find the recommended optimziation methods for these
## high cost dynamic sql statements
#############################
## db2advis -d icmnlsdb -s "Select Count(*) From RapidReconReportData Where ClientCode=? And
## COMPONENTTYPE = ? And DATE(CreateTime) >= ? And DATE(CreateTime) <= ? And TIME(CreateTime) >= ? AND TIME(CreateTime) <= ?"
#############################
if [ -n "$uid" -a -n "$pw" -a -n "$schema" ]
then
//Take the top 100 sqls
sed -n '2,$p' $outfilename | awk 'BEGIN{FS="#"} {print $8}' | grep -v -E "^CALL|^SET|^call|^set" | head -n 100 > ${outfilename}.sql
> ${outfilename}.advis
while read line; do
echo "*****************************" >> ${outfilename}.advis
echo "** SQL Statement $sqlnum **" >> ${outfilename}.advis
echo "*****************************" >> ${outfilename}.advis
echo "$line" >> ${outfilename}.advis
echo "::::::::::::::::::::::::::::" >> ${outfilename}.advis
echo db2advis -d $dbname -a $uid/$pw -n $schema -s \"$line\" | sh 2>/dev/null >> ${outfilename}.advis
done < ${outfilename}.sql
rm -f ${outfilename}.sql
echo "The db2 advising optimization result is ${outfilename}.advis"
fi
exit 0
[root@Loadrunner19 wyg]# vim /root/wyg/transfer.pl
#Transfer snapshot.txt to stmt.txt
use strict;
use IO::File;
use Time::Local;
#Open the snapshot.txt
unless (open(FILE1,$ARGV[0])) {
die ("Please enter the snapshot.txt\n");
}
my $date;
my $line;
my @array;
my $NumberExecutions;
my $NumberCompilations;
my $WorstPreparation;
my $BestPreparation;
my $TotalExecutionTime;
my $InternalRowsDeleted;
my $InternalRowsInserted;
my $InternalRowsupdated;
my $StatementText;
my $Statementsorts;
my $Statementsortoverflows;
my $Totalsorttime;
my $Rowsread;
my $AverageRowRead;
my $Rowswritten;
my $AverageRowSelect;
my $BPDLR;
my $BPDPR;
my $BPILR;
my $BPIPR;
my $BPTDLR;
my $BPTDPR;
my $BPTILR;
my $BPTIPR;
my $BPRatio;
my $flag = 0;
my $position;
my $AverageTime;
my $TUsrTm;
my $TSysTm;
#Show start time.
$date=localtime(time);
print "Start from ".$date;
#Write the tag to the txt.
open (OUTFILE, ">transfer.txt");
print OUTFILE (" NumEx;NumComp;WorstP;BestP;IntRDel;IntRIns;RowsRead;IntRUpd;RowsWri;Sorts;SortOflo;TSortTm;BPDLR;BPDPR;BPTDLR;BPTDPR;BPILR;BPIPR;BPTILR;BPTIPR;TELapTm;TUsrTm;TSysTm;AvgElap;AverageRowRead;AverageRowSelect;BPRatio;Text;\n");
#Close the file handle.
close(OUTFILE);
print("\nBegin to transfer,please wait!\n");
#Read the data from snapshot.txt.
while($line = <FILE1>)
{
if($line=~/Number\sof\sexecutions/){
$NumberExecutions=$line;
$position=index($NumberExecutions,"=");
$NumberExecutions=substr($NumberExecutions,$position+1,);
if($NumberExecutions=~/\s0.*\s/){
$flag=1;
$NumberExecutions="";
next;
}else{
$flag=2;
#print $NumberExecutions;
}
$NumberExecutions=~s/\s//g;
}
if($line=~/Number\sof\scompilations/ && $flag==2){
$NumberCompilations=$line;
$position=index($NumberCompilations,"=");
$NumberCompilations=substr($NumberCompilations,$position+1,);
$NumberCompilations=~s/\s//g;
#print $NumberCompilations;
}
if($line=~/Worst\spreparation\stime/ && $flag==2){
$WorstPreparation=$line;
$position=index($WorstPreparation,"=");
$WorstPreparation=substr($WorstPreparation,$position+1,);
$WorstPreparation=~s/\s//g;
#print $WorstPreparation;
}
if($line=~/Best\spreparation\stime/ && $flag==2){
$BestPreparation=$line;
$position=index($BestPreparation,"=");
$BestPreparation=substr($BestPreparation,$position+1,);
$BestPreparation=~s/\s//g;
#print $BestPreparation;
}
if($line=~/Internal\srows\sdelete/ && $flag==2){
$InternalRowsDeleted=$line;
$position=index($InternalRowsDeleted,"=");
$InternalRowsDeleted=substr($InternalRowsDeleted,$position+1,);
$InternalRowsDeleted=~s/\s//g;
#print $InternalRowsDeleted;
}
if($line=~/Internal\srows\supdated/ && $flag==2){
$InternalRowsupdated=$line;
$position=index($InternalRowsupdated,"=");
$InternalRowsupdated=substr($InternalRowsupdated,$position+1,);
$InternalRowsupdated=~s/\s//g;
#print $InternalRowsupdated;
}
if($line=~/Internal\srows\sinserted/ && $flag==2){
$InternalRowsInserted=$line;
$position=index($InternalRowsInserted,"=");
$InternalRowsInserted=substr($InternalRowsInserted,$position+1,);
$InternalRowsInserted=~s/\s//g;
#print $InternalRowsInserted;
}
if($line=~/Statement\ssorts/ && $flag==2){
$Statementsorts=$line;
$position=index($Statementsorts,"=");
$Statementsorts=substr($Statementsorts,$position+1,);
$Statementsorts=~s/\s//g;
#print $Statementsorts;
}
if($line=~/Statement\ssort\soverflows/ && $flag==2){
$Statementsortoverflows=$line;
$position=index($Statementsortoverflows,"=");
$Statementsortoverflows=substr($Statementsortoverflows,$position+1,);
$Statementsortoverflows=~s/\s//g;
#print $Statementsortoverflows;
}
if($line=~/Total\ssort\stime/ && $flag==2){
$Totalsorttime=$line;
$position=index($Totalsorttime,"=");
$Totalsorttime=substr($Totalsorttime,$position+1,);
$Totalsorttime=~s/\s//g;
#print $Totalsorttime;
}
if($line=~/Total\sexecution\stime/ && $flag==2){
$TotalExecutionTime=$line;
$position=index($TotalExecutionTime,"=");
$TotalExecutionTime=substr($TotalExecutionTime,$position+1,);
$TotalExecutionTime=~s/\s//g;
#print $TotalExecutionTime;
}
if($line=~/Rows\sread/ && $flag==2){
$Rowsread=$line;
$position=index($Rowsread,"=");
$Rowsread=substr($Rowsread,$position+1,);
$Rowsread=~s/\s//g;
#print $Rowsread;
}
if($line=~/Rows\swritten/ && $flag==2){
$Rowswritten=$line;
$position=index($Rowswritten,"=");
$Rowswritten=substr($Rowswritten,$position+1,);
$Rowswritten=~s/\s//g;
#print $Rowswritten;
}
if($line=~/Buffer\spool\sdata\slogical\sreads/ && $flag==2){
$BPDLR=$line;
$position=index($BPDLR,"=");
$BPDLR=substr($BPDLR,$position+1,);
$BPDLR=~s/\s//g;
#print $BPDLR;
}
if($line=~/Buffer\spool\stemporary\sdata\slogical\sreads/ && $flag==2){
$BPTDLR=$line;
$position=index($BPTDLR,"=");
$BPTDLR=substr($BPTDLR,$position+1,);
$BPTDLR=~s/\s//g;
#print $BPTDLR;
}
if($line=~/Buffer\spool\sdata\sphysical\sreads/ && $flag==2){
$BPDPR=$line;
$position=index($BPDPR,"=");
$BPDPR=substr($BPDPR,$position+1,);
$BPDPR=~s/\s//g;
#print $BPDPR;
}
if($line=~/Buffer\spool\stemporary\sdata\sphysical\sreads/ && $flag==2){
$BPTDPR=$line;
$position=index($BPTDPR,"=");
$BPTDPR=substr($BPTDPR,$position+1,);
$BPTDPR=~s/\s//g;
#print $BPTDPR;
}
if($line=~/Buffer\spool\sindex\slogical\sreads/ && $flag==2){
$BPILR=$line;
$position=index($BPILR,"=");
$BPILR=substr($BPILR,$position+1,);
$BPILR=~s/\s//g;
#print $BPILR;
}
if($line=~/Buffer\spool\stemporary\sindex\slogical\sreads/ && $flag==2){
$BPTILR=$line;
$position=index($BPTILR,"=");
$BPTILR=substr($BPTILR,$position+1,);
$BPTILR=~s/\s//g;
#print $BPTILR;
}
if($line=~/Buffer\spool\sindex\sphysical\sreads/ && $flag==2){
$BPIPR=$line;
$position=index($BPIPR,"=");
$BPIPR=substr($BPIPR,$position+1,);
$BPIPR=~s/\s//g;
#print $BPIPR;
}
if($line=~/Buffer\spool\stemporary\sindex\sphysical\sreads/ && $flag==2){
$BPTIPR=$line;
$position=index($BPTIPR,"=");
$BPTIPR=substr($BPTIPR,$position+1,);
$BPTIPR=~s/\s//g;
#print $BPTIPR;
}
if($line=~/Total\suser\scpu\stime/ && $flag==2){
$TUsrTm=$line;
$position=index($TUsrTm,"=");
$TUsrTm=substr($TUsrTm,$position+1,);
$TUsrTm=~s/\s//g;
#print $TUsrTm;
}
if($line=~/Total\ssystem\scpu\stime/ && $flag==2){
$TSysTm=$line;
$position=index($TSysTm,"=");
$TSysTm=substr($TSysTm,$position+1,);
$TSysTm=~s/\s//g;
#print $TSysTm;
}
if($line=~/Statement\stext/ && $flag==2){
$StatementText=$line;
$position=index($StatementText,"=");
$StatementText=substr($StatementText,$position+1,);
#print $StatementText;
}
else{
next;
}
if($flag==2){
$AverageTime=sprintf("%.15f", ($TotalExecutionTime)/($NumberExecutions));
$AverageRowRead=sprintf("%.5f", ($Rowsread)/($NumberExecutions));
if($Rowsread==" 0"||$Rowswritten==" 0"){
$AverageRowSelect=0;
}else{
$AverageRowSelect=sprintf("%.5f", ($Rowswritten)/($Rowsread));
}
if(($BPDLR+$BPILR)==0||($BPIPR+$BPDPR)==0){
$BPRatio=100;
}else{
$BPRatio = (1-($BPIPR+$BPDPR)/($BPDLR+$BPILR))*100;
}
open (OUTFILE, ">>transfer.txt");
print OUTFILE ($NumberExecutions.";".$NumberCompilations.";".$WorstPreparation.";".$BestPreparation.";".$InternalRowsDeleted.";".$InternalRowsInserted.";".$Rowsread.";".$InternalRowsupdated.";".$Rowswritten.";".$Statementsorts.";".$Statementsortoverflows.";".$Totalsorttime.";".$BPDLR.";".$BPDPR.";".$BPTDLR.";".$BPTDPR.";".$BPILR.";".$BPIPR.";".$BPTILR.";".$BPTIPR.";".$TotalExecutionTime.";".$TUsrTm.";".$TSysTm.";".$AverageTime.";".$AverageRowRead.";".$AverageRowSelect.";".$BPRatio.";".$StatementText);
$StatementText="";
$TotalExecutionTime="";
$NumberExecutions="";
$Statementsorts="";
$Statementsortoverflows="";
$Totalsorttime="";
$TUsrTm="";
$TSysTm="";
}
}
#Show end time.
$date=localtime(time);
print "End at ".$date;
#Close the file handle.
close(OUTFILE);
close(FILE1)
如何卸载db2数据库 linux
http://zzuwxf.iteye.com/blog/1128872
卸载数据库时,经常会出现各种各样的警告,下面我们来看看通常的警告都如何处理。
假定db2的安装目录是 $db2_install
1. 停掉数据库服务,db2stop
2. 进入$db2_install/install 目录,运行./db2_deinstall -a命令。
3. 如果提示 “the deinstallation process cannot continue while there are DB2 instances related to the current DB2 copy,....",表明还有相关的db2实例,需要先把所有数据库实例drop了。进入目录$db2_install/instance,运行命令db2ilist,则会显示所有的数据库实例(如db2inst1),然后运行db2idrop db2inst1则会删掉实例名为db2inst1的数据库实例
4. 重复步骤2
5. 如果提示“The DB2 installer detects the DAS is using the current DB2 copy to uninstalled. The deinstallaton process cannot continue”,表明还有还需要把das服务drop掉。进入目录$db2_install/das /bin,运行./db2admim stop命令停掉das服务,然后进入$db2_install/instance,运行./dasdrop命令
6. 重复步骤2
db2fmcd和db2fmd
http://www.itpub.net/thread-1046341-1-1.html
http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.1.0/com.ibm.db2.udb.admin.doc/doc/c0008221.htm
db2fmcd unix的? db2fmcd 故障监视器协调程序(Fault Monitor Coordinator)守护程序进程。每个物理机器就有一个这样的进程。 db2fmd 为每个由故障监视器监控的 DB2 实例而启动的故障监视器守护程序进程。该进程是由协调守护程序(db2fmcd)监控的,因此,如果您杀死 db2fmd 进程,那么 db2fmcd 将使其重新运行。
比较奇怪的是:我可以kill掉db2inst1的db2fmd,但是却kill不掉dasusr1的db2fmd,在哪里可以控制db2fmd这个进程的启动和关闭?因为如果有db2fmd这个进程,有可能影响双机切换。
显示了 db2fmd 和 DB2INST1 的条目表示仍在该实例上运行故障监视器。要关闭故障监视器,请作为实例所有者输入以下命令:
db2fm -i db2inst1 -D
可以使用 DB2 故障监视控制器实用程序(FMCU)来防止 FMC 启动。由于 FMCU 要访问系统的 inittab 文件,所以它必须作为 root 用户运行。要禁止 FMC 运行,请作为 root 用户输入以下命令:
db2fmcu -d
注: 如果应用 DB2 版本 9.1 修订包 1 或 DB2 版本 9.1 修订包 2,那么就会复位此命令并再次将 inittab 配置为包括 FMC。在应用其中一个修订包后,要防止 FMC 启动,必须重新发出以上命令。
要撤销 db2fmcu -d 命令并将 inittab 重新配置为包括 FMC,请输入以下命令:
db2fmcu -u -p fullpath
其中 fullpath 是 db2fmcd 对象的完整路径,例如 /opt/IBM/db2/bin/db2fmcd。
也可以启用 FMC 以便在系统第一次引导时自动启动实例。要对 DB2INST1 实例启用此功能,请输入以下命令:
db2iauto -on db2inst1
要关闭自动启动行为,请输入以下命令:
db2iauto -off db2inst1
- db2 maintenance
DB2基本概念 —— 实例、数据库、表空间、容器
DB2 UDB V8.1管理学习笔记(一)
http://www.mv360.com/article/20/24/6055_1.htm
http://www.mv360.com/article/20/24/6055_2.htm
http://blog.csdn.net/notenlife/archive/2009/05/15/4189655.aspx
在DB2中有关实例(Instance), 数据库(Database),表空间(TableSpace),容器(Container)等概念:
http://blog.csdn.net/zdsxj2002/archive/2006/03/17/627223.aspx
DB2 UDB V8.1 管理 学习笔记(一)
http://blog.csdn.net/hanzhaoyou/archive/2005/10/25/515991.aspx
DB2中的SMS 与会DMS 管理有何区别
http://topic.csdn.net/t/20030214/09/1426913.html
DB2支持以下两种类型的表空间:
1、 系统管理存储器表空间(SMS-SYSTEM MANAGED STORAGE)
2、 数据库管理存储器表空间(DMS-DATABASE MANAGED STORAGE)
SMS、DMS用户表空间的特性对照
特性 SMS DMS
能够在表空间中动态的增加容器数量 n y
能够把索引数据存放到不同的表空间 n y
能够把长型(LOB)数据存放到单独的表空间 n y
表可以分散存放到多个表空间 n y
只在需要的时候才分配空间 y n
表空间可以被定向到不同类型的磁盘空间 y n
创建之后,区段大小(extent size)能够改变 n n
默认表空间:
当创建数据库的时候,DB2将按照默认方式创建三个表空间:这些表空间缺省是SMS模式。他们是:
SYSCATSPACE: 包含系统编目
TEMPSPACE1:保存临时表
USERSPACE1:包含用户数据
DB2 基本概念
在DB2中由上至下的几个概念:
实例(Instance),
数据库(Database),
表空间(TableSpace),
容器(Container)
在一个操作系统中,DB2数据服务可以同时运行多个实例(有别于Oracle在一个系统内只能起一个实例).
数据库定义在实例中,一个实例可以包含多个数据库。在同一个实例中的不同数据库是完全独立的,分别拥有自己独立的系统编目表。
表空间有2种管理方式:
DMS(Database management Space)方式
SMS(System manegement Space)方式
DMS与SMS方式在表空间建立时指定,建好后不能转换。对于DMS方式,一个表空间对应了一个或多个容器(Container),容器指定了数据的物理存储位置。对于SMS方式,只能够指定一个目录,不能够增加。
表空间具有以下类型:
系统编目表空间(SysCatSpace)
系统临时表空间(SysTempSpace)
用户表空间(UserSpace)
用户临时表空间(UserTempSpace)
一个数据库中必须存在两个系统基本的表空间,分别是系统编目表空间与系统临时表空间。在数据库中创建的任何对象都以在系统编目表空间中增加记录的方式体 现,对于临时表空间,其占用磁盘大小是根据使用情况动态伸缩的,即仅在需要时才分配磁盘空间,并在使用后进行回收。此外,若用户需要创建表,则需要创建用 户表空间,若需要使用临时表,则需要创建用户临时表空间。
容器分为三种类型:
Files 文件
Devices 设备
Directory 目录
文件与设备,用于DMS方式的表空间;
目录,用于SMS方式的表空间,此种方式不需要人工管理数据存储文件,DB2可根据情况在目录中自动增加存储文件,只要磁盘空间允许。
实质上,表空间是数据存储的逻辑位置定义,容器则是数据存储的物理位置定义。
数据库的性能
影响一个数据库的性能主要有以下因素:
磁盘(Disk)
内存(Memory)
处理器(CPU)
网络(Network)
其中以磁盘最为显著,90%的性能瓶颈可能来自于磁盘的IO竞争;
其次是内存,一方面是指物理内存的总量要满足需求,另一方面是指与内存相关的配置参数应正确配置;
当然处理器的性能也很重要,多路CPU会对哪些依赖计算能力的复杂SQL查询起到显著的效果;
网络不属于主要因素,属于客观的环境因素,是指过慢的网速会对数据的传输造成影响。以下列出一些对于提高数据库性能有效的方法:
对于运行数据库服务的服务器可以尽可能的配置多块物理磁盘,每块的容量不必太大,这样可以有效的分担数据存储与读取操作过程的磁盘IO竞争。即采用多块小容量的磁盘在性能上要优于仅采用一块大容量的磁盘。
如果条件允许,尽量使数据存储服务与操作系统分别运行在物理分开的磁盘上。
采用DMS(Database Management Space)管理方式的表空间。
在物理不同的磁盘上创建多个表空间。然后可以将数据和索引分别存放在不同的表空间,这样可以显著的提高性能。还可以把一个使用频繁的大表纵向拆成多个小表,分别存放在不同的表空间中,然后用一个视图进行联合。
DB2服务器可以管理裸设备,即除系统以及DB2服务运行磁盘以外,为DB2数据存放单独准备磁盘,可以是多块,分区后不需要格式化,创建裸设备后直接交给DB2进行管理,用于存储数据。
系统的临时表空间对数据库性能影响很大,当由管理的物理内存不能满足数据库操作的需要时,DB2便会把临时数据写到磁盘上,这时便用到了系统临时表空间,并且这种情况会经常发生。
尽量在磁盘靠近最内层磁道的位置安放数据,因为此处磁盘的访问速度较快。
与性能相关的主要参数
DB2的参数配置分为两个级别,一个是实例级别,另一个是数据库级别。对数据服务性能影响较大的参数主要在数据库级别配置。以下是三个比较重要的内存配置参数:
bufferpagelocklistsortheap
bufferpage: 由同一个数据库中的所有对象共享。
sortheap: 用于排序的内存交换区,非共享,不宜设置太大,否则,很容易引起内存耗尽,因为每一个事务都会申请独立的内存用于排序。
locklist: 共享内存,用于记录数据服务运行中建立的锁。建议设置20Mb左右,需要时根据实际情况进行调整。DB2默认使用行级锁,如果设置太 小,当锁的记录太多时,则会导致内存不足,此时DB2会把多个行锁升级为一个表锁,这样就会大大降低应用程序的并发性能。如果设置太大,则多分配的内存很 少会被用到,导致浪费。
在DB2中有关实例(Instance), 数据库(Database),表空间(TableSpace),容器(Container)等概念:
http://blog.csdn.net/zdsxj2002/archive/2006/03/17/627223.aspx
其他的一些配置参数:
numdb: 同时可以启动的实例数目
DB2的常用命令:
db2ilist 列出当前系统中定义的DB2实例
daslist 列出系统中的DAS
db2 list database directory 列出当前实例中定义的数据库
db2 list tablespaces 列出当前数据库中定义的表空间
db2 list tabses [for all] 列出当前数据库中的表
db2 list active db 列出活动的数据库
db2 get dbm config
get db cfg for databasename
db2 update db cfg for databasename using bufferpage 600M
db2 alter bufferpool IABMDEFAULTBP size =1
db2 list applications show detail
以上命令可以在后面加 " show detail" 参数,显示详细信息。
DB2数据存储的页大小只能在表空间级别统一指定(区别于Oracle,可以定义在表级别), 并且建好后不能修改。
可以手工建立一个页大小为4K的DMS用户临时表空间,然后把系统默认的SMS系统临时表空间删除。为满足应用需求,一般还应再建立一个页大小在8K以上的用户临时表空间。
DB2 UDB V8.1 对RedHat Linux 9 的支持不好,默认情况下无法启动GUI安装程序(可以通过设置环境LD_ASSUME_KERNEL=2.2.5解决),并且不会安装Sample数据库,控制中心也无法正常启动。
当使用COUNT()函数时,如果表中的记录数 > 2 147 483 647行,则函数可能返回错误的结果,这时可以使用返回类型为DECIMAL(31, 0)的COUNT_BIG()函数。
DISTINCT 关键字可以用在COUNT()函数中,如:SELECT COUNT(DISTINCT id) FROM TABLE,这代表将不对id列的重复值进行计数。
ORDER BY子句后面如果写了多个列名,需要分别指定升序或是降序。
可以在load大量数据时,暂时关闭表的日志选项。使用:ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY
DB2的几个特殊寄存器:CURRENT DATE, CURRENT TIME, CURRENT TIMESTAMP, USER(用户ID).
有关日期的操作:CURRENT TIMESTAMP + 2 DAYS(or HOURS, SECONDS, MONTHS, YEARS, etc.)
case 语句的使用:case when 条件一 then 动作一 else 动作二 end; 可以欠套使用。
在视图的创建语句中无法使用order by 子句与 fetch n rows 子句。但对于order by可以用如下方法替代实现,不过会影响效率。
create view v_name1(c1, c2, c3) as
select * from (
select column1, column2, column3
from t1
order by column1 ) as t1;
表空间类型分为SMS和DMS,分别是system management space, database management space. SMS使用方便,简单,无需手工创建和维护数据存储文件。DMS需要手动指定container和存储数据的文件名,并保证有足够磁盘空间可用。
对于一个数据库,至少存在一个page size为4K的系统临时表空间,可以额外建立具有更大page size的用户临时表空间,系统会自动进行使用。
无法用alter语句更改一个字段的数据类型,对某些字段可以更改数据长度,这一点上相对于Oracle,DB2的限制要多一些。
可以使用: select 表达式 from sysibm.sysdummy; 替代的,以下语句是等价的:values 表达式;
表和视图的创建、更新、删除操作,都写日志,因此可以commit或rollback。
在update语句中,如果没有对定义了默认值的某个字段显式赋值,则更新时,此字段不会重新执行默认值中定义的表达式。为了让其重新执行默认值定义的表达式,可以采用以下方式:
create table t1 (c1 varchar(32), lastupdatetime with default current timpstamp);
update t1 set c1 = 'new string', lastupdatetime = default;
对于DB2数据库可以在创建时指定codepage参数,创建后不可修改。当应用程序访问数据库时,DB2会比较两者的codepage是否一致,不一致则进行代码页的自动转换。为了减少转换所带来的开销,应尽量保证应用程序所采用的代码页与数据库一致。
可以对DB2 CLP工具的codepage进行设置,使用:db2set DB2CODEPAGE= 1386,本例中设置的是中文GBK字符集在Windows平台对应的值。注意,这个数字值是由DB2自己定义的。有关各种字符集在相应平台所对应的代码页值可在IBM网站查找。
在DB2 CLP中,对远程数据库编目的操作:
DB2 CATALOG TCPIP NODE local_node_name REMOTE hostname|ip SERVER service_name 首先把远程主机映射为本地节点,节点名自己指定,本例采用TCPIP连接。service_name一般定义在远程主机的/etc/services文件中。
DB2 CATALOG DATABASE db_name AS local_alias AT local_node_name USER username USING password 然后把已知的远程主机的数据库映射到本地别名,注意本地别名在主机级别不能重复。节点名指定上面刚编目的节点。
DB2 CONNECT TO local_alias USER username USING password 用刚才编目中定义的别名连接远程主机数据库
DB2 GET CONFIGURATION SHOW DETAIL 获取数据库详细配置信息
对于DB2返回的错误号,可以用以下方法查阅说明(以sql 10008为例):
db2 ? sql10008
数据库的备份与恢复:
使用备份与恢复工具可以完成在不同的服务器见完整的转移数据库的工作,命令行方式如下:
备份
DB2 BACKUP DATABASE db_name USER user_name USING password to backup_dir_name
DB2 BACKUP DATABASE dlhdb USER dlh USING admindlh TO d:\backups
恢复
DB2 RESTORE DATABASE source_db_name USER user_name USING password FROM backup_dir_name TAKEN AT backup_file_create_time TO driver_letter INTO new_db_name
DB2 RESTORE DATABASE dlhdb USER dlh USING admindlh FROM d:\backups TAKEN AT 20031209141056 TO d: INTO newdb
有关实例的操作:
设置默认实例环境变量
DB2 SET DB2INSTANCE=inst_name
启动当前实例
DB2START
停止当前实例
DB2STOP [FORCE]
连接到某个实例
DB2 ATTACH TO ANSTANCE inst_name
获取实例的配置参数
DB2 GET DBM CFG SHOW DETAIL
导出数据库完整的定义到脚本文件,包括表,视图,函数,数据库参数等
db2look -d sample(数据库) -a -e -l -x -m -f -o(参数)samplesql.out(输出文件)
load 一个表的数据时,有可能导致表空间处于backup pending(0x0020)状态。比如把整形数据load到double型的字段中。
处于backup pending状态的表空间不能被访问。
可以通过对此表空间运行一次backup操作,恢复到正常状态(0x0)。
对于自增字段,可以通过两种方式指定:
generated by default as identity
generated always as identity
区别是,第一种方式在插入数据时允许手工指定自增字段的值,只要不重复即可,并且数据库会自动设置下一个值;
第二种方式则不允许指定,只能由数据库自动分配并插入。
DB2 sql语句中转义符的使用:
select * from t1 where a like '%abc\%def' escape '\';
创建数据库时,出现SQL1043C错误,可能的问题:
指定容器所在的磁盘空间不足,
当容器为file类型时,后面的long-num参数不对,比如25600代表256Mb,但如果指定256则会导致以上错误。
平台 RH Linux 8
DB2 UDB v8.1
在WAS 5中建立到db2的数据源,但连接失败,返回以下错误:
[Servlet Error]-[SQLConnect]: java.lang.UnsatisfiedLinkError: SQLConnect
原因是没有为运行was服务的用户设置以下环境变量:
LD_LIBRARY_PATH
LIBPATH
DB2INSTANCE
...
以上环境变量定义在 $INSTHOME/sqllib/db2profile文件中,可以采用的解决方案:
sh stopServer.sh servername
. $INSTHOME/sqllib/db2profile
sh startServer.sh servername
也可以把db2profile放到was启动脚本中首先执行。
如果只设置了LD_LIBRARY_PATH,LIBPATH两个环境变量,DB2会返回以下错误:
CLI0600E Invalid connection handle or connection is closed.
SQLSTATE S1000
对应于Oracle的Job包功能,DB2通过一个GUI工具-任务中心(task center)实现。使用任务中心前需要进行必要的工具设置,需要创建一些数据库对象,可以创建在已有的一个数据库中,也可以单独创建一个数据库。通过以下命令实现:
create catalog tools schema_name create new database db_name
此命令为编目工具创建一个名为db_name 的数据库,并指定了一个模式名。
注意:无法用using 子句指定一个codeset,系统会默认使用ISO8859-1字符集。
Quest Center for DB2带有数据库性能诊断功能,动态监视db内存,磁盘io, 表空间,负载等等。
DB2客户端的类型:
DB2运行时客户端 DB2 Runtime Client
DB2管理客户端 DB2 Administrator Client(包含运行时客户端的所有内容)
DB2应用程序开发客户端 DB2 Application Development Client(包含管理客户端的所有内容)
DB2瘦客户端 DB2 Thin Client
DB2 Relational Connect 联邦数据库,用于连接异种数据库。
db2idrop -f instance_name 强制断开已有连接,停止实例并删除。
db2imigr instance_name 用于在UNIX下迁移实例。
db2iupdt instance_name 更新实例,用于实例获得一些新的产品选项或修订包的访问权。
db2 get instance 获取当前所处的实例。
当更新实例级别或数据库级别的参数后,有些可以立即生效,有些需要重新启动实例才可生效。immediate 显式指明更改立即生效,deferred 显式指明更改在重起实例后生效。
当需要配置许多台客户机与DB2服务器的连接时,可以用配置助手将服务器的概要文件导出,然后在每个客户机使用配置助手导入概要文件。若客户端只安装了运行时客户端,则可以使用
db2cfimp access_profile_name
导入概要文件。
疑问:是否应该由已配置好的一台客户机导出概要文件?
db2 list applications 列出所有的数据库连接
db2 force application (2) 终止指定的连接句柄,事务被中断并回滚。同时操作多个句柄可以用逗号分开,或者指定关键字 all。此命令只终止指定的连接,不会阻止新的应用连接到数据库。
创建数据库时可以指定排序方式:collate using identity
系统模式集是和每个数据库一起创建的,并且它们被放置到 SYSCATSPACE 表空间中:
SYSIBM:
基本系统目录
建议不要进行直接访问
SYSCAT:
PUBLIC 被授予该模式的 SELECT 权限
对只读视图编目
这是获取目录信息的推荐方式
SYSSTAT:
可更新的目录视图 - 影响优化器
SYSFUN:
用户定义的函数
如果表中的现有行不满足约束,则不能定义该约束。可以关闭约束检查以加快大量数据的添加,但是该表处于检查暂挂(CHECK PENDING)状态。
在创建表时,可以使用选项来指定一个或多个表空间,表和索引将被放置到其中:
CREATE TABLE TEST (
column 1 definition, column 2 definition, ...
) IN <tablespace name> INDEX IN <index space name>
这条命令为您提供了一个选项:指定创建表和索引的位置。如果没有指定单独的索引表空间,那么将在表所在的同一表空间中创建索引。创建表之后,就没有机会在不同的表空间中创建索引了。创建索引要提前作规划!
CREATE <UNIQUE> INDEX <index name> ON <table name>
(
column 1 <ASC | DESC> ,
column 2 <ASC | DESC> ...
)
UNIQUE 属性告诉 DB2,索引必须强制所有插入值的唯一性。
如果结果集是以升序和降序两种方式排序的,ALLOW REVERSE SCANS 会告诉 DB2 在索引中包括附加的指针,以允许在记录中有效地进行正向和反向链接。
DB2 能够向正在创建的索引中添加另外的列。CREATE INDEX 命令允许用户指定那些不属于实际索引但因为性能原因而保存在索引记录中的列。
CREATE UNIQUE INDEX ON EMPLOYEE (EMPNO) INCLUDE (LASTNAME,FIRSTNAME)
对于索引中包含的列而言,索引必须是 UNIQUE 的。当创建索引时,另外的列被添加到索引值中。索引不使用这些值进行排序或确定唯一性,但可以在满足 SQL 查询时使用它们。例如,下列 SELECT 语句将不需要读取实际数据行:
SELECT LASTNAME, FIRSTNAME FROM EMPLOYEE WHERE EMPNO < '000300'
要在表上创建群集索引,将 CLUSTER 关键字附加到 CREATE INDEX 命令的末尾,例如:
CREATE INDEX DEPTS-IX ON EMPLOYEE(WORKDEPT) CLUSTER
使用下列通用规则来决定为表定义的索引的经典数量。索引数量取决于数据库的主要用途:
对于在线事务处理(OLTP)环境,创建一到两个索引。
对于混合查询和 OLTP 环境,创建两到五个索引。
对于只读查询环境,创建五个以上索引。
在Windows平台上的DB2的命令行模式下,或者在类Unix平台下,使用命令db2cc启动控制中心。
db2move提供了在数据库之间批量移动数据的能力,可以指定某个表,也可以指定整个数据库的表。
db2move dbname action
action 可以指定为:export, import或者load
使用 -l 参数指定lob对象存储的文件夹
执行增量备份要求设置数据库配置参数“trackmod”的值为“YES”
执行在线备份要求设置数据库配置参数“logretain”的值为“YES”,在线备份语法:
db2 backup db dbname online to path
当删除了das用户的home目录,未先drop掉das服务,则再执行dasdrop则不成功,提示:
db2admin 命令无法找到,原因是db2admin命令保存在das的home目录中。
可以删除干净das用户的home目录后,重起服务器解决此问题。
dasupdt dasName 升级das
db2iupdt instName 升级实例
db2licd end 停止许可证守护进程
在Linux系统安装DB2 V8.1后,db2fmcd进程会自动启动,即使不启动实例和DAS,
在中文Linux环境下安装了DB2数据库服务,并使用GBK代码页(codepage)创建了一个数据库,完成后可以正常连接操作,若更改操作系统代码页为英语,则使用“db2 connect”时会报错,连接时无法转换代码页
end
end




浙公网安备 33010602011771号