DB2读书笔记

来源:互联网 发布:客户端设计美工招聘 编辑:程序博客网 时间:2024/04/25 21:33

查看表空间

1.GET SNAPSHOT FOR TABLESPACES ON <database name>

2.LIST TABLESPACES (show details)

注意:

容器只能建在本地盘,不能创建在网络映射盘符,NFS文件系统或GPFS文件系统。

查看索引

select * from syscat.indexes where tabname = upper(‘表名’)

DB2常用命令

1.启动数据库

     db2start

2.停止数据库

     db2stop force

3.连接数据库

     db2 connect to o_yd user db2 using pwd

4.读数据库管理程序配置

     db2 get dbm cfg

5.写数据库管理程序配置

     db2 update dbm cfg using 参数名 参数值

6.读数据库的配置

     db2 connect to o_yd user db2 using pwd

     db2 get db cfg for o_yd

7.写数据库的配置

     db2 connect to o_yd user db2 using pwd

     db2 update db cfg for o_yd using 参数名 参数值

8.关闭所有应用连接

     db2 “force application all”

     db2 “force application (ID1,ID2,,,Idn)”

(db2 list application for db o_yd show detail)

9.备份数据库

     db2 force application all

     db2 backup db o_yd to d:

    (db2 initialize tape on //./tape0)

    (db2 rewind tape on //./tape0)

    db2 backup db o_yd to //./tape0

10.恢复数据库

    db2 restore db o_yd from d: to d:

    db2 restore db o_yd from //./tape0 to d:

11.绑定存储过程

   db2 connect to o_yd user db2 using pwd

   db2 bind c:/dfplus.bnd

  拷贝存储过程到服务器上的C:/sqllib/function目录中

12.整理表

    db2 connect to o_yd user db2 using pwd

    db2 reorg table ydd

    db2 runstats on table ydd with distribution and indexes all

13.导出表数据

     db2 export to c:/dftz.txt of del select * from dftz

     db2 export to c:/dftz.ixf of ixf select * from dftz

14.导入表数据

import from c:/123.txt of del  insert into ylbx.czyxx

db2 import to c:/dftz.txt of del commitcount 5000 messages  c:/dftz.msg insert into dftz

db2 import to c:/dftz.ixf of ixf commitcount 5000 messages c:/dftz.msg insert into dftz

db2 import to c:/dftz.ixf of ixf commitcount 5000 insert into dftz

db2 import to c:/dftz.ixf of ixf commitcount 5000 insert_update into dftz

db2 import to c:/dftz.ixf of ixf commitcount 5000 replace into dftz

db2 import to c:/dftz.ixf of ixf commitcount 5000 create into dftz   (IXF)

db2 import to c:/dftz.ixf of ixf commitcount 5000 replace_create into dftz  (IXF)

15.执行一个批处理文件

    db2 tf 批处理文件名

    (文件中每一条命令用 ;结束)

16.自动生成批处理文件

    建文本文件:temp.sql

    select 'runstats on table DB2.' || tabname || ' with distribution and  detailed indexes all;' from syscat.tables where tabschema='DB2' and type='T';

db2 –tf temp.sql>runstats.sql

17.自动生成建表(视图)语句

在服务器上:C:/sqllib/misc目录中

db2 connect to o_yd user db2 using pwd

db2look –d o_yd –u db2 –e –p –c c:/o_yd.txt

18.给用户赋权

grant dbadm on database to user bb

19.显示首行记录

select * from czyxx fetch first 1 rows only(在SP中无效)

20.显示当前用户所有表

db2look d ylbx u db2admin w asd a e o a.txt21.   

21.列出所有的系统表

  list tables for system

22.查看表结构

db2 describe select * from user.tables

 

topas查看进程及CPU、硬盘使用情况。

DB2错误码

SQL10007N未能检索消息 "<msgno>"。原因码:"<code>"

解释:  未能从消息文件中检索所请求的消息 <msgno>。原因码 <code>

是下列其中一项:

1.    环境变量 "DB2INSTANCE"

   未设置或设置为无效的实例。校正它并再试。

 

2.    找到消息文件,但该文件因许可权而未能打开。

检查消息目录下的文件的文件许可权。

 

3.    未能找到消息文件。该文件不存在或者消息文件所在的目录不存在。

   检查 'prime' 目录(缺省值)或与 'LANG'环境变量同名的目录是否存在于消息目录下。

 

4.    所请求的消息在消息文件中不存在。

消息文件过时,或它是不正确的消息文件。

 

5.    LC_CTYPE 设置为数据库不支持的语言环境。

校正它并再试。

 

6.    发生意外的系统错误。

再试执行。若问题仍存在,则与 IBM代表联系。

 

7.    内存不够。尝试获取专用内存失败。

再试。

 

用户响应:  在验证下列各项之后,重新发出该命令:

o   对于尝试此命令的用户名,确保 DB2INSTANCE环境变量设置为正确的文字串

 

o   确保对尝试此命令的用户名指定了正确的主目录(即在 /etc/psaawd文件中)

 

o   在尝试此命令的用户名上,确保 LANG环境变量设置成对所安装的语言来说是正确的值 ,或设置成

   'C'(缺省为 'prime' 目录中的任何值)

 

若以上都正确,但错误仍发生,则重新安装 DB2

如何在AIX上建立使用裸设备的数据库管理(DMS)表空间

1. mklv命令建裸设备,语法为: 

  mklv -t jfs -y 设备名 -U 用户名 -G 组名 vg lv大小 硬盘 

 例如: mklv -t jfs -y contest -U db2inst1 -G db2iadm1 rootvg 10 hdisk0 

2.  然后创建表空间 

 1). 连接数据库 

 2). 创建表空间:注意在命令中要在加引号: 

  db2 "create tablespace 表空间名 managed by database using (device 裸设备名及路径 大小)" 

 例如: db2 "create tablespace tptest managed by database using (device '/dev/rcontest' 80M)" 

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

