2012年4月26日 星期四

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>

沒有留言: