在linux下安装db2全过程

时间:2022-09-13 21:44:15

一、db2安装:

有两种安装方式:命令和图形界面。

图形界面安装(可以root用户操作):

1、ibm网站上下载db2安装包v9.7_linuxxia3_2_server.tar.gz

2、tar  -zxvf  v9.7_linuxxia3_2_server.tar.gz 命令解压

3、cd命令回到解压了的文件夹里,运行./db2setup,启动安装过程(可以在任意的用户下安装):

截图如下:

二、使用创建数据库gspsdb

4、用命令创建用户和添加密码:useradd gspirr

                             passwd gspirr

5、root下创建实例gspirr:(当然在安装时候也可以创建实例)

[root@localhost6:/opt/ibm/db2/instance]#  ./db2icrt  -p 61002  -u  gspirr gspirr

其中/opt/ibm/db2/instancedb2的安装路径,

-p  用来指定服务名称(也可以不指定,由系统自行设定,在/etc/services中可以查看)

-u  表示将用来运行受防护用户定义的函数(UDF)和受防护存储过程的用户的名称(可以随意设定)。指定您创建的受防护用户的名称。

6、启动/停止实例gspirr

    Su gspirr

Db2start

Db2stop

7、查看/设置gspirr配置:

Db2set -all 

显示:

[i] DB2COUNTRY=86

[i] DB2COMM=TCPIP

[i] DB2CODEPAGE=1386

[g] DB2SYSTEM=localhost6.localdomain6

[g] DB2INSTDEF=db2inst1

[g] DB2ADMINSERVER=dasusr1

 可以用命令db2set 设置配置:

    db2set db2country=86

    db2set db2codepage=1386

db2set DB2COMM=TCPIP

db2set DB2AUTOSTART=YES (设置db2自动随linux启动)
备注: 设置服务端口
  输入db2命令,进入db2命令行模式
  update database manager configuration using svcename server1|50000
  server1|50000两者选其一,server1|为服务名,50000为端口号
  get database manager configuration

    为了打开 DB2 Control Center,记得要以 root 用户发出 xhost +xhostlocal:db2以添加对 X Server 的访问权限。然后,以实例所有者身份重新登录,并启动 DB2 Control Center

用户可以使用以下几种方法来运行命令编辑器在操作系统CLP中输入db2ce命令。

使用LIST DATABASE DIRECTORY命令查看系统数据库目录的内容

8、gspirr里创建数据库gspsdb

   Db2start

   Db2 "CREATE DATABASE gspsdb ON '/GSPMM/db2data' USING CODESET GBK TERRITORY CN"

9|创建缓冲池:

Db2  connect to gspsdb

Db2  "CREATE BUFFERPOOL bf_main_data IMMEDIATE SIZE 1024 PAGESIZE 32k"

Db2  "CREATE BUFFERPOOL bf_large_data IMMEDIATE SIZE 1024 PAGESIZE 32K "

Db2  "CREATE BUFFERPOOL bf_index_data IMMEDIATE SIZE 1024 PAGESIZE 32K" 

10、创建表空间:

Db2 "CREATE REGULAR TABLESPACE ts_main_data PAGESIZE 32K MANAGED BY DATABASE USING ( FILE '$HOME/GSPMM/db2ts_rr/maindata' 512M ) EXTENTSIZE 32 OVERHEAD 10.5 PREFETCHSIZE 32 TRANSFERRATE 0.14 BUFFERPOOL bf_main_data"

Db2 "CREATE REGULAR TABLESPACE ts_large_data PAGESIZE 32K MANAGED BY DATABASE USING ( FILE '$HOME/GSPMM/db2ts_rr/largedata' 512M ) EXTENTSIZE 32 OVERHEAD 10.5 PREFETCHSIZE 32 TRANSFERRATE 0.14 BUFFERPOOL bf_large_data"

Db2 "CREATE REGULAR TABLESPACE ts_index_data PAGESIZE 32K MANAGED BY DATABASE USING ( FILE '$HOME/GSPMM/db2ts_rr/indexdata' 256M ) EXTENTSIZE 32 OVERHEAD 10.5 PREFETCHSIZE 32 TRANSFERRATE 0.14 BUFFERPOOL bf_index_data"

11、批量建表并导入数据:

   Su gspirr

   Db2 connect to gspsdb

   Sh  crttbl.sh

   Sh  insert.sh

  其中crttbl.sh内容如下:

     db2 connect to gspsdb

      for i in `ls *sql`

        do

        echo "====[$i]===="

        db2 -tf  $i

        done

     db2 disconnect current

   其中insert.sh内容如下:

      db2 connect to gspsdb

        for i in `ls *sql`

          do

             echo "====[$i]===="

          db2  -tf  $i

          done

      db2 disconnect current

三、配置客户端连接gspsdb

12gspsdb端配置:

   db2 list db directory  //查看已经建好的所有的数据库

   db2 list db directory show detail

  1验证实例使用的通讯协议,查看DB2COMM变量(tcp/ip

     db2set -all

  2)查看数据库管理器的配置,查看SVCENAME(特指tcpip协议)

db2 get dbm cfg |grep  - i  SVCENAME

显示:

 TCP/IP Service name      (SVCENAME) = 61002

 SSL service name         (SSL_SVCENAME) =

 3)查看/etc/services中,有无与上面对应SVCENAME的端口,例如:

    db2cDB2   50000/tcp

运行Vi services , 添加:db2_gspirr   61002/tcp

  4)要确认服务器是否在监听,可以用netstat -an 来查看端口是否处于LISTEN状态
[gspirr@ ~]$  netstat  -na | grep  61002
tcp        0      0 0.0.0.0:61002               0.0.0.0:*                   LISTEN

13、检查客户端的配置如下:

1)启动客户端db2命令控制台

 Db2cmd

     db2 list node directory

     db2 list node directory show detail  //查看是否有节点

     ping hostname来验证通讯

     使用telnet hostname port来验证是否能连到实例

    2)若没有节点,配置如下:

     Db2
     db2 => catalog tcpip node db2node2 remote 192.168.0.120 /
           server 61002  remote_instance  gspirr /
           ostype linux

