轻松掌握IBM DB2数据库的31个使用技巧

来源:岁月联盟 编辑:zhuzhu 时间:2008-01-28

1.查看本地节点目录

命令窗口中输入:

 

db2   list   node   directory

 

 

 

2.编目一个TCP/IP节点

命令窗口:

 

db2   catalog   tcpip   node   <node_name>   remote   <hostname &brvbar;ip_address>   server   <svcname &brvbar;port_number>   ostype   <OS2 &brvbar;AIX &brvbar;WIN95 &brvbar;NT &brvbar;HPUX &brvbar;SUN &brvbar;MVS &brvbar;OS400 &brvbar;VM &brvbar;VSE &brvbar;SCO &brvbar;SGI &brvbar;LINUX &brvbar;DYNIX>

 

 

 

3.取消节点编目

 

db2   uncatalog   node   <node_name>

 

 

4.查看系统数据库目录

 

db2   list   database   directory

 

 

5.查看本地数据库目录

 

db2   list   database   directory   on   <盘符>

 

在本地数据库目录中有而系统数据库目录中没有的数据库不能访问,可以在控制中心中选中 <数据库> 右键单击选择添加,然后输入需要添加的数据库名称或者点击刷新按钮选择数据库,加入数据库后即可以访问。

 

6.编目数据库

 

db2   catalog   database   <db_name>   as   <db_alias>   at   node   <node_name>

 

 

7.取消数据库编目

 

db2   uncatalog   database   <db_name>

 

 

8.测试远程数据库的连接

 

db2   connect   to   <db_alias>   user   <user_id>   using   <password>

 

 

9.任何用户均可通过设置Current Schema专用寄存器为特定的数据库连接设置默认模式,初始默认值为当前会话用户的权限ID。

set schema = 可以由用户交互式的使用,也可在应用程序中使用,假如用Dynamicrules Bind选项绑定包,这个语句就没有作用。此语句不在事务控制之下。

 

10.代码页的设置

在创建数据库时设置字符集

 

create   database   <db_name>   using   codeset   <codeset>   territory   <territiry>

 

 

 

例:

 

create   database   dbtest   using   codeset   IBM-437   territory   US

 

也可以设置整个数据库的代码页,在win2000/NT/xp中,在我的电脑 属性 高级 环境变量中添加变量DB2CODEPAGE = ,例:DB2CODEPAGE = 437 或 DB2CODEPAGE = 1386。或者在IBM DB2命令窗口输入 db2set DB2CODEPAGE=1386,设置后需要重新启动DB2生效。

 

11.DB2低版本数据到高版本的迁移

先将低版本数据备份使用恢复功能导入高版本数据库,然后在命令窗口输入:

 

db2   migrate   database   <db_name>

 

 

 

12. 表名或模式中含有引号时访问表

命令窗口:

 

db2   select   *   from   / "tabschema/ "./ "tabname/ " 命令行处理器:db2=>   select   *   from   "tabschema ". "tabname "

 

 

 

13. 导出数据库的表结构生成DDL文件

命令窗口:

 

db2look   -d   <db_name>   -e   -c   -o   <file_name>

 

 

 

14. 执行脚本文件

命令窗口:

 

db2   -tvf   <file_name>

 

 

 

15. 代码页的转换

 

16. 获取当前DB2的版本

 

 

select   *   from   sysibm.sysversions

 

 

17. DB2表的字段的修改限制?

只能修改VARCHAR2类型的并且只能增加不能减少

 

alter   table   <tb_name>   alter   column   <col_name>   set   data   type   varchar(SIZE)

 

 

18.如何查看表的结构?

 

describe   table   <tb_name> or describe   select   *   from   <schema> . <tb_name>

 

 

19. 如何快速清除一个大表?

 

ALTER   TABLE   TABLE_NAME   ACTIVE   NOT   LOGGED   INITALLY   WITH   EMPTY   TABLE

 

 

20. 如何查看数据库的存储过程?

 

SELECT   *   FROM   SYSCAT.PROCEDURES

 

 

 

21. 如何查看表的约束?

 

SELECT   *   FROM   SYSCAT.CHECKS   WHERE   TABNAME   =   <tb_name>

 

 

22. 如何查看表的引用完整约束?

 

SELECT   *   FROM   SYSCAT.REFERENCES   WHERE   TABNAME   =   <tb_name>

 

 

23. 如何知道BUFFERPOOLS状况?

 

select   *   from   SYSCAT.BUFFERPOOLS

 

 

24.如何在命令行下查看修改实例和数据库配置参数?

查看实例配置参数:

 

db2   get   dbm   cfg

 

 

修改实例配置参数:

 

db2   update   dbm   cfg   using   参数名   新值

 

 

 

修改数据库配置参数:

 

db2   update   db   cfg   for   <db_name>   using   参数名   新值

 

 

 

25.如何修改缓冲区?

增加缓冲区:

 

create   bufferpool   <buf_name>   size   <number   of   pages>   [pagesize   4096]   {[not]   EXTENDED   STORAGE}

 

修改缓冲区:

 

alter   bufferpool   <buf_name>   size   <number   of   pages>   {[not]   EXTENDED   STORAGE}

 

删除缓冲区:

 

drop       bufferpool   <buf_name>

 

 

假如缓冲区大小设置为 -1 表示缓冲池的页面数目由数据库配置参数buffpage决定。

注重: 数据库配置参数buffpage仅对缓冲区大小设置为 -1 的缓冲池起作用。

 

26. 多个字段时如何不通过使用select子句使用in/not in

 

 

select   *   from   tabschema.tabname   where   (colA,   colB,   colC)   [not]   in   (values   (valueA1,   valueB1,   valueC1),   (valueA2,   valueB2,   valueC2),   ...(valueAn,   valueBn,   valueCn))

 

 

27. 查看当前连接到数据库的应用

 

 

db2   list   application   [show   detail]

 

 

28. 如何确认DB2数据库的一致性

 

db2dart   <db_name>   /DB

 

 

/DB表示检查整个数据库的一致性

 

29. 测试SQL语句的性能

 

 

db2batch   -d   <db_name>   -f   <file_name>   [-a   userid/passwd]   [-r   <outfile_name> ]

 

-r 选项表示将查询结果输出到一个文件中。

30. 导出某个表的数据

 

export   to   <Derectry> <filme>

 

 

如:导出用户表

 

export   to   c:/user.ixf   of   ixf   select   *   from   user

 

 

31.导入数据

 

import   from

 

如:导入用户表。导入时可以直接建立新表。假如有该表存在也可以用INSERT 插入,或者用UPDATE更新。

执行导入:

 

import   from   c:/user.ixf   of   ixf   [Create/Insert   into   /   update]   tablename