2012年4月26日 星期四

DB2的常用命令


介紹一些DB2的常用命令,希望對初學者有幫助。
1
.啟動資料庫
      db2start
2
.停止資料庫
      db2stop
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 MODE ASYNC
      (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
19select * from czyxx fetch first 1 rows only
20db2look –d ylbx –u db2admin –w –asd –a –e –o a.txt21.
顯示當前使用者所有表
  list tables
22.
列出所有的系統表
  list tables for system
23.
查看表結構
  db2 describe select * from user.tables

db2資料庫創建的完整過程

 二、windows下面創建的完整過程
db2set db2codepage=819
db2 create database test03 
db2 connect to test03 user db2amdin using 1
db2 CREATE Bufferpool USER8 SIZE 100000 PAGESIZE 8K 
db2 CREATE Bufferpool USER16 SIZE 1000 PAGESIZE 16 K 
db2 CREATE Bufferpool USER32 SIZE 1000 PAGESIZE 32 K 
db2stop force 
db2start
db2 connect to test03 user easymis using easymis
db2 "CREATE REGULAR TABLESPACE TS_USER8 PAGESIZE 8K MANAGED BY SYSTEM USING ('FSMS_8K_1') BUFFERPOOL USER8"
db2 "CREATE REGULAR TABLESPACE TS_USER16 PAGESIZE 16K MANAGED BY SYSTEM USING ('FSMS_16K_1') BUFFERPOOL USER16"
db2 "CREATE REGULAR TABLESPACE TS_USER32 PAGESIZE 32K MANAGED BY SYSTEM USING ('FSMS_32K_1') BUFFERPOOL USER32"
db2 GRANT  DBADM,CREATETAB,BINDADD,CONNECT ON DATABASE  TO USER EASYMIS
db2 GRANT  DBADM,CREATETAB,BINDADD,CONNECT,LOAD ON DATABASE  TO USER EASYMIS
db2 connect to test03 user easymis using easymis
db2 -f dbstruct.sql >kk.log
用配置助手增加odbccli的命令,並且將使用者密碼配置進去
odbctool將資料一次性載入到資料庫中。
配置jdbc連接
直接使用jcc方式能夠使用。
   <property name="dialect">org.hibernate.dialect.DB2Dialect</property>
   <property name="connection.driver_class">com.ibm.db2.jcc.DB2Driver</property>
   <property name="connection.username">easymis</property>
   <property name="connection.password">1</property>
   <property name="connection.url">jdbc:db2://192.168.20.249:50000/test03</property>
如果採用app方式,需要將db2java.zip修改成db2java.jar
db2jdbcbind -url jdbc:db2://192.168.20.249:50000/test03 -user easymis -password 1 
   <property name="dialect">net.sf.hibernate.dialect.DB2Dialect</property>
   <property name="connection.driver_class">COM.ibm.db2.jdbc.app.DB2Driver</property>
   <property name="connection.username">easymis</property>
   <property name="connection.password">1</property>
   <property name="connection.url">jdbc:db2:test03</property>
--------------------------------------------------------------------------------------
三、aix下面創建過程
aix
下面創建完整的過程
db2set db2codepage=819
db2 create database easytest on /home/db2inst1 
db2 connect to test04 user db2inst1 using db2
db2 CREATE Bufferpool USER8 SIZE 100000 PAGESIZE 8K 
db2 CREATE Bufferpool USER16 SIZE 1000 PAGESIZE 16 K 
db2 CREATE Bufferpool USER32 SIZE 1000 PAGESIZE 32 K 
db2stop force 
db2start
db2 connect to test04 user db2inst1 using db2
db2 "CREATE REGULAR TABLESPACE TS_USER8 PAGESIZE 8K MANAGED BY SYSTEM USING ('FSMS_8K_1') BUFFERPOOL USER8"
db2 "CREATE REGULAR TABLESPACE TS_USER16 PAGESIZE 16K MANAGED BY SYSTEM USING ('FSMS_16K_1') BUFFERPOOL USER16"
db2 "CREATE REGULAR TABLESPACE TS_USER32 PAGESIZE 32K MANAGED BY SYSTEM USING ('FSMS_32K_1') BUFFERPOOL USER32"
db2 CREATE Bufferpool TMPBUF8 SIZE 10000 PAGESIZE 8K 
db2 "CREATE  TEMPORARY  TABLESPACE TempTS_USER8 PAGESIZE 8K  MANAGED BY SYSTEM  USING ('/home/db2inst1/db2inst1/TEMPNODE0004'  )  EXTENTSIZE 16 OVERHEAD 10.5 PREFETCHSIZE 16 TRANSFERRATE 0.14 BUFFERPOOL "TMPBUF8" DROPPED TABLE RECOVERY OFF"
db2 GRANT  DBADM,CREATETAB,BINDADD,CONNECT,LOAD ON DATABASE  TO USER EASYMIS
db2 GRANT USE OF TABLESPACE TS_USER8 TO easymis
db2 GRANT USE OF TABLESPACE TS_USER16 TO easymis
db2 GRANT USE OF TABLESPACE TS_USER32 TO easymis
db2 connect to test04 user easymis using easymis
db2 -f dbstruct.sql >kk.log

設置堆空間大小
DB2  UPDATE  DB  CFG  FOR  DBNAME  USING  APPLHEAPSZ  512
四、資料庫導入匯出
1
、資料庫卸載
db2move test04 EXPORT 
db2look -d easytest -e -a -o easytest.sql
test04.sql中的視圖部分截出來view.sql
2、資料庫裝載
db2move easytest import -l /home/db2inst1/wk/test04
db2 -tvf db2look.sql

3
、資料庫整體移植過程。
五、用戶端安裝
用戶端綁定(v8
sqllib/bin: db2jdbcbind -url jdbc:db2://192.168.20.249:50000/easyccp -user easymis -password 1

六、常用命令:
1. LIST DATABASE DIRECTORY:列出所有的實例
db2 list database directory | pg
2
連接資料庫
db2 “connect to test04 user easymis using easymis”
斷開連接
db2 connec reset
2.
停止db2
db2 terminate
db2stop force
db2 stop database manager
3.
啟動db2
db2start
4.
連接db2實例  db2 connect to 資料庫別名  user 使用者  using 密碼
5.
列出db2實例名:db2ilist
6.
查看db2的遠端、本地字元集
db2 -a connect to  easyoa4
7.
設置當前的schema
db2 set schema=easymis
8.
設置字元集
    db2set db2codepage=819  
英文, 1386對應GBK
9. db2 -f wk.sql  
執行一個sql語句
10  db2 GET DATABASE MANAGER CONFIGURATION獲取db2的系統資訊。
11   drop database test04
12   刪除表空間、刪除緩衝集區
db2 drop tablespace TS_USER32
db2 drop bufferpool USER32
12
   查詢錯誤的方式
db2  ?  sql0102
1、首先,查看需要使用的實例資料庫有哪些:
db2ilist  
查看實例
db2 list database directory | pg  
查看實例上面的所有資料庫
2drop資料庫的命令
db2 drop database
資料庫名
3、在aix環境上創建空資料庫(資料庫名不能夠超過8個字元)
查看環境變數 db2set
如果發現db2setdb2codepage不是819,執行  db2set db2codepage=819 
db2 create database test05 on /home/db2inst1 
db2 connect to test05 user db2inst1 using db2
#創建對應pagesize大小的緩衝集區和表空間
db2 CREATE Bufferpool USER8 SIZE 1000 PAGESIZE 8K 
db2 CREATE Bufferpool USER16 SIZE 1000 PAGESIZE 16 K 
db2 CREATE Bufferpool USER32 SIZE 1000 PAGESIZE 32 K 
db2stop force   (
可以先用:db2stop db2 terminate進行停止) 
db2start
db2 connect to test05 user db2inst1 using db2
db2 "CREATE REGULAR TABLESPACE TS_USER8 PAGESIZE 8K MANAGED BY SYSTEM USING ('FSMS_8K_1') BUFFERPOOL USER8"
db2 "CREATE REGULAR TABLESPACE TS_USER16 PAGESIZE 16K MANAGED BY SYSTEM USING ('FSMS_16K_1') BUFFERPOOL USER16"
db2 "CREATE REGULAR TABLESPACE TS_USER32 PAGESIZE 32K MANAGED BY SYSTEM USING ('FSMS_32K_1') BUFFERPOOL USER32"
#創建臨時表空間(用於緩衝查詢結果或者臨時表)
db2 CREATE Bufferpool TMPBUF8 SIZE 10000 PAGESIZE 8K 
db2 "CREATE  TEMPORARY  TABLESPACE TempTS_USER8 PAGESIZE 8K  MANAGED BY SYSTEM  USING ('/home/db2inst1/db2inst1/TEMPNODE0005'  )  EXTENTSIZE 16 OVERHEAD 10.5 PREFETCHSIZE 16 TRANSFERRATE 0.14 BUFFERPOOL "TMPBUF8" DROPPED TABLE RECOVERY OFF"
#給相關用戶付許可權
db2 GRANT  DBADM,CREATETAB,BINDADD,CONNECT,LOAD ON DATABASE  TO USER EASYMIS
db2 GRANT USE OF TABLESPACE TS_USER8 TO easymis
db2 GRANT USE OF TABLESPACE TS_USER16 TO easymis
db2 GRANT USE OF TABLESPACE TS_USER32 TO easymis
#開始創建表、創建(這種方式是直接創建表、視圖的方式,如果採用db2move的方式,那麼則不需要)
db2 connect to test05 user easymis using easymis
db2 -f dbstruct.sql >crttab.log
db2 -f view.sql  >crtviw.log
#恢復db2move備份的資料庫(備份的過程參見後面的db2move的說明)
db2move test05 import -l /home/db2inst1/wk/test04
db2 -tvf view.sql >crtview.log    #
如果腳本是db2look,命令結束符為分號,行結束無特殊符號
db2  UPDATE  DB  CFG  FOR  easytest  USING  APPLHEAPSZ  1024

4
、對陽江資料庫做一個備份,便於恢復。
一、informixdb2的區別
informixdb2
1
、視圖的修改:DATE函數不能夠使用,可以拿來做比較
2
NVL函數不能夠使用,COALESCE
3
TODAY  對應 CURRENT DATE
4
DATE函數的用法相同
5
、資料類型不同不能夠相等。v_tjfx_gxck,  總帳的科目好為整型, char()函數進行轉換
6
db2 7.2版本 blob欄位必須要有長度。
7
、日期天數的差異要用 days(日期2)-days(日期1)
發現value欄位存在在BP_PROCESSDATA中。
SPOOL
表的MESSAGE_BODY  blob欄位,blob欄位的大小需要限制。需要手工增加大小
INBOXES
表的MESSAGE_BODY
S_PRINTCFG
1、欄位類型對應
  1
char全部換成varchar
  2
datetime year to second date  timestamp
  3)decimal
不能夠超過30
  4) byte
blob
 

應用移植到db2 v8.2的內容:
1
、將對應版本的db2jdbc驅動拷貝到應用的lib目錄。
2
、修改ptconfig.xml中的
   CHARACTERSET
ISO8859-1
   <DRIVER>com.ibm.db2.jcc.DB2Driver</DRIVER>
     <URL>jdbc:db2://192.168.20.249:50000/easyccp</URL>
<DBTYPE>db2</DBTYPE>
<CONNECTTYPE>1</CONNECTTYPE>