catalog tcpip node esb02 remote 10.20.2.247  server  60004  remote_instance esb02  ostype linux
     db2 => catalog database  gspsdb  as  mydb2 at node db2node2 
            authentication server /

catalog  database  gspdb  as  esb2db  at node  esb2node 
            authentication server   

catalog tcpip node esb1node remote 192.168.0.109  server  61006  remote_instance esb1  ostype linux

catalog database  gspdb  as  esb1db  at node  esb1node 
            authentication server   

Gspsdb/gspmdb/db

     3测试到gspsdb的连接
     db2=>connect to mydb2 user  gspirr 

      显示:输入gspirr的当前密码:

      成功连接,会显示 

在linux下安装db2全过程

    4db2 "select * from TBL_FUNCTION_INFO",显示表内容。

 亦可以使用db2控制中心,直接添加数据库gspsdb,打开数据库中的内容了。

安装了 DB2,并成功创建实例之后,便可以以实例所有者的身份(在这个例子中是 db2inst1)登录,然后调用 db2profile 脚本来设置环境变量。可以使用 db2sampl 脚本创建样例数据库。

四、卸载数据库:

su root 

cd db2数据库的安装目录:/opt/ibm/db2/instance,如:

[root@localhost6:/opt/ibm/db2/instance]# ./db2idrop -f   gspmdb

住:db2level 可以查看数据库版本的相关信息;

/opt/ibm/db2/instance里有数据库操作的所有命令;

UNCATALOG DB <数据库别名>,如:db2 => uncatalog db  gspsdb 

如何查看linux ip

netstat   -i   -n  
  or:   /sbin/ifconfig

不同数据库之间映射表:

1、在gspirr上建立esb上的gspdbnode

db2 catalog tcpip node dbnode REMOTE 192.168.0.120 SERVER 61003

db2 catalog database gspdb at node dbnode authentication  server

db2 connect to gspmdb user gspirr using gspirr

db2 create wrapper drda

create server MYSERVER type db2/linux version 9.7.0 wrapper DRDA authorization "gspirr" password "gspirr" options(dbname 'gspdb')

create user mapping for "gspirr" SERVER "MYSERVER" options(REMOTE_AUTHID 'esb', REMOTE_PASSWORD 'esb')

db2 create nickname TBL_TRANSACTION_TRACE_1 for MYSERVER.esb.TBL_TRANSACTION_TRACE_1

db2 create nickname TBL_TRANSACTION_TRACE_2 for MYSERVER.esb.TBL_TRANSACTION_TRACE_2

/////////11111

db2 "create wrapper drda" && db2 "create server esbsvr type db2/aix64 version 9.1.0 wrapper drda authorization /"esb02/" password /"esb02/" options (dbname 'esbdb')"

姜海胜 13:51:21

 db2 create user mapping for esb01 SERVER "MYSERVER" options(REMOTE_AUTHID 'esb02', REMOTE_PASSWORD 'esb02')

db2 catalog tcpip node dbnode REMOTE 10.20.2.247 SERVER 60004

db2 catalog database esbdb at node dbnode authentication server

db2 create wrapper drda

create server MYSERVER type db2/aix64 version 9.1.0 wrapper DRDA authorization "esb01" password "esb01" options(dbname 'esbdb')

create user mapping for "esb01" SERVER "esbdb" options(REMOTE_AUTHID 'esb02', REMOTE_PASSWORD 'esb02')

 db2 create nickname TBL_TRANSACTION_TRACE_1 for esbdb.esb02.TBL_TRANSACTION_TRACE_1

 

 db2 create nickname TBL_TRANSACTION_TRACE_2 for esbdb.esb02.TBL_TRANSACTION_TRACE_2

 

 db2 create nickname TBL_EXCEPTION_TRACE_1 for esbdb.esb02.TBL_EXCEPTION_TRACE_1

 db2 create nickname TBL_EXCEPTION_TRACE_2 for esbdb.esb02.TBL_EXCEPTION_TRACE_2

!!!!!

//////////////////////////////////////////////////

姜海胜 12:45:00

    db2 "create wrapper drda" && db2 "create server esbsvr type db2/Linux version 9.7 wrapper drda authorization /"esb2/" password /"esb2/" options (dbname 'gspdb')"

姜海胜 13:51:21

  ??create user mapping for gspirr SERVER "MYSERVER" options(REMOTE_AUTHID 'esb', REMOTE_PASSWORD 'esb')

姜海胜 12:45:17

///////////////////////////////////////////////////////////(原始数据)

陈亮 13:22:33

#DATA-SYNC USER:gspimm

#CATALOG NODE

db2 catalog tcpip node gspdbsvr REMOTE 182.119.171.115 SERVER 51001

#CATALOG DB

db2 catalog database gspdb at node gspdbsvr authentication SERVER

#CONNECT TO gspmdb

db2 connect to gspmdb user gspmm using gspmm

#CREATE NICKNAME

db2 create wrapper drda

db2 =>create server MYSERVER type db2/AIX version 8.1 wrapper DRDA authorization "gspadmin" password "gspadmin" options

(dbname 'gspdb')

db2 =>create user mapping for "gspmm" SERVER "MYSERVER" options(REMOTE_AUTHID 'gspadmin', REMOTE_PASSWORD 'gspadmin')

db2 create nickname gsp_exception_trace_1 for MYSERVER.gspadmin.gsp_exception_trace_1

db2 create nickname gsp_exception_trace_2 for MYSERVER.gspadmin.gsp_exception_trace_2

db2 create nickname gsp_transaction_trace_1 for MYSERVER.gspadmin.gsp_transaction_trace_1

db2 create nickname gsp_transaction_trace_2 for MYSERVER.gspadmin.gsp_transaction_trace_2

db2licm -l 

1.数据库的启动、停止
   db2start--启动
   db2stop [force]--停止

2.数据库的连接、断开
    db2 CONNECT TO DBName [user UserID using PWD]--建立连接
    db2 CONNECT reset /db2 disconnect CURRENT --断开连接

3.实例的创建、删除
  db2icrt < 实例名称 >--创建 db2 实例
  db2idrop < 实例名称 >--删除 db2 实例
  SET db2intance=db2--设置当前 db2 实例
  db2ilist--显示 db2 拥有的实例

