DB2数据库移植常见问题全面解析(三)

日期: 2009-01-22 作者:Anna 来源:TechTarget中国 英文

数据操作

如何对应SQLServer的InsertBulk命令?

解决办法:使用 load 命令。

如何给VARGRAPHIC类型字段设置缺省值?

解决办法:将数据库建为 UTF-8 格式的数据库。

表中有 long varchar 字段,在存储过程的游标中,以 select distinct varchar(该字段)……方式选择记录,但编译通不过

解决办法:把 distinct 去掉;

原因分析:如果有 long 型字段,加 distinct 关键字就失去意义而且十分影响性能,另外该列在原来的 Oracle 应用中也只是定义为 varchar(4000),建议在 DB2 中仍设为 varchar 型,同时将该表所在表空间的 pagesize 加大,由缺省的 4k 设为 16k 或 32k。

DB2存储过程中的异常处理如何写,与Oracle中的有何区别?

解决办法:DB2 中使用以下 SQL 语句声明和处理异常:

清单7. 声明和处理异常,方法一

DECLARE HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND
BEGIN

END;

或者也可以针对某一sqlstate定义相应的错误处理句柄,示例如下:

清单8. 声明和处理异常,方法二

DECLARE condition_name CONDITION FOR SQLSTATE value;
DECLARE EXIT HANDLER FOR too_many_rows
BEGIN

END;

如何查询数据库中用户已定义的表?

解决办法:select * from syscat.tables;

原因分析:DB2 提供了一组视图用以用户查询数据库对象,这些视图统一存放在 SYSCAT 模式下,这些视图几乎包含了所以的数据库对象编目信息,包括表、视图、名字空间、存储过程等等。用户可以在《DB2 UDB SQL Reference Volume 1》SQL Reference 1 的 Appendix D 中找到这些视图的详细定义。

如何查询数据库中用户已定义的 sequence?

解决办法:使用 select * from syscat.sequences。

如何用SQL语句获得表空间的当前使用率?

解决办法:可以使用如下 SQL 语句查询,在用该语句获得了表空间已用页数,可用页数等信息后,即可计算出表空间当前使用率:

清单9. 获得表空间页数信息


select tablespace_name, page_size, usable_pages, used_pages, free_pages
from table( snapshot_tbs_cfg( ‘sample’, -1 ) ) as t
where t.tablespace_type = 0 and t.tablespace_name=

在Oracle中可以将游标结果集通过 BULK 方式存入宿主数组中,DB2中如何实现?

解决办法:DB2中不支持 BULK 方式,其替代方式是定义相应的数组,然后以循环方式每次从游标结果集中fetch一条记录到数组元素中。

DB2中如何用SQL语句取出满足条件的结果集的前N条记录?

解决办法:使用select * from where fetch first row only

Oracle中有trunacte表的功能,速度非常快,它只是把表标志设为空,并不发生删除数据的 IO 操作,DB2 中如何做类似操作?

解决办法:可以先drop表,再重建该表

原因分析:Oracle中trunacte表的速度之所以快,是因为它不记日志,只是直接把表的结构信息删除了,并不发生删除数据的 IO 操作。DB2 中 drop 表,也不会引起数据 IO 和日志记录,从而达到相同的效果。但前提是你预先有创建表的结构。否则不要随意 drop 表。

Oracle有truncate,DB2中建议使用drop,然后再create表,这样好还是alter表好?

解决办法:Oracle的truncate是直接把表的数据清空,但不记日志,所以速度很快。DB2中 drop表也避免了大量记录记入日志的问题,再重建表就达到了快速清空表的目的。但alter是用于修改表结构的,和表的数据操作没有关系。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐

  • BMC公司z/OS DB2数据库性能工具 不只是便捷

    BMC公司z/OS DB2数据库性能工具可以用来监控和管理多套DB2系统的关键性能特征,只需要在一套平台上就可以完成监控工作。

  • 数据库产品巡礼:IBM DB2概览

    IBM DB2关系型数据库管理系统提供了支持多平台系统的关键技术,它具备较高的可用性和良好的性能。

  • 如何进行分布式大数据应用调优

    分布式环境通常是与数据库服务器相分离的。而DBA的工作就是监视这些环境并配置和优化数据库服务器以满足多种需求。大数据的出现加剧了DBA的问题。

  • IBM DB2将迎来30岁“生日”

    再过几天,主流数据库产品DB2就将迎来它30岁的“生日”。作为关系型数据库技术的标志性产品,DB2在过去的30年中也在伴随用户需求的变化不断地发展。