摘要: 工作学习之余对DB2使用知识的一点零散记录,包括DB2的基础知识、数据库管理、性能调优连同研发等方面,内容很零散,而且有时不免理解有误,可能并未回头改掉,望见谅,仅供参考。

工作学习之余对DB2使用知识的一点零散记录,包括DB2的基础知识、数据库管理、性能调优连同研发等方面,内容很零散,而且有时不免理解有误,可能并未回头改掉,望见谅,仅供参考。

表空间类型分为SMS和DMS,分别是system management space, database management space. SMS使用方便,简单,无需手工创建和维护数据存储文档。DMS需要手动指定container和存储数据的文档名,并确保有足够磁盘空间可用。
对于一个数据库,至少存在一个page size为4K的系统临时表空间,能够额外建立具备更大page size的用户临时表空间,系统会自动进行使用。

无法用alter语句更改一个字段的数据类型,对某些字段能够更改数据长度,这一点上相对于Oracle,DB2的限制要多一些。
能够使用: select 表达式 from sysibm.sysdummy; 替代的,以下语句是等价的:values 表达式;


表和视图的创建、更新、删除操作,都写日志,因此能够commit或rollback。

在update语句中,假如没有对定义了默认值的某个字段显式赋值,则更新时,此字段不会重新执行默认值中定义的表达式。为了让其重新执行默认值定义的表达式,能够采用以下方式:

create table t1 (c1 varchar(32), lastupdatetime with default current timpstamp);
update t1 set c1 = 'new string', lastupdatetime = default;

对于DB2数据库能够在创建时指定codepage参数,创建后不可修改。当应用程式访问数据库时,DB2会比较两者的codepage是否一致,不一致则进行代码页的自动转换。为了减少转换所带来的开销,应尽量确保应用程式所采用的代码页和数据库一致。

能够对DB2 CLP工具的codepage进行配置,使用:

$ db2set DB2CODEPAGE= 1386

本例中配置的是中文GBK字符集在Windows平台对应的值。注意,这个数字值是由DB2自己定义的。有关各种字符集在相应平台所对应的代码页值可在IBM网站查找。

在DB2 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返回的错误号,能够用以下方法查阅说明(以sql 10008为例):

$ db2 ? sql10008

数据库的备份和恢复:

使用备份和恢复工具能够完成在不同的服务器见完整的转移数据库的工作,命令行方式如下:

备份

$ db2 BACKUP DATABASE db_name USER user_name USING password to backup_dir_name
$ db2 BACKUP DATABASE dlhdb USER dlh USING admindlh TO d:\backups

恢复

$ db2 RESTORE DATABASE source_db_name USER user_name USING password FROM backup_dir_name TAKEN AT backup_file_create_time TO driver_letter INTO new_db_name
$ 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 ANSTANCE inst_name

获取实例的配置参数

$ db2 GET DBM CFG SHOW DETAIL

导出数据库完整的定义到脚本文档,包括表,视图,函数,数据库参数等

$ db2look -d sample(数据库) -a -e -l -x -m -f -o(参数)samplesql.out(输出文档)

load 一个表的数据时,有可能导致表空间处于backup pending(0x0020)状态。比如把整形数据load到double型的字段中。
处于backup pending状态的表空间不能被访问。
能够通过对此表空间运行一次backup操作,恢复到正常状态(0x0)。

对于自增字段,能够通过两种方式指定:

generated by default as identity
generated always as identity

区别是,第一种方式在插入数据时允许手工指定自增字段的值,只要不重复即可,并且数据库会自动配置下一个值;
第二种方式则不允许指定,只能由数据库自动分配并插入。


DB2 sql语句中转义符的使用:

select * from t1 where a like '玞\辠' escape '\';

创建数据库时,出现SQL1043C错误,可能的问题:
指定容器所在的磁盘空间不足,
当容器为file类型时,后面的long-num参数不对,比如25600代表256Mb,但假如指定256则会导致以上错误。


平台 RH Linux 8
DB2 UDB v8.1
在WAS 5中建立到db2的数据源,但连接失败,返回以下错误:

[Servlet Error]-[SQLConnect]: java.lang.UnsatisfiedLinkError: SQLConnect

原因是没有为运行was服务的用户配置以下环境变量:

D_LIBRARY_PATH
LIBPATH
DB2INSTANCE
...

以上环境变量定义在 $INSTHOME/sqllib/db2profile文档中,能够采用的解决方案:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!