4.节点、数据库的编目
  db2 list node directory --查看本地节点目录
  db2 catalog tcpip node <node_name> remote <hostname|ip_address> server <svcname|port_number> ostype <OS2|AIX|WIN95|NT|HPUX|SUN|MVS|OS400|VM|VSE|SCO|SGI|LINUX|DYNIX>--编目一个TCP/IP节点
  db2 uncatalog node <node_name> --取消节点编目
  db2 catalog DATABASE <db_name> AS <db_alias> AT node <node_name>--编目数据库
  db2 uncatalog DATABASE <db_name> --取消数据库编目

5.表空间的创建、删除
  db2 CREATE BUFFERPOOL STMABMP IMMEDIATE  SIZE 25000 PAGESIZE 8K--创建缓冲池STMABMP
  db2 DROP tablespace STMABMP--删除表空间
  db2 CREATE  REGULAR TABLESPACE STMA PAGESIZE 8 K  MANAGED BY SYSTEM | DATABASE 
      USING ('D:/DB2Container/Stma' ) EXTENTSIZE 8 OVERHEAD 10.5
      PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL  STMABMP  DROPPED TABLE RECOVERY OFF
     --D:/DB2Container/Stma下创建系统/数据库管理表空间STMA
  db2 BACKUP DATABASE 数据库别名 TABLESPACE 表空间名 [ONLINE} TO 介质名--表空间的备份
  db2 list tablespaces show detail --列出所以表空间信息
  db2 list tablespace containers for SpaceID--列出对应表空间的容器详情

 --修改表空间

  ALTER TABLESPACE 表空间名 RESIZE(FILE '已满的容器名更改后容器的大小)

  ALTER TABLESPACE 表空间名 EXTEND(FILE '已满的容器名准备增加的大小)--可以是实际大小或者页数

 egdb2 "alter tablespace HTDC_INDEX EXTEND(file '/home/db2admin/dbback/db2containner/htdc/index/htdc_index' 1024M)" --unix系统)将DMS HTDC_INDEX 在扩大1G

6.数据库的创建、删除
  db2 CREATE db DBName [using codeset GBK territory CN]--创建数据库
  db2 DROP db DBName--删除数据库
  db2 list db directory--列出所有数据库目录(包括远程编目的数据库)

  db2 list db directory ON location--Windows下的C: ,Unix下的/home/db2inst1(本地数据库)

 db2 list active databases--列出活动的数据库和连接数
TBL_TRANSACTION_TRACE_1

TBL_TRANSACTION_TRACE_2

GSP_EXCEPTION_TRACE_1

GSP_EXCEPTION_TRACE_2

7.表的创建、删除
  DROP TABLE TableName ;--删除表
  CREATE TABLE TableName
  ( 字段名 数据类型 ,
  PRIMARY KEY (字段名)
  )IN Space1 INDEX IN Space2 ;--创建表(表空间Space1存放数据,Space2存放索引)

  ALTER TABLE TableName VOLATILE CARDINALITY;--将表TableName设置为易失表

  db2 list tables ;
  db2 list tables FOR USER /ALL /system / SCHEMA SchemaName [show detail] ;
 --列出数据库中的表如果没有指定任何参数,则缺省情况是列出当前用户的表

  db2 describe TABLE TableName ; 

  db2 describe SELECT * FROM tables ;--查看表结构


8.索引的创建、删除
  DROP INDEX Index_Name ;--删除索引
  CREATE INDEX Index_Name ON TableName(F1) ;--对表TableNameF1字段创建索引Index_Name
  db2 describe indexes FOR TABLE TableName ;--查看表TableName的索引

  db2 describe indexes FOR TABLE TableName show detail;
  db2 SELECT INDNAME,COLNAMES FROM syscat.indexes WHERE tabname = 'TableName';

9.视图的创建、删除
  DROP VIEW ViewName ; --删除视图
  CREATE VIEW ViewName(×,××) AS SELECT ×,×× FROM TableName WHERE ×××;--创建视图

10.数据库的备份、恢复(详见浅谈IBM DB2的数据库备份与恢复一文)

--离线备份
  db2 force applications all--断开所有连接

  db2 force applicationh1,h2……--杀死与欲备份数据库相连接的进程
  db2 backup db DBName [to d:/db2_backup] [use TSM]--离线备份
  --在线、增量备份
 --前提:更改数据库参数 logretain, userexit, trackmod 为 on,之后数据库处于backup pending状态,要完全离线备份数据库一次,之后就可以进行在线、在线增量备份了。
  db2 update db cfg using logretain on userexit on trackmod on--启用相关参数

--归档路径
   DB2 UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 DISK:D:/DB2/  IMMEDIATE

 --LOGARCHMETH1参数改成TSM
    DB2 UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 TSM  IMMEDIATE
  db2 backup db DBName [to d:/db2_backup] [use TSM]--离线备份
  db2 backup db DBName online [to d:/db2_backup] [use TSM]--在线线备份
  db2 backup db DBName online incremental [to d:/db2_backup] [use TSM]--在线增量备份

--数据库恢复

db2 restore db DBname [incremental] [FROM d:/db2_backup][use TSM] taken AT YYYYMMDDHHMMSS

  --恢复 (时间戳记:YYYYMMDDHHMMSS)
  db2 list history backup [since YYYYMMDDHHMMSS] ALL FOR DBName

   --查看 [YYYYMMDDHHMMSS] DBName的备份情况
   db2 ROLLFORWARD DATABASE DBName TO END OF LOGS AND COMPLETE NORETRIEVE--将暂挂的数据恢复到前滚状态
  db2 ROLLFORWARD DATABASE DBName TO END OF LOGS AND COMPLETE OVERFLOW LOG PATH ("C:/DBName.0/SQLOGDIR")

  db2 CONNECT TO DBName
  db2 prune history YYYYMMDDHHMMSS--删除DBName YYYYMMDDHHMMSS之前的备份记录

11.数据的导出、导入
 --导出
  db2 EXPORT TO D:/TableName.txt OF del SELECT * FROM SCHEMA.TableName--文本格式

 db2 EXPORT TO D:/TableName.csv OF del SELECT * FROM SCHEMA.TableName--csv可转为excel
 db2 EXPORT TO D:/TableName.ixf OF ixf SELECT * FROM SCHEMA.TableName

 --导出数据(IXF 集成通用交换格式)
  db2 EXPORT TO "D:/TableName.data" OF IXF MESSAGES "D:/TableName.msg" SELECT * FROM SCHEMA.TableName;
  --导入
  db2 IMPORT FROM D:/TableName.txt OF del INSERT INTO SCHEMA.TableName
  db2 IMPORT FROM "D:/TableName.data" OF IXF [MESSAGES "D:/TableName.msg"] [COMMITCOUNT 1000] INSERT/CREATE  INTO SCHEMA.TableName;
  db2 IMPORT FROM "D:/TableName.ixf" OF IXF [COMMITCOUNT 1000] INSERT/INSERT_UPDATE/CREATE/REPLACE/REPLACE_CREATE INTO SCHEMA.TableName;

 IMPORT FROM file_name OF file_type MESSAGES message_file
  [ INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE | CREATE ]
  INTO target_table_name
 
  *INSERT 选项将导入的数据插入表中。目标表必须已经存在。
  *INSERT_UPDATE 将数据插入表中,或者更新表中具有匹配主键的行。目标表必须已经存在,并且定义了一个主键。
  *REPLACE 选项删除所有已有的数据,并将导入的数据插入到一个已有的目标表中。
  *使用 REPLACE_CREATE 选项时,如果目标表已经存在,则导入实用程序删除已有的数据,并插入新的数据,就像 REPLACE 选项那样。如果目标表还没有定义,那么首先创建这个表以及它的相关索引,然后再导入数据。正如您可能想像的那样,输入文件必须是 PC/IXF 格式的文件,因为那种格式包含对导出表的结构化描述。如果目标表是被一个外键引用的一个父表,那么就不能使用 REPLACE_CREATE
  *CREATE 选项首先创建目标表和它的索引,然后将数据导入到新表中。该选项惟一支持的文件格式是 PC/IXF。还可以指定新表所在表空间的名称(IN datatbsp INDEX IN indtbsp)

 

12.存储过程的编译与运行
  db2 -td@ -vf ProcedureName.sql/.db2--编译
  db2 call ProcedureName--运行

13.批处理文件
  db2 -tvf FileName.sql

14.快速清除、装入大表数据
  ALTER TABLE TableName activate NOT logged initially WITH empty TABLE ;--不记日志

  DECLARE C1 CURSOR FOR SELECT × × × × FROM TableName1;
  LOAD FROM C1 OF CURSOR INSERT INTO TableName2(××××) nonrecoverable;--不记日志

  DB2 LOAD QUERY TABLE SCHEMA.TableName;--查看目标表load状态(正在装入/正常)

15.优化表
  select 'runstats on table DB2ADMIN.'||rtrim(name)||' and indexes all;'
  from sysibm.systables
  where creator = 'DB2ADMIN' and Type = 'T';--获取优化语句

  db2 runstats on table DB2ADMIN.TableName and indexes all;--优化语句

16.应用连接
  db2 list application(s)[ FOR db DBName ] [show detail]--返回关于当前连接的应用程序的信息
  db2 force application (h1 [,h2,..,hn])--根据句柄号与特定应用程序断开连接
  db2 force application all --断开所有应用程序与数据库的连接
 db2 terminate --结束命令行对话

17. 设置联合数据库为可用(默认联合数据库不可用)
  db2 update dbm cfg using federated yes

18.创建临时表空间
  db2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE 'D:/DB2_TAB/STMASPACE.F1' 10000) EXTENTSIZE 256

