




本专栏我们以问答的方式解答了用户在使用 DB2、Informix 数据库时所遇到的一些问题,这些问题包括了数据库安装、升级、备份、装载以及日常使用维护等多个方面。
IBM 作为数据库技术的领跑者,支撑并推动着企业业务应用的快速发展,InfoSphere Warehouse、DB2、Informix 以及 IBM solidDB 等多个数据库产品一直受到客户的青睐, IBM Data Studio、IBM Optim Solutions 等数据管理工具使数据管理变得越来越轻松。
IBM 数据库及数据库管理技术资源中心:
下面我们列出了一些在 DB2 安装、升级、维护过程中遇到的一些问题的解答,这其中也包含了用户对新版本 DB2 V9.5 使用的一些疑问。
有关 DB2 数据库安装和升级的 15 个问题
DB2 安装和升级中常见的问题:
- 我是否能在一个服务器上安装不同版本的数据库?
- 如果我已经有一个 DB2 版本 8.2 的实例,可以在 DB2 9.5 上使用相同的实例吗?
- 我在哪里能够获取 DB2 在 Linux,UNIX 和 Windows 上的修订包?
- 我最近在系统上应用了 DB2 补丁包,在那之后无法启动实例,这是什么问题?
- 我在哪里能找到 APAR 的列表?
- 最近,我在 AIX 平台上安装了 DB2 数据服务器。有什么已知的问题需要注意吗?同时,我们计划升级 AIX,DB2 数据服务器是否支持新的 AIX 版本?
- 我在 Windows 平台上卸载了 DB2 UDB 版本 8.2, 然后安装了 DB2 9,然后尝试恢复一个备份,得到了 SQL1005N 错误,为什么?
- 我从一个 DB2 较早的补丁包升级到了最新的补丁包,如何回退至原来较早的补丁包?
- 如何检查我用的是 DB2 的什么产品?以及如何找出正在运行的 DB2 的版本?
- DB2 的补丁支持有多长时间?能获取一个对较老补丁包的特殊补丁吗?
- 我的 DB2 9 的许可证在安装后 90 天过期了,能从什么地方获取许可证密码?
- DB2 UDB 版本 8 的服务有效期什么时候结束?
- AIX 的 ulimit 设置对于 DB2 而言,是否有任何一般性的建议?
- 为什么我试图使用通用 JCC 驱动从应用程序连接到 DB2 on z/OS 的时候,会收到没有许可证的异常信息?
- DB2 产品是否支持微软的 Windows Vista ?
关于以上问题的详细解答,参见 “关于 DB2 数据服务器使用的常见问题” 一文第二节“安装和升级”部分。
关于 DB2 数据库备份和恢复的 8 个问题
DB2 数据库备份和恢复的常见问题:
- 一个联机备份操作有时候会由于 SQL0911N 原因码 68 结束,如何避免这种情况?
- 我是否能备份一个 SMS 表空间,并恢复到一个 DMS 表空间?或者反之亦然?
- 我有一个在 UNIX 平台上的数据库备份,是否能在 windows 平台恢复?或反之亦然?
- 我能把一个数据库实例(数据库目录和文件)从一台计算机复制到另一台,作为备份策略吗?
- 是否能够将一个 32 位实例下数据库的备份镜像恢复到一个 64 位实例的系统中?或反之亦然?
- 有一个数据库 A 的备份镜像,我想把它恢复到不同的目录中,能这么做吗?
- 我想装载数据到一个表,并且这个表能在装载结束后被访问,怎样才能做到呢?
- 我能在备份中包含日志吗? 如果有一个包含日志的数据库联机备份镜像,是否能只恢复并应用镜像中包含的日志?
关于以上问题的详细解答,参见 “关于 DB2 数据服务器使用的常见问题” 一文第三节“备份和恢复”部分。
关于 DB2 数据库日常使用的 12 个问题
DB2 数据库使用的其它常见问题:
- 是否能够更改现有数据库的代码页?
- 数据库管理员如何计算该系统的 CPU 速度(CPUSPEED 数据库管理员管配置参数)?
- 如果我删除一个实例,是否会丢失此数据库以及它里面存放的数据?
- 我有一个表在表空间 A 中,它的索引在表空间 B 中。是否可以删除其中一个表空间,然后重建它?
- 将一个数据库分区添加到一个数据库分区组后,是否能仅重新分布在这个分区组中的一个表?
- 你推荐哪种类型的条带?是 DB2 条带还是磁盘条带?
- 是否有一个命令,能够用来计算数据库的大小?
- DB2 数据服务器是否提供了类似于 Oracle truncate 裁剪命令的功能?
- DB2.Net 数据支持什么版本的 .NET 框架?
- 为什么我在尝试通过客户端进行连接的时候,收到了 TCP/IP 通讯错误(SQL30081)?
- 为什么在 DB2 9 里看不到开发中心?
- 为什么装完 DB2 9 后,在 Visual Studio 中尝试添加一个新的数据连接时找不到 DB2 数据源?
- 我能用 DB2 的命令得到当前的时间和日期吗?
关于以上问题的详细解答,参见 “关于 DB2 数据服务器使用的常见问题” 一文第四节“各种各样的使用问题”部分。
DB2 日常维护中需要注意的问题的解答
如何处理在日常维护中遇上的一些比较紧急的情况以及在日常维护中需要注意哪些技巧?
- 删除活动日志文件后如何处理?
- 使用中遇到交易日志存储空间满如何处理?
- 使用中遇到数据库事务日志已满如何处理?
- 没有正确设置数据库代码页,我们该采取什么样的补救措施?
关于以上问题的详细解答,参见 “DB2 日常维护技巧,第 1 部分:数据库日志错误处理”(2008 年 11 月,程永、王雪梅) 一文。
- 如果创建数据库前没有调整好系统时间,会对将来使用产生什么影响吗?
- 如果不小心删除了数据库的用户组或者用户,会产生什么严重的影响?
- 如何让我们的数据库归档日志模式下更安全?
- DB2 数据库出现异常后,如何检查整个数据库?
关于以上问题的详细解答,参见 “DB2 日常维护技巧,第 2 部分:实例和常用备份策略” (2008 年 11 月,程永、王雪梅)一文。
- 有没有快速查找没有索引表的办法?
- 如何查找发生全表扫描的表?
- 在需要强行中断用户连接时,有什么比较快捷安全的方法?
- 如何通过结果集创建表?
- 如何在 DB2 中实现单引号转换?
- 如何在 DB2 备份历史文件损坏的情况下恢复我们的数据库?
- 编译 SQL 语句时出现 SQL0101N 错误,应该如何解决?
- 如何恢复已删除的表 (Dropped Table Recovery)以及数据?
关于以上问题的详细解答,参见 “DB2 日常维护技巧,第 3 部分:表的使用状态、用户连接、日志管理与数据恢复等” (2008 年 12 月,程永、王雪梅)一文。
- 如何更改本地系统名称?
- 如何解決在建新的数据库时,遇到数据库別名已存在的问题?
- 如何解决 DB2 数据库代码页不相容的问题,会报 SQL0332N 的错误?
- 如何快速清空一个大表中的所有数据?
- 解决不能重新创建工具数据库的方法?
- 如何获取表结构以及索引的信息?
关于以上问题的详细解答,参见 “DB2 日常维护技巧,第 4 部分:数据库代码页、表结构等” (2008 年 12 月,程永、王雪梅)一文。
下面我们列出了一些在 Informix 数据库日常维护中锁、日志、长事务、I/O错误等一些故障的排除。
数据库不再进行任何操作,使用 onstat –l 命令观察逻辑日志状态,所有的逻辑日志都处于已使用未备份状态,即 flags 为 U------ 标志?这是什么问题?
由于数据库的大部分操作都需要记录逻辑日志,所以如果逻辑日志由于各种各样的原因被充满都会导致数据库停止正常的操作,等待逻辑日志空间的释放、重新再利用。这一般会由于数据库逻辑日志没有及时备份、数据库逻辑日志空间分配过小、逻辑日志里面包含活动事务、包含检查点信息等原因。
关于此问题的解决,参见 “Informix 常见问题处理”(2008 年 12 月,牛新庄)文中关于“逻辑日志满”部分。
在正常的数据库操作中会经常出现-243、-244 等一类的锁错误码出现?这个错误如何解决?
数据库在进行修改操作的时候为了防止其他用户的同时修改,都会在修改所涉及的数据上设置对应的锁,如果其他用户再访问到这些已经被放置上锁的数据,就会出现锁失败。
关于此问题的解决,参见 “Informix 常见问题处理”(2008 年 12 月,牛新庄)文中关于“频繁的锁冲突”部分。
在数据库日志里面出现发现长事务的提示,受影响的事务处于回滚状态,个别情况下会导致整个数据库实例的其他数据库会话都停止执行。这个情况如何解决?
当一个活动事务它所占用的逻辑日志个数的比例达到或超过 LTXHWM 所设定的值,数据库就会判定该事务为一个长事务,对该事务进行回滚操作,如果这个时候逻辑日志的使用个数仍然持续上涨达到或超过 LTXEHWM 所设定的值,则数据库会停止其他会话的正常运转,全力保证该长事务的回滚操作。
关于此问题的解决,参见 “Informix 常见问题处理”(2008 年 12 月,牛新庄)文中关于“长事务”部分。
遇到数据库日志中出现 chunk IO 错误,使用 onstat –d 观察 chunk flag 的状态是 down 的状态,数据库操作中不能操作包含在这些 chunk 中的数据,如果使用到这些数据可能会返回错误,严重情况下会导致数据库宕机。这个问题如何解决?
由于发生 IO 错误,数据库不能正常的操作包含在受影响 chunk 中的数据,所有的操作请求都将失败。这可能是由于磁盘设备出现问题、chunk 所使用的设备不存在、使用的链接设备不存在、设备的权限错误等可能性。
关于此问题的解决,参见 “Informix 常见问题处理”(2008 年 12 月,牛新庄)文中关于“数据库 chunk 出现异常,I/O 失败”部分。
在向数据库表插入数据的时候报没有空间或不能创建新的 extent,其返回错误码可能是 -131、-136、-271?这个问题该如何解决?
由于表所存在的 dbspaces 上没有足够的连续空间来创建新的 extent;达到每个单片表的 extents 个数上限;达到每个单片表记录数的上限,以上 3 种可能都会导致不能插入数据情况的发生。
关于此问题的解决,参见 “Informix 常见问题处理”(2008 年 12 月,牛新庄)文中关于“长事务”部分。
|