在命令行下查看实例的配置参数,可用 db2 get dbm cfg 命令实现。

类似地用 db2 get db cfg for 数据库名 可以得到数据库的配置参数。

以下是数据库参数的一部分:

Log file size (4KB) (LOGFILSIZ) = 250

Number of primary log files (LOGPRIMARY) = 3

Number of secondary log files (LOGSECOND) = 2

 

修改实例配置参数,用 db2 update dbm cfg using 参数名 新值

类似,用 db2 update db cfg for 数据库名 using 参数名 新值 修改数据库配置参数。

 

例如,要修改sample数据库配置参数中的LOGPRIMARY10,可用以下命令实现:

db2 update db cfg for sample using logprimary 10

在使用IMPORT命令向数据库出入数据时,如何避免日志空间满错误?

在执行IMPORT命令时,如果使用循环日志,有时会出现日志满错误,这时可用COMMITCOUNT参数来解决。

因为日志空间满往往是因为所有的日志均处于活动状态导致的。而COMMIT执行后,会释放所占据的资源,其中包括日志。这样,被当前事务使用的日志在COMMIT命令执行后,即变成非活动状态了。

查看使用某张表的SP

select PROCNAME from SYSCAT.PROCEDURES where SPECIFICNAME in(select dname from sysibm.sysdependencies where bname in ( select pkgname   from syscat.packagedep  where bname like 'tb_realtime_rec_ctr%' ))with ur

配置 IBM DB2 通用数据库以构建 SQL 过程

简介

IBM DB2? UDB Version 7 引入了 SQL 过程,作为它其中的一个新功能。SQL 过程是指用 SQL 语言编写的存储过程。本文讨论了设置环境以构建和部署 SQL 过程的过程。将 SQL 过程转换成 C 语言代码之后,就编译该代码来构建存储过程库。Windows?OS/2?UNIX?OS/390? 以及 OS/400? 平台上均支持这些 SQL 过程。本文与 WindowsOS/2 UNIX 平台相关。