19.创建临时表
  DECLARE GLOBAL TEMPORARY TABLE 语句来定义临时表。DB2的临时表是基于会话的,且在会话之间是隔离的。当会话结束时,临时表的数据被删除,临时表被隐式卸下。对临时表的定义不会在SYSCAT.TABLES中出现.
 eg:  DECLARE GLOBAL TEMPORARY TABLE SESSION.Temp_K_Cig (Cig varchar(20)) WITH REPLACE NOT LOGGED on commit preserve rows;

20.修改日志文件大小、数目
  db2 UPDATE DB CFG FOR DBName USINGLOGFILSIZ6000 ; --日志文件大小
  db2 UPDATE DB CFG FOR DBName USINGLOGPRIMARY5 ;--日志文件数目
  db2 UPDATE DB CFG FOR DBName USINGLOGSECOND25 ;--辅助日志文件数目

21.如何重新启动数据库?
 db2 RESTART DB DBName ;--重新启动数据库
 db2 ACTIVATE DB DBName ;--激活数据库
 db2 DEACTIVATE DB DBName ;--停止数据库

22.查看错误代码
 db2 ? SQL *** egDB2 ? SQL803
 db2 ? db2-command -- 关于指定命令的帮助
 db2 ? help--有关阅读帮助屏幕的指示信息
 db2 ? OPTIONS -- 关于所有命令选项的帮助

23.如何关闭表的日志
  ALTER TABLE TABLE_NAME ACTIVE NOT LOGGED INIALLY

24.测试SQL的执行性能
db2batch -d DB_NAME -f select.sql -r benchmark.txt -o p3 --select.sqlselect语句写在文件中

25.查看当前应用号的执行状态
db2 get snapshot for application agentid 299 |grep Row

26.如何修改缓冲池
db2 alter bufferpool ibmdefaultbp size 10240

27.如何知道DB2的数据类型
select * from  sysibm.sysdatatypes

28.如何知道BUFFERPOOLS状况
select * from  sysibm.sysbufferpools

29.查询出用户表
SELECT * FROM SYSIBM.SYSTABLES WHERE CREATOR='USER'

30.如何知道当前DB2的版本
select * from  sysibm.sysversions

31.如何知道TABLESPACE的状况
select * from  sysibm.SYSTABLESPACES

32."SQL1032N 未发出启动数据库管理器的命令。 SQLSTATE=57019"的解决办法
(1).License到期,在命令行下用 db2licm -l 查看是否到期;
(2).用来启动服务的用户名或密码错误,(如我们更改了登录系统的密码),解决办法(Windows系统):在控制面板->管理工具->服务中对相关DB2服务选项【属性】中修改【登录】的用户名或密码。

33.表空间、表大小计算

表空间:页大小(字节)*总页数
(1):runstats 之后,用select npages from syscat.tables where TABNAME='TableName'得到npages,再用npages×表空间页大小
       (2):在控制中心中,选择要查看的表,选择估计大小查看,索引大小同.

34。查看某模式下的表

db2list tables for schema <schema name>

or

all table information is stored in syscat.tables view
db2select * from syscat.tables where tabschema=<schema name>
or simply
db2select * from syscat.tables order by tabschema, tabname

similarly, all column information is stored in syscat.columns
db2select * from syscat.columns where tabname=<table name>

35.查看存储过程信息

SELECT * FROM SYSCAT.PROCEDURES;
--如查看DB2ADMIN模式下的存过名称、编号、建立时间等
SELECT PROCNAME,PROCEDURE_ID,CREATE_TIME,TEXT
FROM SYSCAT.PROCEDURES
where procschema='DB2ADMIN'

36.系统表中查看表、索引、表空间信息

--索引的名称、所属表、表空间
SELECT name,creator,tbname,tbcreator,colnames,colcount,tbspaceid,
       uniquerule,iid,create_time
FROM sysibm.sysindexes [WHERE NAME LIKE 'IDX_%'];
--索引信息
select * from sysibm.sysindexcoluse [where indname like 'IDX_%']

--表信息
SELECT name,creator,colcount,tbspace,index_tbspace,ctime
FROM sysibm.systables [WHERE NAME LIKE '%2007%'];

SELECT * FROM syscat.tables;
SELECT * FROM sysibm.systables ;

--表空间信息
SELECT * FROM sysibm.systablespaces;
SELECT * FROM syscat.tablespaces;

--查找数据库管理表空间(DMS
SELECT TBSpace FROM syscat.tablespaces WHERE TBSpaceType = 'D' ;

--视图信息
SELECT * FROM sysibm.sysviews;
--查看表的数据表空间、索引、索引表空间
SELECT c.TbName,c.tbspace,c.IndName,d.tbspace
FROM
    (SELECT a.NAME TbName,a.tbspace tbspace,b.NAME IndName,b.tbspaceid tbspaceid
     FROM sysibm.systables a,
         sysibm.sysindexes b
     WHERE a.name=b.tbname [AND  a.NAME LIKE 'K_%']
      ) AS c  LEFT JOIN sysibm.systablespaces d
on c.tbspaceid = d.tbspaceid ;


SELECT c.TbName 表名,c.tbspace 数据表空间,c.IndName 索引,d.tbspace 索引表空间
FROM
    (SELECT a.NAME TbName,a.tbspace tbspace,b.NAME IndName,b.tbspaceid tbspaceid
     FROM sysibm.systables a JOIN
         sysibm.sysindexes b
     on a.name=b.tbname [ AND a.NAME LIKE 'K_%' ]) AS c  LEFT JOIN sysibm.systablespaces d
on c.tbspaceid = d.tbspaceid ;

37.db2look 导出脚本信息

可用于导出表、索引、试图、存过、触发器等脚本,可在命令行下用db2look ?查看相应参数信息。
如:
db2look -d DBTEST -z DB2ADMIN -e  -c >db2look_db2admin.sql
db2look -d DBTEST -z DB2ADMIN -e  -c -o db2look_db2admin.sql
db2look -d DBTEST -z DB2ADMIN -i db2admin -w db2icss -e  -c - o db2look_db2admin.sql

在联合节点目录中编目节点条目

在联合节点目录中编目节点条目是将 DB2 系列数据源添加至联合服务器这一大型任务的一部分。

要指向 DB2 数据源所在的位置,在联合服务器的节点目录中编目一个条目。联合服务器使用此条目来确定连接至 DB2 数据源的正确存取方法。

过程 

要在联合节点目录中编目一个节点条目:

确定将使用的通信协议。

发出适当的命令来编目节点条目。 

如果通信协议为“传输控制协议/网际协议”(TCP/IP),则发出 CATALOG TCPIP NODE命令。 

例如:

CATALOG TCPIP NODE DB2NODE REMOTE SYSTEM42 SERVER DB2TCP42

DB2NODE 值是为正在编目的节点指定的名称。REMOTE SYSTEM42 是数据源所驻留的系统的主机名。SERVER DB2TCP42 是服务器数据库管理器实例的服务名称或主端口号。如果使用了服务名称,则它是区分大小写的。

如果通信协议为 SNA,则发出 CATALOG APPC NODE命令。 

例如:

CATALOG APPC NODE DB2NODE REMOTE DB2CPIC SECURITY PROGRAM

DB2NODE 值是为正在编目的节点指定的名称。REMOTE DB2CPIC 是远程伙伴节点的 SNA 伙伴逻辑单元(LU)名。SECURITY PROGRAM 指定用户名和密码都将包括在发送给伙伴 LU 的分配请求中。

在这一系列任务中的下一个任务是在联合系统数据库目录中编目远程数据库。

在联合系统数据库目录中编目远程数据库

在联合系统数据库目录中编目远程数据库是将 DB2 系列数据源添加至联合服务器这一大型任务的一部分。

通过在联合服务器系统数据库目录中编目远程数据库来指定联合服务器将连接至哪个 DB2 数据源数据库。

过程 

要在联合服务器系统数据库目录中编目远程数据库:

使用“客户机配置助手”(CCA)。 

对于 UNIX 上的联合服务器,可以通过另一种方法来使用 CATALOG DATABASE命令。例如:

 CATALOG DATABASE DB2DB390 AS CLIENTS390 AT NODE DB2NODE AUTHENTICATION DCS

值 DB2DB390 是您在联合服务器系统数据库目录中正在编目的远程数据库的名称。AS CLIENTS390 是正在编目的数据库的别名。如果未指定别名,则数据库管理器使用数据库名称(例如,DB2DB390)作为别名。AT NODE DB2NODE 是在节点目录中对节点条目进行编目时所指定的节点的名称。AUTHENTICATION SERVER 指定在 DB2 数据源节点上进行认证。

如果远程数据库的名称超过了八个字符,则必须通过发出 CATALOG DCS DATABASE命令来创建 DCS 目录条目。例如: 

CATALOG DCS DATABASE SALES400 AS SALES_DB2DB400

值 SALES400 是要编目的远程数据库的别名。此名称应当跟与远程节点相关联的联合服务器系统数据库目录中的一个条目的名称相匹配。它就是您在 CATALOG DATABASE命令中输入的同一名称。AS SALES_DB2DB400 是想要编目的目标主机数据库的名称。

在这一系列任务中的下一个任务是注册 DB2 包装器。

注册 DB2 包装器

注册 DB2 包装器是将 DB2 系列数据源添加至联合服务器这一大型任务的一部分。

必须注册包装器才能存取 DB2 系列数据源。联合服务器使用包装器来与数据源通信以及从数据源中检索数据。包装器是作为一组库文件实现的。

过程 

要注册包装器,发出 CREATE WRAPPER 语句并指定包装器的缺省名称。

例如:

CREATE WRAPPER DRDA

建议:使用称为 DRDA 的缺省包装器名称。当您使用缺省名称来注册包装器时,联合服务器将自动采用与该包装器名称相关联的缺省库名。

如果包装器名称与联合数据库中的现有包装器名称相冲突,则可以将缺省包装器名称替代为您选择的名称。如果您使用一个不同于缺省名称的名称,则在 CREATE WRAPPER 语句中必须包括 LIBRARY 参数。

例如,要在使用 AIX 操作系统的联合服务器上注册一个名称为 db2_wrapper 的包装器,请发出以下语句:

CREATE WRAPPER db2_wrapper LIBRARY 'libdb2drda.a'

您指定的包装器库文件的名称取决于联合服务器的操作系统。

CREATE SERVER 语句 - DB2 包装器的示例

此主题提供了几个示例来说明如何使用 CREATE SERVER 语句来为 DB2 系列数据源上的包装器注册服务器。此主题包括一个完整的示例,该示例说明如何使用所有必需的参数来创建服务器,它还包括一个带有可选的服务器选项的示例。

完整示例:

以下示例说明了如何使用 CREATE SERVER 语句来为 DB2 包装器创建服务器定义:

CREATE SERVER DB2SERVER TYPE DB2/ZOS VERSION 6 WRAPPER DRDA

       AUTHORIZATION "spalten" PASSWORD "db2guru" 

        OPTIONS (DBNAME 'CLIENTS390')

DB2SERVER

为 DB2 数据库服务器指定的名称。此名称必须是唯一的。不允许存在重复的服务器名。

TYPE DB2/ZOS

指定正在对其配置存取的数据源服务器的类型。

VERSION 6

想要访问的 DB2 数据库服务器的版本。

WRAPPER DRDA

在 CREATE WRAPPER 语句中指定的名称。

AUTHORIZATION "spalten"

数据源中的授权标识。此标识在数据源中必须具有 BINDADD 权限。此值是区分大小写的。

PASSWORD "db2guru"

与数据源中的授权标识相关联的密码。此值是区分大小写的。

DBNAME 'CLIENTS390'

想要存取的 DB2 数据库的别名。此别名是在您使用 CATALOG DATABASE命令对数据库进行编目时定义的。此值是区分大小写的。 

对于 DB2 数据源,此数据库名称是必需的。

服务器选项示例:

当您注册服务器定义时,可以在 CREATE SERVER 语句中指定更多服务器选项。这些选项包括一般的服务器选项和特定于 DB2 数据源的服务器选项。

以下示例说明了具有 CPU_RATIO 选项的服务器定义。

CREATE SERVER DB2SERVER TYPE DB2/ZOS VERSION 6 WRAPPER DRDA

       AUTHORIZATION "spalten" PASSWORD "db2guru" 

        OPTIONS (DBNAME 'CLIENTS390', CPU_RATIO '0.001')

如果将 CPU_RATIO 选项设置为“0.001”,则它指示远程数据源中的 CPU 可用容量是联合服务器的 1000 倍。

CREATE USER MAPPING 语句 - DB2 包装器的示例

此主题提供了一些示例来说明如何使用 CREATE USER MAPPING 语句来将本地用户标识映射至 DB2 服务器用户标识和密码。此主题包括一个具有所有必需参数的完整示例,还包括一个说明如何将 DB2 专用寄存器 USER 与 CREATE USER MAPPING 语句配合使用的示例。

完整示例:

以下示例说明了如何将本地用户标识映射至 DB2 服务器用户标识:

CREATE USER MAPPING FOR DB2USER SERVER DB2SERVER 

       OPTIONS (REMOTE_AUTHID 'db2admin', REMOTE_PASSWORD 'day2night')

DB2USER

指定您正在映射至在 DB2 系列数据源服务器中定义的用户标识的本地用户标识。

SERVER DB2SERVER

指定您在 CREATE SERVER 语句中定义的 DB2 系列数据源服务器的名称。

REMOTE_AUTHID 'db2admin'

指定您正在将 DB2USER 映射所至的 DB2 系列数据源服务器中的连接授权用户标识。使用单引号来保留此值的大小写(除非您在 CREATE SERVER 语句中将 FOLD_ID 服务器选项设置为 'U' 或 'L')。

REMOTE_PASSWORD 'day2night'

指定与 'db2admin' 相关联的密码。使用单引号来保留此值的大小写(除非您在 CREATE SERVER 语句中将 FOLD_PW 服务器选项设置为 'U' 或 'L')。

专用寄存器示例: 

以下是一个包括专用寄存器 USER 的 CREATE USER MAPPING 语句的示例:

CREATE USER MAPPING FOR USER SERVER DB2SERVER 

       OPTIONS (REMOTE_AUTHID 'db2admin', REMOTE_PASSWORD 'day2night')

可以使用 DB2 专用寄存器 USER 来将正在发出 CREATE USER MAPPING 语句的人员的授权标识映射至在 REMOTE_AUTHID 用户选项中指定的数据源授权标识。

CREATE NICKNAME 语句 - DB2 包装器的示例

此主题提供了一个示例来说明如何使用 CREATE NICKNAME 语句来为您想存取的 DB2 表或视图注册昵称。

以下示例显示了一个 CREATE NICKNAME 语句:

CREATE NICKNAME DB2SALES FOR DB2SERVER.SALESDATA.EUROPE

DB2SALES

用来标识 DB2 表或视图的唯一昵称。 

:昵称是一个由两部分组成的名称,它包括模式和昵称。如果在注册昵称时省略了模式,则昵称的模式将为创建该昵称的用户的授权标识。

DB2SERVER.SALESDATA.EUROPE

远程对象的由三部分组成的标识: 

DB2SERVER 是您在 CREATE SERVER 语句中为 DB2 数据库服务器指定的名称。

SALESDATA 是表或视图所属于的远程模式的名称。此值是区分大小写的。

EUROPE 是您想存取的远程表或视图的名称。

DB2联合数据库(Federated Database)配置实例

文章出处:DIY部落(http://www.diybl.com/course/7_databases/db2/2008531/118360.html)

使用DB2联合数据库,您可以使用一条SQL语句查询多个数据源中的数据。奇妙的是,这些数据源可以多种多样:即可以是多种关系数据库系统,也可以是非关系数据库系统,比如Microsoft Excelxml等。本文将首先探讨多个关系数据库之间的联合访问。

动手配置一个简单的联合数据库实例来培养一下您的成就感,这样可以为您理解联合数据库所设计的概念及繁多的参数选项增加一点信心。我一向喜欢这种文章风格,我相信很多人也会喜欢的。

要进行下面的试验,您必须先安装DB2 v8.2 ESE (Enterprise Server Edition) for WindowsDB2的安装不是本文的讨论范围。

假如您的DB2已经安装好了,那就开始吧。

1) 使用windows管理员权限的用户登陆windows,笔者用的是Administrator

2) 为了完成下面的演示,您还需要另外一个windows用户,笔者使用安装DB2的时候自动创建的db2admin用户。您当然也可以使用其他windows用户。

