当前位置: 首页
数据库
DB2 UDB V8.1管理学习笔记(二)

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

热心网友 时间:2026-04-30
转载

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

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
mysql 8.0升级后审计插件不工作怎么办_重新安装Audit_Log组件

mysql 8.0升级后审计插件不工作怎么办_重新安装Audit_Log组件

MySQL 8 0升级后审计插件不工作怎么办?重新安装Audit_Log组件 升级到MySQL 8 0社区版后,发现审计功能失灵了?别急着检查配置,问题可能更根本——社区版默认压根就没带audit_log插件。这意味着,你遇到的插件加载失败、报错,或者根本查不到记录,很可能不是因为配置漏了,而是系统

时间:2026-05-02 19:24
SQL中如何处理大数据量的模糊查询_使用全文索引替代LIKE

SQL中如何处理大数据量的模糊查询_使用全文索引替代LIKE

全文索引:不是LIKE的升级版,而是面向自然语言的独立查询范式 先说一个核心判断:全文索引绝非 LIKE 的“升级版”,它是一套完全不同的查询范式。 它解决不了 LIKE %关键词% 这种精确的字符位置匹配,但在处理自然语言语义、高效匹配模糊意图方面,它才是真正的利器。 SQL Server 的

时间:2026-05-02 19:24
如何用SQL窗口函数替换关联子查询以提升性能_实战改写JOIN案例

如何用SQL窗口函数替换关联子查询以提升性能_实战改写JOIN案例

如何用SQL窗口函数替换关联子查询以提升性能:实战改写JOIN案例 用窗口函数直接替换关联子查询,这事儿靠谱吗?答案是肯定的,绝大多数场景下都能实现。但问题的关键,从来不是“能不能写出来”,而是“PARTITION BY和ORDER BY这两项,你写对了没有”。这两处要是写错了,结果可能南辕北辙,性

时间:2026-05-02 19:24
mysql大表如何快速迁移到新服务器_xtrabackup物理备份与恢复

mysql大表如何快速迁移到新服务器_xtrabackup物理备份与恢复

MySQL大表迁移:为何物理备份是唯一选择,以及xtrabackup实战避坑指南 说到数据库迁移,尤其是面对50GB以上的庞然大物,很多人的第一反应可能就是mysqldump。但经验表明,这条路大概率会走进死胡同。一个核心判断是:逻辑备份工具在巨量数据面前,从效率到一致性都难以胜任。直接复制数据文件

时间:2026-05-02 18:54
SQL如何实现数据的自引用完整性校验_利用Self Join检查数据

SQL如何实现数据的自引用完整性校验_利用Self Join检查数据

外键约束无法保障自引用完整性,因其不感知软删除、禁止级联循环、要求非空等限制;必须用SELF JOIN或触发器结合业务规则(如is_deleted=0)手动校验。 自引用完整性不能靠外键约束自动保障,必须用 SELF JOIN 配合查询逻辑手动校验。 这听起来有点反直觉,但仔细想想就明白了:外键只能

时间:2026-05-02 18:53
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程