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]
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
mysql 8.0升级后审计插件不工作怎么办_重新安装Audit_Log组件
MySQL 8 0升级后审计插件不工作怎么办?重新安装Audit_Log组件 升级到MySQL 8 0社区版后,发现审计功能失灵了?别急着检查配置,问题可能更根本——社区版默认压根就没带audit_log插件。这意味着,你遇到的插件加载失败、报错,或者根本查不到记录,很可能不是因为配置漏了,而是系统
SQL中如何处理大数据量的模糊查询_使用全文索引替代LIKE
全文索引:不是LIKE的升级版,而是面向自然语言的独立查询范式 先说一个核心判断:全文索引绝非 LIKE 的“升级版”,它是一套完全不同的查询范式。 它解决不了 LIKE %关键词% 这种精确的字符位置匹配,但在处理自然语言语义、高效匹配模糊意图方面,它才是真正的利器。 SQL Server 的
如何用SQL窗口函数替换关联子查询以提升性能_实战改写JOIN案例
如何用SQL窗口函数替换关联子查询以提升性能:实战改写JOIN案例 用窗口函数直接替换关联子查询,这事儿靠谱吗?答案是肯定的,绝大多数场景下都能实现。但问题的关键,从来不是“能不能写出来”,而是“PARTITION BY和ORDER BY这两项,你写对了没有”。这两处要是写错了,结果可能南辕北辙,性
mysql大表如何快速迁移到新服务器_xtrabackup物理备份与恢复
MySQL大表迁移:为何物理备份是唯一选择,以及xtrabackup实战避坑指南 说到数据库迁移,尤其是面对50GB以上的庞然大物,很多人的第一反应可能就是mysqldump。但经验表明,这条路大概率会走进死胡同。一个核心判断是:逻辑备份工具在巨量数据面前,从效率到一致性都难以胜任。直接复制数据文件
SQL如何实现数据的自引用完整性校验_利用Self Join检查数据
外键约束无法保障自引用完整性,因其不感知软删除、禁止级联循环、要求非空等限制;必须用SELF JOIN或触发器结合业务规则(如is_deleted=0)手动校验。 自引用完整性不能靠外键约束自动保障,必须用 SELF JOIN 配合查询逻辑手动校验。 这听起来有点反直觉,但仔细想想就明白了:外键只能
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