3) 确保您已经创建了至少一个可用的实例。笔者使用缺省创建的DB2实例。您可以通过在命令窗口运行DB2START命令来启动这个实例

4) DB2命令窗口运行DB2 GET DBM CFG 来查看当前实例的配置参数,并确保FEDERATED参数设置为YES,您可以通过运行DB2 UPDATE DBM CFG USING FEDERATED YES来设置这个参数。修改这个参数后,必须重新启动实例才会生效(DB2STOP/DB2START

5) 却保您已经创建了DB2样本数据库SAMPLE,如果您还没有创建,可以通过在DB2命令行窗口运行db2sampl命令来创建它。此样本数据库包含了一些样本表和数据,使用这个数据库作演示可以使我们节省一点时间。

6) 创建另外一个数据库,笔者使用名字TESTDB:

   DB2 CREATE DB TESTDB

7) 运行DB2CE命令打开DB2命令编辑器,并在这儿完成下面的步骤。

8) 连接到sample数据库,并创建DRDA包装器(WRAPPER).

   CONNECT TO SAMPLE;

   CREATE WRAPPER DRDA;

9) 创建服务器(SERVER)

CREATE SERVER TESTDB TYPE DB2/UDB VERSION '8.2' WRAPPER "DRDA" AUTHID "db2admin" PASSWORD "db2admin" OPTIONS( ADD DBNAME 'TESTDB', PASSWORD 'Y');

10) 创建用户映射

CREATE USER MAPPING FOR "ADMINISTRATOR" SERVER "TESTDB" OPTIONS ( ADD REMOTE_AUTHID 'db2admin', ADD  REMOTE_PASSWORD 'db2admin') ;

11) 使用db2admin用户连接到TESTDB数据库、创建表WORKITEM、并插入样本数据。

CONNECT TO TESTDB USER db2admin USING db2admin;

CREATE TABLE WORKITEM (

ITEMNO CHAR(4) NOT NULL,

ITEMNAME VARCHAR(50) NOT NULL,

EMPNO CHAR(6),

PRIMARY KEY (ITEMNO)

);

INSERT INTO WORKITEM(ITEMNO,ITEMNAME,EMPNO) VALUES ('0001','测试程序模块1','000010');

INSERT INTO WORKITEM(ITEMNO,ITEMNAME,EMPNO) VALUES ('0002','完成模块2的开发','000020');

INSERT INTO WORKITEM(ITEMNO,ITEMNAME,EMPNO) VALUES ('0003','联系客户A','000030');

12) 连接到SAMPLE数据库,并为TESTDB数据库中的WORKITEM表创建昵称:

CONNECT TO SAMPLE;

CREATE NICKNAME ADMINISTRATOR.WORKITEM FOR TESTDB.DB2ADMIN.WORKITEM;

13) OK,现在我们就可以在SAMPLE数据库中使用TESTDB数据库中的WORKITEM表了,而且还可以和SAMPLE数据库的EMPLOYEE表联合查询:

    SELECT * FROM WORKITEM;

    我们来查询由谁来负责哪个工作项目:

    SELECT A.ITEMNO,A.ITEMNAME,A.EMPNO,B.FIRSTNME,B.LASTNAME FROM WORKITEM A LEFT OUTER JOIN EMPLOYEE B ON A.EMPNO=B.EMPNO;

    到此为止,SAMPLE数据库就已经变成了联合数据库,您通过在SAMPLE数据库中为TESTDB数据库中的表或视图创建昵称来访问他们,很好玩吧。:)

