DB2 UDB V8.1管理学习笔记(二)
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;启动和停止实例分别是db2start和db2stop [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 IDENTITY 和 GENERATED 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_PATH、LIBPATH、DB2INSTANCE等。这些变量定义在$INSTHOME/sqllib/db2profile文件中。
一个可行的解决方案是:
$ sh stopServer.sh servername
$ . $INSTHOME/sqllib/db2profile
$ sh startServer.sh servername
也可以考虑将db2profile的内容直接集成到WAS的启动脚本中。
有个细节需要注意:如果只设置了LD_LIBRARY_PATH和LIBPATH而漏掉了其他(如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]
热门专题
热门推荐
电陶炉清洁后出现白雾?别慌,这是正常现象 清洁完电陶炉,一开机,面板上却泛起一层白蒙蒙的雾气?先别急着担心是面板坏了。这其实是微晶玻璃表面残留的水渍或清洁剂成分,在受热时蒸发、散射光线所导致的正常物理现象。它并非面板老化、涂层脱落或材质损伤的信号,恰恰相反,这现象背后是行业通用的高品质材料——比如日
路由器信号最佳的摆放方式 想让家里的Wi-Fi信号满格、延迟稳定?秘诀其实就藏在路由器的摆放里。经过大量实测验证,最理想的摆放位置是房屋的几何中心、离地1 2到1 5米的开放高处,并且要严格远离金属物体、承重墙和大功率电器。这背后的原理,是Wi-Fi电磁波在2 4GHz和5GHz频段固有的传播特性:
白天离家时,海尔壁挂炉应设置为冬季模式下的“低温常开”状态 白天离家时,把壁挂炉完全关掉?这可能是很多人的习惯操作,但未必是最优解。更推荐的做法是,将海尔壁挂炉设置为冬季模式下的“低温常开”状态。这个设定听起来有点反直觉,其实背后是一套兼顾系统稳定、节能效果与居住舒适度的成熟逻辑——对于暖气片用户,
海尔壁挂炉推荐使用“舒适模式”实现自动温度调节 想让家里的壁挂炉自己“学会”调节温度吗?海尔壁挂炉的“舒适模式”就是为此而设计的。这个模式的核心在于“微调”和“预判”:它把水温控制的温差范围缩小到3–4℃,再配合变频技术实时响应室温变化,最终能把实际水温的波动稳稳地控制在±0 8℃以内。体感上的直接
苹果Pro静音后闹钟会响吗?一个被误解的“安全网” 相信不少苹果Pro用户都有过这样的疑惑:晚上把手机侧面的静音拨片一拨,世界瞬间清净。但转念一想,明天早上的闹钟还能准时响吗?答案是肯定的,而且会响得理直气壮。这可不是什么系统漏洞,恰恰相反,这是iOS为你筑起的一道“时间安全网”——静音开关管的是外





