游乐游手机版
首页/数据库/文章详情

DB2 UDB V8.1管理学习笔记(二)

时间:2026-04-30 20:23
DB2 UDB V8 1 管理学习笔记(二) 今天咱们接着聊DB2 UDB V8 1的管理。表空间的设计是数据库物理存储的核心,DB2主要提供两种类型:SMS(系统管理空间)和DMS(数据库管理空间)。SMS用起来方便省心,你只管创建,文件的分配和维护都交给系统。而DMS则需要你亲自指定容器(Con

DB2 UDB V8.1 管理学习笔记(二)

今天咱们接着聊DB2 UDB V8.1的管理。表空间的设计是数据库物理存储的核心,DB2主要提供两种类型:SMS(系统管理空间)和DMS(数据库管理空间)。SMS用起来方便省心,你只管创建,文件的分配和维护都交给系统。而DMS则需要你亲自指定容器(Container)和文件,提前规划好磁盘空间是必须的。

系统与临时表空间

每个数据库至少需要一个页大小为4K的系统临时表空间,这是标配。当然,你也可以根据业务需求,额外创建页尺寸更大的用户临时表空间,DB2在需要时会自动选用合适的来工作。

字段修改的限制

在DB2里,想用ALTER语句直接修改一个字段的数据类型?这条路基本是走不通的。对于某些字符串类字段,调整长度倒是可以,但整体限制比起Oracle来要严格不少。这一点,从Oracle转过来的朋友需要特别留意。

几个实用的语法技巧

先看一个等价替换:习惯用SELECT 表达式 FROM SYSIBM.SYSDUMMY1?其实,更简单的写法是VALUES 表达式;,两者效果完全一样。

另外,表和视图的创建、更新、删除操作,在DB2里都是记日志的,这意味着你可以像操作事务一样,对它们执行COMMIT或ROLLBACK。

更新数据时有个小坑:如果一个字段定义了默认值,在UPDATE语句中若没有显式给它赋值,这个默认值的表达式是不会被重新执行的。想让字段恢复默认值怎么办?可以这么写: UPDATE t1 SET c1 = 'new string', lastupdatetime = DEFAULT; 直接在SET子句里赋予DEFAULT关键字即可。

字符集与代码页管理

数据库的代码页(Codepage)是在创建时敲定的,之后就改不了了。当应用程序连接数据库时,DB2会自动比较双方的代码页是否一致,不一致则进行转换,但这会带来额外开销。所以,最佳实践是尽量让应用和数据库使用相同的代码页。

对于DB2命令行处理器(CLP),可以通过db2set DB2CODEPAGE=1386来设置其代码页,这里的1386对应Windows平台下的中文GBK字符集。需要提醒的是,这个数字是DB2内部定义的,具体字符集在不同平台对应的代码页值,还得去IBM官方文档里查。

远程数据库连接实战

在CLP里连接远程数据库,通常分两步走:先编目节点,再编目数据库。

首先,将远程主机映射为一个本地节点(节点名可以自定),这里以TCPIP连接为例,service_name通常是远程主机上/etc/services文件里定义的服务名:

$ db2 CATALOG TCPIP NODE local_node_name REMOTE hostname|ip SERVER service_name

然后,将远程主机上的已知数据库映射到本地别名(注意,这个别名在整个主机级别不能重复),这里要用到上一步编目的节点名:

$ 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返回的错误码一脸茫然?比如SQL10008,直接用$ db2 ? sql10008就能查到详细的解释说明。

数据库备份与恢复是DBA的看家本领,命令行操作非常清晰:

备份:

$ db2 BACKUP DATABASE dlhdb USER dlh USING admindlh TO d:\backups

恢复:

$ db2 RESTORE DATABASE dlhdb USER dlh USING admindlh FROM d:\backups TAKEN AT 20031209141056 TO d: INTO newdb

这个流程能帮你在不同服务器间完整地迁移数据库。

实例操作与数据定义导出

管理实例是另一项日常工作。设置默认实例环境变量用$ db2 SET DB2INSTANCE=inst_name;启动和停止实例分别是db2startdb2stop [force]

连接到特定实例:$ db2 ATTACH TO INSTANCE inst_name;查看实例配置参数:$ db2 GET DBM CFG SHOW DETAIL

有个非常实用的工具db2look,它能将整个数据库的定义——包括表、视图、函数、参数等——导出成一个脚本文件,方便重建或分析:

$ db2look -d sample -a -e -l -x -m -f -o samplesql.out

表空间状态与自增字段

使用LOAD命令装载表数据时,一不小心就可能让表空间进入“Backup Pending”(0x0020)状态,比如尝试把整型数据塞进浮点型字段。一旦进入这个状态,表空间就不可访问了。解决办法是对该表空间执行一次备份操作,使其恢复正常(0x0)状态。

自增字段的创建有两种语法:GENERATED BY DEFAULT AS IDENTITYGENERATED ALWAYS AS IDENTITY。两者区别在哪?前者允许你在插入时手动指定自增值(只要不重复就行),数据库会自动调整序列;后者则完全由数据库自动分配,不允许手动指定。

SQL技巧与排错点滴

在DB2的SQL语句中使用转义符,例如:

SELECT * FROM t1 WHERE a LIKE '%abc\%def' ESCAPE '\';

创建数据库时若报错SQL1043C,通常有两个原因:要么是指定的容器所在磁盘空间不足;要么是当容器为文件(File)类型时,后面的空间大小参数(如25600代表256MB)写错了,写成256就会引发此错误。

与WebSphere Application Server集成

平台:Red Hat Linux 8, DB2 UDB v8.1。

在WAS 5中配置DB2数据源后连接失败,报错类似[Servlet Error]-[SQLConnect]: ja va.lang.UnsatisfiedLinkError: SQLConnect,这通常是环境变量问题。需要为运行WAS服务的用户设置相关环境变量,如LD_LIBRARY_PATHLIBPATHDB2INSTANCE等。这些变量定义在$INSTHOME/sqllib/db2profile文件中。

一个可行的解决方案是:

$ sh stopServer.sh servername
$ . $INSTHOME/sqllib/db2profile
$ sh startServer.sh servername

也可以考虑将db2profile的内容直接集成到WAS的启动脚本中。

有个细节需要注意:如果只设置了LD_LIBRARY_PATHLIBPATH而漏掉了其他(如DB2INSTANCE),可能会遇到CLI0600E Invalid connection handle or connection is closed. SQLSTATE S1000这样的错误。

任务中心与工具集

DB2通过一个图形化工具——任务中心(Task Center)来实现类似Oracle Job的定时任务功能。使用前需要进行工具设置,创建一些必要的数据库对象。这些对象可以放在现有数据库里,也可以单独建库,命令如下:

CREATE CATALOG TOOLS schema_name CREATE NEW DATABASE db_name

这条命令会创建一个名为db_name的数据库用于编目工具,并指定一个模式名。需要注意的是,这里无法使用USING子句指定代码页,系统会默认使用ISO8859-1字符集。

此外,像Quest Center for DB2这类第三方工具,提供了强大的性能诊断功能,可以动态监控数据库内存、磁盘I/O、表空间状态和负载等。

客户端类型一览

最后简单梳理一下DB2客户端的几种类型,方便按需选择:

  • DB2运行时客户端 (DB2 Runtime Client):运行DB2应用的基本环境。
  • DB2管理客户端 (DB2 Administrator Client):包含运行时客户端所有功能,外加管理工具。
  • DB2应用程序开发客户端 (DB2 Application Development Client):在管理客户端基础上,增加了开发库和头文件。
  • DB2瘦客户端 (DB2 Thin Client):通过袋里连接数据库,部署轻量。
  • DB2 Relational Connect:用于连接异构数据库的联邦数据库系统。

上一页 [1] [2]

来源:https://www.jb51.net/article/7690.htm
上一篇SQLServer之常用函数总结详解 下一篇DB2编程序技巧 (七)
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
MyBatis Hive多表关联实现方法
数据库 · 2026-07-01

MyBatis Hive多表关联实现方法

MyBatis处理Hive多表关联查询与普通数据库类似。需准备映射文件,使用association和collection标签定义关联;创建Java实体类包含集合成员变量承接一对多关系;编写Mapper接口声明查询方法;配置MyBatis环境注册映射;最后通过SqlSession调用即可获取关联数据。

提升Hive Metastore查询速度的有效方法
数据库 · 2026-07-01

提升Hive Metastore查询速度的有效方法

HiveMetastore查询优化需从存储优化、缓存机制、查询策略、索引构建、并行能力、配置调优、硬件升级、数据分区及定期维护等多方面协同入手,综合提升系统吞吐量与响应速度,有效降低查询延迟。

Hive Metastore处理大数据的核心机制
数据库 · 2026-07-01

Hive Metastore处理大数据的核心机制

HiveMetastore管理元数据,通过分库分表、读写分离应对海量元数据,调整JVM堆内存并采用G1GC提升稳定性,利用HDFS或云存储及CBO优化器加速查询,在大数据场景下提供高效元数据服务。

Kafka Coordinator 如何监控集群的完整方法与最佳实践指南
数据库 · 2026-07-01

Kafka Coordinator 如何监控集群的完整方法与最佳实践指南

Kafka协调器监控可通过命令行工具、KafkaManager及JMX实时查看消费者滞后、分区状态等性能指标,并利用Prometheus+Grafana实现长期可视化监控与告警,从而确保集群稳定运行。

Hive中row_number()函数性能的实用高效监控方法与优化技巧
数据库 · 2026-07-01

Hive中row_number()函数性能的实用高效监控方法与优化技巧

Hive中row_number()性能受数据量、索引、查询复杂度及数据倾斜影响。优化需通过分区、建索引、查询优化、使用ORC Parquet格式及调整CBO和并行度实现。监控可借助HiveWebUI、YARN界面、日志或第三方工具定位瓶颈,持续迭代改进。