文章出处:DIY部落(http://www.diybl.com/course/7_databases/db2/2008531/118360.html)

//////////////////////////////////////////////////////////////////////

DB2AIX server上转移(迁移)linux


首先说一下大致情况,就是目前生产环境(AIX server)上边有一数据库 product,现在想迁移到本地做一下测试环境,由于本地服务器只是linux server所以,不可以直接的用backup restore恢复。需要用db2lookdb2move配合一下来实现迁移过程,本操作适用于各类操作系统之间的迁移.
  首先这些在Aix服务器上做
  1. db2lookaix上的product数据库的DDL语句导出来.
  db2look -d product-a -e -o product.sql
  输出结果是:
  aix:/home/db2inst1$ db2look -d product-a -e -o product.sql
  -- Generate statistics for all creators
  -- Creating DDL for table(s)
  -- Output is sent to file: product.sql
  2.db2move 命令导出ixfmsg文件
  db2move pdm export
  屏幕输出类似如下信息
  ***** DB2MOVE *****
  Action: EXPORT
  Start time: Tue Mar 11 01:26:43 2008
  Connecting to database PRODUCT... successful! Server: DB2 Common Server V8.2.1
  EXPORT: 4 rows from table "PROCORE "."PLAN_MASTER"
  EXPORT: 3 rows from table "PROCORE "."PERIOD_MASTER"
  EXPORT: 3849 rows from table "PROCORE "."PLAN_OBJ"
  EXPORT: 26176 rows from table "PROCORE "."REGION"
  EXPORT: 340 rows from table "PROCORE "."CTY_MASTER"
  系统执行完之后会生成一堆.ixf .msg文件
  3. 在本机或目标机(linux) 上建立一个目录如productproduct.sql和上步产生的文件都ftp过来.
  ftp servername
  bin
  prompt off
  mget *
  close
  quit
  即可
  4.在本地新建一数据库可以原aix数据库同名如product
  CREATE DATABASE "PRODUCT"
  ON '/home/db2inst1/'
  ALIAS "PRODUCT"
  USING CODESET ISO8859-1
  TERRITORY US
  COLLATE USING Compatibility
  NUMSEGS 1
  DFT_EXTENT_SZ 32;
  5. 建立本数据库的所有表,用第一步生成的DDL语句来生成
  db2 vtf product.sql
  6. 最后一步,导入所有数据
  db2move product import
  注意:此命令要在第三小download下来的那些文件(*.ixf *.msg)所在的目录中执行
  测试一下db2 connect to product;
  如果看到成功信息,db2数据库从aix迁移到linux上边就成功了。

创建逻辑卷 vgmydatabas

mkvg -s 128 -y vgmydatabase hdisk1 hdisk2 hdisk3 hdisk4 hdisk5                   

在逻辑卷 vgmydatabase 上创建逻辑分区

mklv -t jfs -U inst64 -y mydatabase_DR_S   vgmydatabase  16384M hdisk1 hdisk2 hdisk3 hdisk4 hdisk5                   

mklv -t jfs -U inst64 -y mydatabase_DI_S   vgmydatabase  8192M hdisk1 hdisk2 hdisk3 hdisk4 hdisk5                   

mklv -t jfs -U inst64 -y mydatabase_DR_L   vgmydatabase  24576M hdisk1 hdisk2 hdisk3 hdisk4 hdisk5                   

mklv -t jfs -U inst64 -y mydatabase_DI_L   vgmydatabase  16384M hdisk1 hdisk2 hdisk3 hdisk4 hdisk5                   

mklv -t jfs -U inst64 -y mydatabase_DL     vgmydatabase  16384M hdisk1 hdisk2 hdisk3 hdisk4 hdisk5                   

mklv -t jfs -U inst64 -y mydatabase_DR_XL  vgmydatabase  32768M hdisk1 hdisk2 hdisk3 hdisk4 hdisk5                   

mklv -t jfs -U inst64 -y mydatabase_DI_XL  vgmydatabase  16384M hdisk1 hdisk2 hdisk3 hdisk4 hdisk5                   

创建实例用户名inst64,组名grp64,受保护的用户名fenc64,组名fgrp64

mkgroup  grp64

mkgroup  fgrp64

注意实例用户的缺省目录,空间要充足

useradd -g grp64 -d /dbdata_B/mydatabase -m inst64

useradd -g fgrp64 -m fenc64

usermod -G grp64 mydatabaseadm

/usr/opt/db2_08_01/instance/db2icrt -a SERVER_ENCRYPT -s ese -u fenc64 -w 64 -p 50000 inst64

检查/etc/services末尾,如果没有端口对应,需要手工添加

# vi /etc/services

设置DB2环境变量

db2set DB2CODEPAGE=1386

db2set DB2COUNTRY=CN

# DBM参数设置

db2 "update dbm cfg using RESTBUFSZ 10240"

db2 "update dbm cfg using SHEAPTHRES 100000"

创建数据库mydatabase

db2 create db mydatabase using codeset gbk territory cn pagesize 8 k

设置缓冲池

db2 connect to mydatabase user mydatabaseadm using mydatabasepass

db2 CREATE BUFFERPOOL MYDBCACHE  IMMEDIATE SIZE 131072 PAGESIZE 8192

db2 CREATE BUFFERPOOL MYDBRANDOM IMMEDIATE SIZE 262144 PAGESIZE 8192

设置数据库参数

db2 "connect to mydatabase user XXX using XXX"

db2 "update db cfg using DBHEAP  25000"

            .

     

db2 "connect  reset"

db2stop 

db2start

db2 "connect to mydatabase user XXX using XXX" 

建立表空间

db2 "create tablespace mydatabase_DR_S  pagesize 8k managed by database using (device '/dev/rmydatabase_DR_S ' 2097152 ) bufferpool MYDBCACHE"

db2 "create tablespace mydatabase_DI_S  pagesize 8k managed by database using (device '/dev/rmydatabase_DI_S ' 1048576 ) bufferpool MYDBCACHE"

db2 "create tablespace mydatabase_DR_L  pagesize 8k managed by database using (device '/dev/rmydatabase_DR_L ' 3145728 ) bufferpool MYDBRANDOM"

db2 "create tablespace mydatabase_DI_L  pagesize 8k managed by database using (device '/dev/rmydatabase_DI_L ' 2097152 ) bufferpool MYDBRANDOM"

db2 "create  large  tablespace mydatabase_DL pagesize 8k managed by database using (device '/dev/rmydatabase_DL' 2097152 ) bufferpool MYDBRANDOM"

db2 "create tablespace mydatabase_DR_XL1 pagesize 8k managed by database using (device '/dev/rmydatabase_DR_XL1' 4194304 ) bufferpool MYDBRANDOM" 

db2 "create tablespace mydatabase_DI_XL1 pagesize 8k managed by database using (device '/dev/rmydatabase_DI_XL1' 2097152 ) bufferpool MYDBRANDOM"

贴子来源Diy部落(http://bbs.diybl.com) 详细出处参考:http://bbs.diybl.com/dview33t7446.html