先决条件

要在一台机器上构建 SQL 过程,需要安装两个产品:

1.       Application Development ClientADC),其中包含开发 DB2 应用程序所需的所有库、头文件、预编译器,等等。

2.       一个支持 DB2 C 编译器。

关于平台所提供的支持 DB2 C 编译器的清单,请查阅 Application Building Guide

设置环境

正如前面提到的,DB2 SQL 过程转换成 C 代码,此代码随后则被编译成存储过程库。为了编译该代码,必须配置 DB2 以检测所安装的 C 编译器。

为了配置 DB2 以检测所安装的 C 编译器:

1.       创建用以为编译器设置环境的可执行文件。该文件将是 Windows 上的批(.bat)文件、OS/2 上的命令(.cmd)文件或 UNIX 上的 shell 脚本。设置编译器环境将包括更新 PATHINCLUDE LIB 环境变量。

2.       通过发出下列命令,更新 DB2 注册表变量 DB2_SQLROUTINE_COMPILER_PATH 以指向第 1 步所创建的可执行文件:

db2set DB2_SQLROUTINE_COMPILER_PATH=full_path_to_executable_file

注意: Windows NT? Windows 2000 上,只要已将编译器的环境变量存作 SYSTEM 变量,就无需设置以上注册表变量。

DB2 还提供了每个平台上默认的可执行文件,用以为该平台所支持的其中一个(默认的)编译器设置环境。其默认的文件名和位置取决于平台:

  • Windows 上:%DB2PATH%//sqllib//function//routine//sr_cpath.bat
  • OS/2 上:%DB2PATH%//sqllib//function//routine//sr_cpath.cmd
  • UNIX 上:$HOME/sqllib/function/routine/sr_cpath

默认情况下,DB2 会将 DB2_SQLROUTINE_COMPILER_PATH 设置为上面的其中一个文件,除非已将其注册表变量修改为指向一个不同的文件。因此,如果安装了默认的 C 编译器并且打算将之用于开发,就无需创建一个单独的可执行文件来设置编译器环境。

应检查上述文件的内容以确保它们正确反映了焦点平台中默认编译器的环境设置。例如,在 Windows NT Windows 2000 上,sr_cpath.bat 文件假定 Microsoft Visual C++? Version 6 安装在 C://Program Files//Microsoft Visual Studio 之下。如果它安装在 D://Microsoft Visual Studio 之下,那么该文件的内容就需要进行修改。

另一个常见的错误就是对该文件进行了所有的正确修改,但却保留了编译器环境设置命令周围的注释。再次检查 sr_cpath.bat 文件的内容,您将注意到该文件中所有行都以 REM 关键字开头。REM 关键字用于注释行的开始,所以应将之删除以便设置编译器环境。

编译转换过来的 C 代码

在配置完 DB2 以检测编译器环境之后,就需要配置它,以使用针对所安装的编译器的编译命令。这将通过将另一个 DB2 注册表变量 DB2_SQLROUTINE_COMPILE_COMMAND 设置为所安装编译器的编译命令来完成。DB2_SQLROUTINE_COMPILE_COMMAND 将被设置为该平台上默认编译器的一个默认的编译命令。以下是 AIX?Solaris? Windows 平台上默认编译命令的示例:

AIX 上,用于 AIX Version 3.6.6 IBM C Set++ 的默认编译命令为:

xlC_r -+ -H512 -T512 -I$HOME/sqllib/include SQLROUTINE_FILENAME.c // 
                         -bE:SQLROUTINE_FILENAME.exp -e SQLROUTINE_ENTRY // 
                       -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -lc -ldb2

Solaris 上,SPARC Compiler C++ Version 4.2 5.0 的默认编译命令为:

cc -# -Kpic -I$HOME/sqllib/include SQLROUTINE_FILENAME.c -G //
      -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -R$HOME/sqllib/lib -ldb2 

Windows 上,Microsoft Visual C++ Version 5.0 6.0 的默认编译命令为:

cl -Od -W2 /TC -D_X86_=1 -I%DB2PATH%//include SQLROUTINE_FILENAME.c 
      /link -dll -def:SQLROUTINE_FILENAME.def /out:SQLROUTINE_FILENAME.dll 
      %DB2PATH%//lib//db2api.lib

注意:以上 AIX Solaris 平台上的‘/’用于指示回车。对于 Windows 平台,其整个命令就是连续的一行,不用‘/’来指示回车符。

定制编译命令

如果安装不同的编译器(因而需要不同的编译命令),或者如果定制默认的编译选项,那么您就需要将 DB2_SQLROUTINE_COMPILE_COMMAND 设置为定制的编译命令。下列示例展示了如何指定以上所示每个默认编译命令的调试选项(用以返回调试信息):

要在 AIX 平台上返回调试信息,就要在默认的编译命令中添加 -g 选项并且更新 DB2_SQLROUTINE_COMPILE_COMMAND,如下所示:

db2set DB2_SQLROUTINE_COMPILE_COMMAND=lC_r -+ -H512 -T512 -g // 
    -I$HOME/sqllib/include SQLROUTINE_FILENAME.c // 
                        -bE:SQLROUTINE_FILENAME.exp -e SQLROUTINE_ENTRY // 
                        -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -lc -ldb2

要在 Solaris 平台上返回调试信息,就要在默认的编译命令中添加 -g 选项并且更新 DB2_SQLROUTINE_COMPILE_COMMAND,如下所示:

db2set DB2_SQLROUTINE_COMPILE_COMMAND=c -# -Kpic -g // 
    -I$HOME/sqllib/include SQLROUTINE_FILENAME.c -G //
     -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -R$HOME/sqllib/lib -ldb2

要在 Windows 平台上返回调试信息,就要更新 DB2_SQLROUTINE_COMPILE_COMMAND,如下所示:

db2set DB2_SQLROUTINE_COMPILE_COMMAND=cl -Od -W2 /TC -D_X86_=1 
  -I%DB2PATH%//include SQLROUTINE_FILENAME.c /link -dll 
  -def:SQLROUTINE_FILENAME.def /out:SQLROUTINE_FILENAME.dll 
       -debug:full -pdb:none -debugtype:cv %DB2PATH%//lib//db2api.lib

再次请注意在 Windows 平台上,编译命令应按一行连续输入。

恢复为默认的编译命令

DB2_SQLROUTINE_COMPILE_COMMAND 设置为空将会恢复默认的编译命令和选项。其设置如下所示:

db2set DB2_SQLROUTINE_COMPILE_COMMAND=

结束语

构建 SQL 过程有两个主要步骤:

1.       安装编译器并配置 DB2 以检测编译器环境。这是通过创建用以设置编译器环境(PATHLIB INCLUDE 环境变量)的可执行文件,以及将 DB2_SQLROUTINE_COMPILER_PATH 设置为该文件来完成的。可使用默认的可执行文件(sr_cpath/sr_cpath.bat/sr_cpath.cmd)或创建新文件来为不同的编译器设置编译器环境。

2.       DB2_SQLROUTINE_COMPILE_COMMAND 设置为一个编译命令。可使用默认的编译命令或者将 DB2_SQLROUTINE_COMPILE_COMMAND 设置为一个定制的编译命令(例如添加调试选项、64 位选项,等等)。

构建 SQL 过程中常见的错误源于编译器环境的错误配置。本文简明地解释了为构建 SQL 过程设置环境的过程。DB2 Version 7fixpak 3 的版本信息提供了其他平台上默认编译命令的更多示例。