在linux下安装db2全过程
一、db2安裝:
有兩種安裝方式:命令和圖形界面。
圖形界面安裝(可以root用戶操作):
1、在ibm網(wǎng)站上下載db2安裝包v9.7_linuxxia3_2_server.tar.gz
2、用tar??-zxvf??v9.7_linuxxia3_2_server.tar.gz?命令解壓
3、用cd命令回到解壓了的文件夾里,運(yùn)行./db2setup,啟動(dòng)安裝過程(可以在任意的用戶下安裝):
截圖如下:
二、使用創(chuàng)建數(shù)據(jù)庫gspsdb:
4、用命令創(chuàng)建用戶和添加密碼:useradd?gspirr
?????????????????????????????passwd?gspirr
5、在root下創(chuàng)建實(shí)例gspirr:(當(dāng)然在安裝時(shí)候也可以創(chuàng)建實(shí)例)
[root@localhost6:/opt/ibm/db2/instance]#??./db2icrt??-p?61002??-u??gspirr?gspirr
其中/opt/ibm/db2/instance是db2的安裝路徑,
-p??用來指定服務(wù)名稱(也可以不指定,由系統(tǒng)自行設(shè)定,在/etc/services中可以查看)
-u??表示將用來運(yùn)行受防護(hù)用戶定義的函數(shù)(UDF)和受防護(hù)存儲(chǔ)過程的用戶的名稱(可以隨意設(shè)定)。指定您創(chuàng)建的受防護(hù)用戶的名稱。
6、啟動(dòng)/停止實(shí)例gspirr:
????Su?gspirr
Db2start
Db2stop
7、查看/設(shè)置gspirr配置:
Db2set?-all?
顯示:
[i]?DB2COUNTRY=86
[i]?DB2COMM=TCPIP
[i]?DB2CODEPAGE=1386
[g]?DB2SYSTEM=localhost6.localdomain6
[g]?DB2INSTDEF=db2inst1
[g]?DB2ADMINSERVER=dasusr1
?可以用命令db2set?設(shè)置配置:
????db2set?db2country=86
????db2set?db2codepage=1386
db2set?DB2COMM=TCPIP
db2set?DB2AUTOSTART=YES?(設(shè)置db2自動(dòng)隨linux啟動(dòng))
備注: 設(shè)置服務(wù)端口
輸入db2命令,進(jìn)入db2命令行模式
update?database?manager?configuration?using?svcename?server1|50000
server1|50000兩者選其一,server1|為服務(wù)名,50000為端口號(hào)
get?database?manager?configuration;
????為了打開?DB2?Control?Center,記得要以?root?用戶發(fā)出?xhost?+,如xhostlocal:db2,以添加對(duì)?X?Server?的訪問權(quán)限。然后,以實(shí)例所有者身份重新登錄,并啟動(dòng)?DB2?Control?Center;
用戶可以使用以下幾種方法來運(yùn)行命令編輯器:在操作系統(tǒng)CLP中輸入db2ce命令。
使用LIST?DATABASE?DIRECTORY命令查看系統(tǒng)數(shù)據(jù)庫目錄的內(nèi)容
8、在gspirr里創(chuàng)建數(shù)據(jù)庫gspsdb:
???Db2start
???Db2?"CREATE?DATABASE?gspsdb?ON?'/GSPMM/db2data'?USING?CODESET?GBK?TERRITORY?CN"
9|、創(chuàng)建緩沖池:
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、創(chuàng)建表空間:
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、批量建表并導(dǎo)入數(shù)據(jù):
???Su?gspirr
???Db2?connect?to?gspsdb
???Sh??crttbl.sh
???Sh??insert.sh
??其中crttbl.sh內(nèi)容如下:
?????db2?connect?to?gspsdb
??????for?i?in?`ls?*sql`
????????do
????????echo?"====[$i]===="
????????db2?-tf??$i
????????done
?????db2?disconnect?current
???其中insert.sh內(nèi)容如下:
??????db2?connect?to?gspsdb
????????for?i?in?`ls?*sql`
??????????do
?????????????echo?"====[$i]===="
??????????db2??-tf??$i
??????????done
??????db2?disconnect?current
三、配置客戶端連接gspsdb:
12、gspsdb端配置:
???db2?list?db?directory??//查看已經(jīng)建好的所有的數(shù)據(jù)庫
???db2?list?db?directory?show?detail
??1)驗(yàn)證實(shí)例使用的通訊協(xié)議,查看DB2COMM變量(tcp/ip)
?????db2set?-all
??2)查看數(shù)據(jù)庫管理器的配置,查看SVCENAME(特指tcpip協(xié)議)
db2?get?dbm?cfg?|grep??-?i??SVCENAME
顯示:
?TCP/IP?Service?name??????(SVCENAME)?=?61002
?SSL?service?name?????????(SSL_SVCENAME)?=
?3)查看/etc/services中,有無與上面對(duì)應(yīng)SVCENAME的端口,例如:
????db2cDB2???50000/tcp
運(yùn)行Vi?services?,?添加:db2_gspirr???61002/tcp
??4)要確認(rèn)服務(wù)器是否在監(jiān)聽,可以用netstat?-an?來查看端口是否處于LISTEN狀態(tài)
[gspirr@?~]$??netstat??-na?|?grep??61002
tcp????????0??????0?0.0.0.0:61002???????????????0.0.0.0:*???????????????????LISTEN
13、檢查客戶端的配置如下:
1)啟動(dòng)客戶端db2命令控制臺(tái)
?Db2cmd
?????db2?list?node?directory
?????db2?list?node?directory?show?detail??//查看是否有節(jié)點(diǎn)
?????ping?hostname來驗(yàn)證通訊
?????使用telnet?hostname?port來驗(yàn)證是否能連到實(shí)例
????2)若沒有節(jié)點(diǎn),配置如下:
?????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的當(dāng)前密碼:
??????成功連接,會(huì)顯示?
????4)db2?"select?*?from?TBL_FUNCTION_INFO",顯示表內(nèi)容。
?亦可以使用db2控制中心,直接添加數(shù)據(jù)庫gspsdb,打開數(shù)據(jù)庫中的內(nèi)容了。
安裝了?DB2,并成功創(chuàng)建實(shí)例之后,便可以以實(shí)例所有者的身份(在這個(gè)例子中是?db2inst1)登錄,然后調(diào)用?db2profile?腳本來設(shè)置環(huán)境變量。可以使用?db2sampl?腳本創(chuàng)建樣例數(shù)據(jù)庫。
四、卸載數(shù)據(jù)庫:
su?root?
cd?db2數(shù)據(jù)庫的安裝目錄:/opt/ibm/db2/instance,如:
[root@localhost6:/opt/ibm/db2/instance]#?./db2idrop?-f???gspmdb
住:db2level?可以查看數(shù)據(jù)庫版本的相關(guān)信息;
/opt/ibm/db2/instance里有數(shù)據(jù)庫操作的所有命令;
UNCATALOG?DB?<數(shù)據(jù)庫別名>,如:db2?=>?uncatalog?db??gspsdb?
如何查看linux?ip:
netstat???-i???-n??
??or:???/sbin/ifconfig
不同數(shù)據(jù)庫之間映射表:
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
///(原始數(shù)據(jù))
陳亮?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.數(shù)據(jù)庫的啟動(dòng)、停止
???db2start--啟動(dòng)
???db2stop?[force]--停止
2.與數(shù)據(jù)庫的連接、斷開
????db2?CONNECT?TO?DBName?[user?UserID?using?PWD]--建立連接
????db2?CONNECT?reset?/db2?disconnect?CURRENT?--斷開連接
3.實(shí)例的創(chuàng)建、刪除
??db2icrt?<?實(shí)例名稱?>--創(chuàng)建?db2?實(shí)例
??db2idrop?<?實(shí)例名稱?>--刪除?db2?實(shí)例
??SET?db2intance=db2--設(shè)置當(dāng)前?db2?實(shí)例
??db2ilist--顯示?db2?擁有的實(shí)例
4.節(jié)點(diǎn)、數(shù)據(jù)庫的編目
??db2?list?node?directory?--查看本地節(jié)點(diǎn)目錄
??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>--編目一個(gè)TCP/IP節(jié)點(diǎn)
??db2?uncatalog?node?<node_name>?--取消節(jié)點(diǎn)編目
??db2?catalog?DATABASE?<db_name>?AS?<db_alias>?AT?node?<node_name>--編目數(shù)據(jù)庫
??db2?uncatalog?DATABASE?<db_name>?--取消數(shù)據(jù)庫編目
5.表空間的創(chuàng)建、刪除
??db2?CREATE?BUFFERPOOL?STMABMP?IMMEDIATE??SIZE?25000?PAGESIZE?8K--創(chuàng)建緩沖池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下創(chuàng)建系統(tǒng)/數(shù)據(jù)庫管理表空間STMA
??db2?BACKUP?DATABASE?數(shù)據(jù)庫別名?TABLESPACE?表空間名?[ONLINE}?TO?介質(zhì)名--表空間的備份
??db2?list?tablespaces?show?detail?--列出所以表空間信息
??db2?list?tablespace?containers?for?SpaceID--列出對(duì)應(yīng)表空間的容器詳情
?--修改表空間
??ALTER?TABLESPACE?表空間名?RESIZE(FILE?'已滿的容器名'?更改后容器的大小)
??ALTER?TABLESPACE?表空間名?EXTEND(FILE?'已滿的容器名'?準(zhǔn)備增加的大小)--可以是實(shí)際大小或者頁數(shù)
?eg:db2?"alter?tablespace?HTDC_INDEX?EXTEND(file?'/home/db2admin/dbback/db2containner/htdc/index/htdc_index'?1024M)"?--(unix系統(tǒng))將DMS?HTDC_INDEX?在擴(kuò)大1G
6.數(shù)據(jù)庫的創(chuàng)建、刪除
??db2?CREATE?db?DBName?[using?codeset?GBK?territory?CN]--創(chuàng)建數(shù)據(jù)庫
??db2?DROP?db?DBName--刪除數(shù)據(jù)庫
??db2?list?db?directory--列出所有數(shù)據(jù)庫目錄(包括遠(yuǎn)程編目的數(shù)據(jù)庫)
??db2?list?db?directory?ON?location--如Windows下的C:?,Unix下的/home/db2inst1(本地?cái)?shù)據(jù)庫)
?db2?list?active?databases--列出活動(dòng)的數(shù)據(jù)庫和連接數(shù)
TBL_TRANSACTION_TRACE_1
TBL_TRANSACTION_TRACE_2
GSP_EXCEPTION_TRACE_1
GSP_EXCEPTION_TRACE_2
7.表的創(chuàng)建、刪除
??DROP?TABLE?TableName?;--刪除表
??CREATE?TABLE?TableName
??(?字段名?數(shù)據(jù)類型?,
??PRIMARY?KEY?(字段名)
??)IN?Space1?INDEX?IN?Space2?;--創(chuàng)建表(表空間Space1存放數(shù)據(jù),Space2存放索引)
??ALTER?TABLE?TableName?VOLATILE?CARDINALITY;--將表TableName設(shè)置為易失表
??db2?list?tables?;
??db2?list?tables?FOR?USER?/ALL?/system?/?SCHEMA?SchemaName?[show?detail]?;
?--列出數(shù)據(jù)庫中的表如果沒有指定任何參數(shù),則缺省情況是列出當(dāng)前用戶的表
??db2?describe?TABLE?TableName?;?
??db2?describe?SELECT?*?FROM?tables?;--查看表結(jié)構(gòu)
8.索引的創(chuàng)建、刪除
??DROP?INDEX?Index_Name?;--刪除索引
??CREATE?INDEX?Index_Name?ON?TableName(F1)?;--對(duì)表TableName的F1字段創(chuàng)建索引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.視圖的創(chuàng)建、刪除
??DROP?VIEW?ViewName?;?--刪除視圖
??CREATE?VIEW?ViewName(×,××)?AS?SELECT?×,××?FROM?TableName?WHERE?×××;--創(chuàng)建視圖
10.數(shù)據(jù)庫的備份、恢復(fù)(詳見淺談IBM?DB2的數(shù)據(jù)庫備份與恢復(fù)一文)
--離線備份
??db2?force?applications?all--斷開所有連接
??db2?force?application(h1,h2……)--殺死與欲備份數(shù)據(jù)庫相連接的進(jìn)程
??db2?backup?db?DBName?[to?d:/db2_backup]?[use?TSM]--離線備份
??--在線、增量備份
?--前提:更改數(shù)據(jù)庫參數(shù)?logretain,?userexit,?trackmod?為?on,之后數(shù)據(jù)庫處于backup?pending狀態(tài),要完全離線備份數(shù)據(jù)庫一次,之后就可以進(jìn)行在線、在線增量備份了。
??db2?update?db?cfg?using?logretain?on?userexit?on?trackmod?on--啟用相關(guān)參數(shù)
--歸檔路徑
???DB2?UPDATE?DATABASE?CONFIGURATION?USING?LOGARCHMETH1?DISK:D:/DB2/??IMMEDIATE
?--LOGARCHMETH1參數(shù)改成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]--在線增量備份
--數(shù)據(jù)庫恢復(fù)
db2?restore?db?DBname?[incremental]?[FROM?d:/db2_backup][use?TSM]?taken?AT?YYYYMMDDHHMMSS
??--恢復(fù)?(時(shí)間戳記:YYYYMMDDHHMMSS)
??db2?list?history?backup?[since?YYYYMMDDHHMMSS]?ALL?FOR?DBName
???--查看?[從YYYYMMDDHHMMSS]?對(duì)DBName的備份情況
???db2?ROLLFORWARD?DATABASE?DBName?TO?END?OF?LOGS?AND?COMPLETE?NORETRIEVE--將暫掛的數(shù)據(jù)恢復(fù)到前滾狀態(tài)
??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.數(shù)據(jù)的導(dǎo)出、導(dǎo)入
?--導(dǎo)出
??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可轉(zhuǎn)為excel
?db2?EXPORT?TO?D:/TableName.ixf?OF?ixf?SELECT?*?FROM?SCHEMA.TableName
?--導(dǎo)出數(shù)據(jù)(IXF?集成通用交換格式)
??db2?EXPORT?TO?"D:/TableName.data"?OF?IXF?MESSAGES?"D:/TableName.msg"?SELECT?*?FROM?SCHEMA.TableName;
??--導(dǎo)入
??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?選項(xiàng)將導(dǎo)入的數(shù)據(jù)插入表中。目標(biāo)表必須已經(jīng)存在。
??*INSERT_UPDATE?將數(shù)據(jù)插入表中,或者更新表中具有匹配主鍵的行。目標(biāo)表必須已經(jīng)存在,并且定義了一個(gè)主鍵。
??*REPLACE?選項(xiàng)刪除所有已有的數(shù)據(jù),并將導(dǎo)入的數(shù)據(jù)插入到一個(gè)已有的目標(biāo)表中。
??*使用?REPLACE_CREATE?選項(xiàng)時(shí),如果目標(biāo)表已經(jīng)存在,則導(dǎo)入實(shí)用程序刪除已有的數(shù)據(jù),并插入新的數(shù)據(jù),就像?REPLACE?選項(xiàng)那樣。如果目標(biāo)表還沒有定義,那么首先創(chuàng)建這個(gè)表以及它的相關(guān)索引,然后再導(dǎo)入數(shù)據(jù)。正如您可能想像的那樣,輸入文件必須是?PC/IXF?格式的文件,因?yàn)槟欠N格式包含對(duì)導(dǎo)出表的結(jié)構(gòu)化描述。如果目標(biāo)表是被一個(gè)外鍵引用的一個(gè)父表,那么就不能使用?REPLACE_CREATE。
??*CREATE?選項(xiàng)首先創(chuàng)建目標(biāo)表和它的索引,然后將數(shù)據(jù)導(dǎo)入到新表中。該選項(xiàng)惟一支持的文件格式是?PC/IXF。還可以指定新表所在表空間的名稱(IN?datatbsp?INDEX?IN?indtbsp)。
?
12.存儲(chǔ)過程的編譯與運(yùn)行
??db2?-td@?-vf?ProcedureName.sql/.db2--編譯
??db2?call?ProcedureName--運(yùn)行
13.批處理文件
??db2?-tvf?FileName.sql
14.快速清除、裝入大表數(shù)據(jù)
??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;--查看目標(biāo)表load狀態(tài)(正在裝入/正常)
15.優(yōu)化表
??select?'runstats?on?table?DB2ADMIN.'||rtrim(name)||'?and?indexes?all;'
??from?sysibm.systables
??where?creator?=?'DB2ADMIN'?and?Type?=?'T';--獲取優(yōu)化語句
??db2?runstats?on?table?DB2ADMIN.TableName?and?indexes?all;--優(yōu)化語句
16.應(yīng)用連接
??db2?list?application(s)[?FOR?db?DBName?]?[show?detail]--返回關(guān)于當(dāng)前連接的應(yīng)用程序的信息
??db2?force?application?(h1?[,h2,..,hn])--根據(jù)句柄號(hào)與特定應(yīng)用程序斷開連接
??db2?force?application?all?--斷開所有應(yīng)用程序與數(shù)據(jù)庫的連接
?db2?terminate?--結(jié)束命令行對(duì)話
17.?設(shè)置聯(lián)合數(shù)據(jù)庫為可用(默認(rèn)聯(lián)合數(shù)據(jù)庫不可用)
??db2?update?dbm?cfg?using?federated?yes
18.創(chuàng)建臨時(shí)表空間
??db2?CREATE?USER?TEMPORARY?TABLESPACE?STMASPACE?PAGESIZE?32?K?MANAGED?BY?DATABASE?USING?(FILE?'D:/DB2_TAB/STMASPACE.F1'?10000)?EXTENTSIZE?256
19.創(chuàng)建臨時(shí)表
??DECLARE?GLOBAL?TEMPORARY?TABLE?語句來定義臨時(shí)表。DB2的臨時(shí)表是基于會(huì)話的,且在會(huì)話之間是隔離的。當(dāng)會(huì)話結(jié)束時(shí),臨時(shí)表的數(shù)據(jù)被刪除,臨時(shí)表被隱式卸下。對(duì)臨時(shí)表的定義不會(huì)在SYSCAT.TABLES中出現(xiàn).
?eg:??DECLARE?GLOBAL?TEMPORARY?TABLE?SESSION.Temp_K_Cig?(Cig?varchar(20))?WITH?REPLACE?NOT?LOGGED?on?commit?preserve?rows;
20.修改日志文件大小、數(shù)目
??db2?UPDATE?DB?CFG?FOR?DBName?USINGLOGFILSIZ6000?;?--日志文件大小
??db2?UPDATE?DB?CFG?FOR?DBName?USINGLOGPRIMARY5?;--日志文件數(shù)目
??db2?UPDATE?DB?CFG?FOR?DBName?USINGLOGSECOND25?;--輔助日志文件數(shù)目
21.如何重新啟動(dòng)數(shù)據(jù)庫?
db2?RESTART?DB?DBName?;--重新啟動(dòng)數(shù)據(jù)庫
db2?ACTIVATE?DB?DBName?;--激活數(shù)據(jù)庫
db2?DEACTIVATE?DB?DBName?;--停止數(shù)據(jù)庫
22.查看錯(cuò)誤代碼
db2???SQL?***?eg:DB2???SQL803
db2???db2-command?--?關(guān)于指定命令的幫助
db2???help--有關(guān)閱讀幫助屏幕的指示信息
db2???OPTIONS?--?關(guān)于所有命令選項(xiàng)的幫助
23.如何關(guān)閉表的日志
??ALTER?TABLE?TABLE_NAME?ACTIVE?NOT?LOGGED?INIALLY
24.測試SQL的執(zhí)行性能
db2batch?-d?DB_NAME?-f?select.sql?-r?benchmark.txt?-o?p3?--select.sql是select語句寫在文件中
25.查看當(dāng)前應(yīng)用號(hào)的執(zhí)行狀態(tài)
db2?get?snapshot?for?application?agentid?299?|grep?Row
26.如何修改緩沖池
db2?alter?bufferpool?ibmdefaultbp?size?10240
27.如何知道DB2的數(shù)據(jù)類型
select?*?from??sysibm.sysdatatypes
28.如何知道BUFFERPOOLS狀況
select?*?from??sysibm.sysbufferpools
29.查詢出用戶表
SELECT?*?FROM?SYSIBM.SYSTABLES?WHERE?CREATOR='USER'
30.如何知道當(dāng)前DB2的版本
select?*?from??sysibm.sysversions
31.如何知道TABLESPACE的狀況
select?*?from??sysibm.SYSTABLESPACES
32."SQL1032N?未發(fā)出啟動(dòng)數(shù)據(jù)庫管理器的命令。?SQLSTATE=57019"的解決辦法
(1).License到期,在命令行下用?db2licm?-l?查看是否到期;
(2).用來啟動(dòng)服務(wù)的用戶名或密碼錯(cuò)誤,(如我們更改了登錄系統(tǒng)的密碼),解決辦法(Windows系統(tǒng)):在控制面板->管理工具->服務(wù)中對(duì)相關(guān)DB2服務(wù)選項(xiàng)【屬性】中修改【登錄】的用戶名或密碼。
33.表空間、表大小計(jì)算
表空間:頁大小(字節(jié))*總頁數(shù)
表:(1):runstats?之后,用select?npages?from?syscat.tables?where?TABNAME='TableName'得到npages,再用npages×表空間頁大小
???????(2):在控制中心中,選擇要查看的表,選擇“估計(jì)大小”查看,索引大小同.
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.查看存儲(chǔ)過程信息
SELECT?*?FROM?SYSCAT.PROCEDURES;
--如查看DB2ADMIN模式下的存過名稱、編號(hào)、建立時(shí)間等
SELECT?PROCNAME,PROCEDURE_ID,CREATE_TIME,TEXT
FROM?SYSCAT.PROCEDURES
where?procschema='DB2ADMIN'
36.系統(tǒng)表中查看表、索引、表空間信息
--索引的名稱、所屬表、表空間
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;
--查找數(shù)據(jù)庫管理表空間(DMS)
SELECT?TBSpace?FROM?syscat.tablespaces?WHERE?TBSpaceType?=?'D'?;
--視圖信息
SELECT?*?FROM?sysibm.sysviews;
--查看表的數(shù)據(jù)表空間、索引、索引表空間
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?數(shù)據(jù)表空間,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?導(dǎo)出腳本信息
可用于導(dǎo)出表、索引、試圖、存過、觸發(fā)器等腳本,可在命令行下用db2look??查看相應(yīng)參數(shù)信息。
如:
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
在聯(lián)合節(jié)點(diǎn)目錄中編目節(jié)點(diǎn)條目
在聯(lián)合節(jié)點(diǎn)目錄中編目節(jié)點(diǎn)條目是將?DB2?系列數(shù)據(jù)源添加至聯(lián)合服務(wù)器這一大型任務(wù)的一部分。
要指向?DB2?數(shù)據(jù)源所在的位置,在聯(lián)合服務(wù)器的節(jié)點(diǎn)目錄中編目一個(gè)條目。聯(lián)合服務(wù)器使用此條目來確定連接至?DB2?數(shù)據(jù)源的正確存取方法。
過程?
要在聯(lián)合節(jié)點(diǎn)目錄中編目一個(gè)節(jié)點(diǎn)條目:
1?確定將使用的通信協(xié)議。
2?發(fā)出適當(dāng)?shù)拿顏砭幠抗?jié)點(diǎn)條目。?
o?如果通信協(xié)議為“傳輸控制協(xié)議/網(wǎng)際協(xié)議”(TCP/IP),則發(fā)出?CATALOG?TCPIP?NODE命令。?
例如:
CATALOG?TCPIP?NODE?DB2NODE?REMOTE?SYSTEM42?SERVER?DB2TCP42
o?DB2NODE?值是為正在編目的節(jié)點(diǎn)指定的名稱。REMOTE?SYSTEM42?是數(shù)據(jù)源所駐留的系統(tǒng)的主機(jī)名。SERVER?DB2TCP42?是服務(wù)器數(shù)據(jù)庫管理器實(shí)例的服務(wù)名稱或主端口號(hào)。如果使用了服務(wù)名稱,則它是區(qū)分大小寫的。
o?如果通信協(xié)議為?SNA,則發(fā)出?CATALOG?APPC?NODE命令。?
例如:
CATALOG?APPC?NODE?DB2NODE?REMOTE?DB2CPIC?SECURITY?PROGRAM
o?DB2NODE?值是為正在編目的節(jié)點(diǎn)指定的名稱。REMOTE?DB2CPIC?是遠(yuǎn)程伙伴節(jié)點(diǎn)的?SNA?伙伴邏輯單元(LU)名。SECURITY?PROGRAM?指定用戶名和密碼都將包括在發(fā)送給伙伴?LU?的分配請(qǐng)求中。
在這一系列任務(wù)中的下一個(gè)任務(wù)是在聯(lián)合系統(tǒng)數(shù)據(jù)庫目錄中編目遠(yuǎn)程數(shù)據(jù)庫。
在聯(lián)合系統(tǒng)數(shù)據(jù)庫目錄中編目遠(yuǎn)程數(shù)據(jù)庫
在聯(lián)合系統(tǒng)數(shù)據(jù)庫目錄中編目遠(yuǎn)程數(shù)據(jù)庫是將?DB2?系列數(shù)據(jù)源添加至聯(lián)合服務(wù)器這一大型任務(wù)的一部分。
通過在聯(lián)合服務(wù)器系統(tǒng)數(shù)據(jù)庫目錄中編目遠(yuǎn)程數(shù)據(jù)庫來指定聯(lián)合服務(wù)器將連接至哪個(gè)?DB2?數(shù)據(jù)源數(shù)據(jù)庫。
過程?
要在聯(lián)合服務(wù)器系統(tǒng)數(shù)據(jù)庫目錄中編目遠(yuǎn)程數(shù)據(jù)庫:
1?使用“客戶機(jī)配置助手”(CCA)。?
對(duì)于?UNIX?上的聯(lián)合服務(wù)器,可以通過另一種方法來使用?CATALOG?DATABASE命令。例如:
?CATALOG?DATABASE?DB2DB390?AS?CLIENTS390?AT?NODE?DB2NODE?AUTHENTICATION?DCS
值?DB2DB390?是您在聯(lián)合服務(wù)器系統(tǒng)數(shù)據(jù)庫目錄中正在編目的遠(yuǎn)程數(shù)據(jù)庫的名稱。AS?CLIENTS390?是正在編目的數(shù)據(jù)庫的別名。如果未指定別名,則數(shù)據(jù)庫管理器使用數(shù)據(jù)庫名稱(例如,DB2DB390)作為別名。AT?NODE?DB2NODE?是在節(jié)點(diǎn)目錄中對(duì)節(jié)點(diǎn)條目進(jìn)行編目時(shí)所指定的節(jié)點(diǎn)的名稱。AUTHENTICATION?SERVER?指定在?DB2?數(shù)據(jù)源節(jié)點(diǎn)上進(jìn)行認(rèn)證。
2?如果遠(yuǎn)程數(shù)據(jù)庫的名稱超過了八個(gè)字符,則必須通過發(fā)出?CATALOG?DCS?DATABASE命令來創(chuàng)建?DCS?目錄條目。例如:?
CATALOG?DCS?DATABASE?SALES400?AS?SALES_DB2DB400
3?值?SALES400?是要編目的遠(yuǎn)程數(shù)據(jù)庫的別名。此名稱應(yīng)當(dāng)跟與遠(yuǎn)程節(jié)點(diǎn)相關(guān)聯(lián)的聯(lián)合服務(wù)器系統(tǒng)數(shù)據(jù)庫目錄中的一個(gè)條目的名稱相匹配。它就是您在?CATALOG?DATABASE命令中輸入的同一名稱。AS?SALES_DB2DB400?是想要編目的目標(biāo)主機(jī)數(shù)據(jù)庫的名稱。
在這一系列任務(wù)中的下一個(gè)任務(wù)是注冊(cè)?DB2?包裝器。
注冊(cè)?DB2?包裝器
注冊(cè)?DB2?包裝器是將?DB2?系列數(shù)據(jù)源添加至聯(lián)合服務(wù)器這一大型任務(wù)的一部分。
必須注冊(cè)包裝器才能存取?DB2?系列數(shù)據(jù)源。聯(lián)合服務(wù)器使用包裝器來與數(shù)據(jù)源通信以及從數(shù)據(jù)源中檢索數(shù)據(jù)。包裝器是作為一組庫文件實(shí)現(xiàn)的。
過程?
要注冊(cè)包裝器,發(fā)出?CREATE?WRAPPER?語句并指定包裝器的缺省名稱。
例如:
CREATE?WRAPPER?DRDA
建議:使用稱為?DRDA?的缺省包裝器名稱。當(dāng)您使用缺省名稱來注冊(cè)包裝器時(shí),聯(lián)合服務(wù)器將自動(dòng)采用與該包裝器名稱相關(guān)聯(lián)的缺省庫名。
如果包裝器名稱與聯(lián)合數(shù)據(jù)庫中的現(xiàn)有包裝器名稱相沖突,則可以將缺省包裝器名稱替代為您選擇的名稱。如果您使用一個(gè)不同于缺省名稱的名稱,則在?CREATE?WRAPPER?語句中必須包括?LIBRARY?參數(shù)。
例如,要在使用?AIX?操作系統(tǒng)的聯(lián)合服務(wù)器上注冊(cè)一個(gè)名稱為?db2_wrapper?的包裝器,請(qǐng)發(fā)出以下語句:
CREATE?WRAPPER?db2_wrapper?LIBRARY?'libdb2drda.a'
您指定的包裝器庫文件的名稱取決于聯(lián)合服務(wù)器的操作系統(tǒng)。
CREATE?SERVER?語句?-?DB2?包裝器的示例
此主題提供了幾個(gè)示例來說明如何使用?CREATE?SERVER?語句來為?DB2?系列數(shù)據(jù)源上的包裝器注冊(cè)服務(wù)器。此主題包括一個(gè)完整的示例,該示例說明如何使用所有必需的參數(shù)來創(chuàng)建服務(wù)器,它還包括一個(gè)帶有可選的服務(wù)器選項(xiàng)的示例。
完整示例:
以下示例說明了如何使用?CREATE?SERVER?語句來為?DB2?包裝器創(chuàng)建服務(wù)器定義:
CREATE?SERVER?DB2SERVER?TYPE?DB2/ZOS?VERSION?6?WRAPPER?DRDA
???????AUTHORIZATION?"spalten"?PASSWORD?"db2guru"?
????????OPTIONS?(DBNAME?'CLIENTS390')
DB2SERVER
為?DB2?數(shù)據(jù)庫服務(wù)器指定的名稱。此名稱必須是唯一的。不允許存在重復(fù)的服務(wù)器名。
TYPE?DB2/ZOS
指定正在對(duì)其配置存取的數(shù)據(jù)源服務(wù)器的類型。
VERSION?6
想要訪問的?DB2?數(shù)據(jù)庫服務(wù)器的版本。
WRAPPER?DRDA
在?CREATE?WRAPPER?語句中指定的名稱。
AUTHORIZATION?"spalten"
數(shù)據(jù)源中的授權(quán)標(biāo)識(shí)。此標(biāo)識(shí)在數(shù)據(jù)源中必須具有?BINDADD?權(quán)限。此值是區(qū)分大小寫的。
PASSWORD?"db2guru"
與數(shù)據(jù)源中的授權(quán)標(biāo)識(shí)相關(guān)聯(lián)的密碼。此值是區(qū)分大小寫的。
DBNAME?'CLIENTS390'
想要存取的?DB2?數(shù)據(jù)庫的別名。此別名是在您使用?CATALOG?DATABASE命令對(duì)數(shù)據(jù)庫進(jìn)行編目時(shí)定義的。此值是區(qū)分大小寫的。?
對(duì)于?DB2?數(shù)據(jù)源,此數(shù)據(jù)庫名稱是必需的。
服務(wù)器選項(xiàng)示例:
當(dāng)您注冊(cè)服務(wù)器定義時(shí),可以在?CREATE?SERVER?語句中指定更多服務(wù)器選項(xiàng)。這些選項(xiàng)包括一般的服務(wù)器選項(xiàng)和特定于?DB2?數(shù)據(jù)源的服務(wù)器選項(xiàng)。
以下示例說明了具有?CPU_RATIO?選項(xiàng)的服務(wù)器定義。
CREATE?SERVER?DB2SERVER?TYPE?DB2/ZOS?VERSION?6?WRAPPER?DRDA
???????AUTHORIZATION?"spalten"?PASSWORD?"db2guru"?
????????OPTIONS?(DBNAME?'CLIENTS390',?CPU_RATIO?'0.001')
如果將?CPU_RATIO?選項(xiàng)設(shè)置為“0.001”,則它指示遠(yuǎn)程數(shù)據(jù)源中的?CPU?可用容量是聯(lián)合服務(wù)器的?1000?倍。
CREATE?USER?MAPPING?語句?-?DB2?包裝器的示例
此主題提供了一些示例來說明如何使用?CREATE?USER?MAPPING?語句來將本地用戶標(biāo)識(shí)映射至?DB2?服務(wù)器用戶標(biāo)識(shí)和密碼。此主題包括一個(gè)具有所有必需參數(shù)的完整示例,還包括一個(gè)說明如何將?DB2?專用寄存器?USER?與?CREATE?USER?MAPPING?語句配合使用的示例。
完整示例:
以下示例說明了如何將本地用戶標(biāo)識(shí)映射至?DB2?服務(wù)器用戶標(biāo)識(shí):
CREATE?USER?MAPPING?FOR?DB2USER?SERVER?DB2SERVER?
???????OPTIONS?(REMOTE_AUTHID?'db2admin',?REMOTE_PASSWORD?'day2night')
DB2USER
指定您正在映射至在?DB2?系列數(shù)據(jù)源服務(wù)器中定義的用戶標(biāo)識(shí)的本地用戶標(biāo)識(shí)。
SERVER?DB2SERVER
指定您在?CREATE?SERVER?語句中定義的?DB2?系列數(shù)據(jù)源服務(wù)器的名稱。
REMOTE_AUTHID?'db2admin'
指定您正在將?DB2USER?映射所至的?DB2?系列數(shù)據(jù)源服務(wù)器中的連接授權(quán)用戶標(biāo)識(shí)。使用單引號(hào)來保留此值的大小寫(除非您在?CREATE?SERVER?語句中將?FOLD_ID?服務(wù)器選項(xiàng)設(shè)置為?'U'?或?'L')。
REMOTE_PASSWORD?'day2night'
指定與?'db2admin'?相關(guān)聯(lián)的密碼。使用單引號(hào)來保留此值的大小寫(除非您在?CREATE?SERVER?語句中將?FOLD_PW?服務(wù)器選項(xiàng)設(shè)置為?'U'?或?'L')。
專用寄存器示例:?
以下是一個(gè)包括專用寄存器?USER?的?CREATE?USER?MAPPING?語句的示例:
CREATE?USER?MAPPING?FOR?USER?SERVER?DB2SERVER?
???????OPTIONS?(REMOTE_AUTHID?'db2admin',?REMOTE_PASSWORD?'day2night')
可以使用?DB2?專用寄存器?USER?來將正在發(fā)出?CREATE?USER?MAPPING?語句的人員的授權(quán)標(biāo)識(shí)映射至在?REMOTE_AUTHID?用戶選項(xiàng)中指定的數(shù)據(jù)源授權(quán)標(biāo)識(shí)。
CREATE?NICKNAME?語句?-?DB2?包裝器的示例
此主題提供了一個(gè)示例來說明如何使用?CREATE?NICKNAME?語句來為您想存取的?DB2?表或視圖注冊(cè)昵稱。
以下示例顯示了一個(gè)?CREATE?NICKNAME?語句:
CREATE?NICKNAME?DB2SALES?FOR?DB2SERVER.SALESDATA.EUROPE
DB2SALES
用來標(biāo)識(shí)?DB2?表或視圖的唯一昵稱。?
注:昵稱是一個(gè)由兩部分組成的名稱,它包括模式和昵稱。如果在注冊(cè)昵稱時(shí)省略了模式,則昵稱的模式將為創(chuàng)建該昵稱的用戶的授權(quán)標(biāo)識(shí)。
DB2SERVER.SALESDATA.EUROPE
遠(yuǎn)程對(duì)象的由三部分組成的標(biāo)識(shí):?
o?DB2SERVER?是您在?CREATE?SERVER?語句中為?DB2?數(shù)據(jù)庫服務(wù)器指定的名稱。
o?SALESDATA?是表或視圖所屬于的遠(yuǎn)程模式的名稱。此值是區(qū)分大小寫的。
o?EUROPE?是您想存取的遠(yuǎn)程表或視圖的名稱。
DB2聯(lián)合數(shù)據(jù)庫(Federated?Database)配置實(shí)例
文章出處:DIY部落(http://www.diybl.com/course/7_databases/db2/2008531/118360.html)
使用DB2聯(lián)合數(shù)據(jù)庫,您可以使用一條SQL語句查詢多個(gè)數(shù)據(jù)源中的數(shù)據(jù)。奇妙的是,這些數(shù)據(jù)源可以多種多樣:即可以是多種關(guān)系數(shù)據(jù)庫系統(tǒng),也可以是非關(guān)系數(shù)據(jù)庫系統(tǒng),比如Microsoft?Excel、xml等。本文將首先探討多個(gè)關(guān)系數(shù)據(jù)庫之間的聯(lián)合訪問。
動(dòng)手配置一個(gè)簡單的聯(lián)合數(shù)據(jù)庫實(shí)例來培養(yǎng)一下您的成就感,這樣可以為您理解聯(lián)合數(shù)據(jù)庫所設(shè)計(jì)的概念及繁多的參數(shù)選項(xiàng)增加一點(diǎn)信心。我一向喜歡這種文章風(fēng)格,我相信很多人也會(huì)喜歡的。
要進(jìn)行下面的試驗(yàn),您必須先安裝DB2?v8.2?ESE?(Enterprise?Server?Edition)?for?Windows。DB2的安裝不是本文的討論范圍。
假如您的DB2已經(jīng)安裝好了,那就開始吧。
1)?使用windows管理員權(quán)限的用戶登陸windows,筆者用的是Administrator。
2)?為了完成下面的演示,您還需要另外一個(gè)windows用戶,筆者使用安裝DB2的時(shí)候自動(dòng)創(chuàng)建的db2admin用戶。您當(dāng)然也可以使用其他windows用戶。
3)?確保您已經(jīng)創(chuàng)建了至少一個(gè)可用的實(shí)例。筆者使用缺省創(chuàng)建的DB2實(shí)例。您可以通過在命令窗口運(yùn)行DB2START命令來啟動(dòng)這個(gè)實(shí)例
4)?在DB2命令窗口運(yùn)行DB2?GET?DBM?CFG?來查看當(dāng)前實(shí)例的配置參數(shù),并確保FEDERATED參數(shù)設(shè)置為YES,您可以通過運(yùn)行DB2?UPDATE?DBM?CFG?USING?FEDERATED?YES來設(shè)置這個(gè)參數(shù)。修改這個(gè)參數(shù)后,必須重新啟動(dòng)實(shí)例才會(huì)生效(DB2STOP/DB2START)
5)?卻保您已經(jīng)創(chuàng)建了DB2樣本數(shù)據(jù)庫SAMPLE,如果您還沒有創(chuàng)建,可以通過在DB2命令行窗口運(yùn)行db2sampl命令來創(chuàng)建它。此樣本數(shù)據(jù)庫包含了一些樣本表和數(shù)據(jù),使用這個(gè)數(shù)據(jù)庫作演示可以使我們節(jié)省一點(diǎn)時(shí)間。
6)?創(chuàng)建另外一個(gè)數(shù)據(jù)庫,筆者使用名字TESTDB:
???DB2?CREATE?DB?TESTDB
7)?運(yùn)行DB2CE命令打開DB2命令編輯器,并在這兒完成下面的步驟。
8)?連接到sample數(shù)據(jù)庫,并創(chuàng)建DRDA包裝器(WRAPPER).
???CONNECT?TO?SAMPLE;
???CREATE?WRAPPER?DRDA;
9)?創(chuàng)建服務(wù)器(SERVER)
CREATE?SERVER?TESTDB?TYPE?DB2/UDB?VERSION?'8.2'?WRAPPER?"DRDA"?AUTHID?"db2admin"?PASSWORD?"db2admin"?OPTIONS(?ADD?DBNAME?'TESTDB',?PASSWORD?'Y');
10)?創(chuàng)建用戶映射
CREATE?USER?MAPPING?FOR?"ADMINISTRATOR"?SERVER?"TESTDB"?OPTIONS?(?ADD?REMOTE_AUTHID?'db2admin',?ADD??REMOTE_PASSWORD?'db2admin')?;
11)?使用db2admin用戶連接到TESTDB數(shù)據(jù)庫、創(chuàng)建表WORKITEM、并插入樣本數(shù)據(jù)。
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的開發(fā)','000020');
INSERT?INTO?WORKITEM(ITEMNO,ITEMNAME,EMPNO)?VALUES?('0003','聯(lián)系客戶A','000030');
12)?連接到SAMPLE數(shù)據(jù)庫,并為TESTDB數(shù)據(jù)庫中的WORKITEM表創(chuàng)建昵稱:
CONNECT?TO?SAMPLE;
CREATE?NICKNAME?ADMINISTRATOR.WORKITEM?FOR?TESTDB.DB2ADMIN.WORKITEM;
13)?OK,現(xiàn)在我們就可以在SAMPLE數(shù)據(jù)庫中使用TESTDB數(shù)據(jù)庫中的WORKITEM表了,而且還可以和SAMPLE數(shù)據(jù)庫的EMPLOYEE表聯(lián)合查詢:
????SELECT?*?FROM?WORKITEM;
????我們來查詢由誰來負(fù)責(zé)哪個(gè)工作項(xiàng)目:
????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數(shù)據(jù)庫就已經(jīng)變成了聯(lián)合數(shù)據(jù)庫,您通過在SAMPLE數(shù)據(jù)庫中為TESTDB數(shù)據(jù)庫中的表或視圖創(chuàng)建昵稱來訪問他們,很好玩吧。:)
文章出處:DIY部落(http://www.diybl.com/course/7_databases/db2/2008531/118360.html)
//
DB2從AIX?server上轉(zhuǎn)移(遷移)到linux上
首先說一下大致情況,就是目前生產(chǎn)環(huán)境(AIX?server)上邊有一數(shù)據(jù)庫?product,現(xiàn)在想遷移到本地做一下測試環(huán)境,由于本地服務(wù)器只是linux?server所以,不可以直接的用backup?和restore恢復(fù)。需要用db2look和db2move配合一下來實(shí)現(xiàn)遷移過程,本操作適用于各類操作系統(tǒng)之間的遷移.
首先這些在Aix服務(wù)器上做
1.?用db2look把aix上的product數(shù)據(jù)庫的DDL語句導(dǎo)出來.
db2look?-d?product-a?-e?-o?product.sql
輸出結(jié)果是:
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?命令導(dǎo)出ixf和msg文件
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"
系統(tǒng)執(zhí)行完之后會(huì)生成一堆.ixf?和.msg文件
3.?在本機(jī)或目標(biāo)機(jī)(linux)?上建立一個(gè)目錄如product,product.sql和上步產(chǎn)生的文件都ftp過來.
ftp?servername
bin
prompt?off
mget?*
close
quit
即可
4.在本地新建一數(shù)據(jù)庫可以原aix數(shù)據(jù)庫同名如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.?建立本數(shù)據(jù)庫的所有表,用第一步生成的DDL語句來生成
db2?–vtf?product.sql
6.?最后一步,導(dǎo)入所有數(shù)據(jù)
db2move?product?import
注意:此命令要在第三小download下來的那些文件(*.ixf?*.msg)所在的目錄中執(zhí)行
測試一下db2?connect?to?product;
如果看到成功信息,db2數(shù)據(jù)庫從aix遷移到linux上邊就成功了。
#?創(chuàng)建邏輯卷?vgmydatabas
mkvg?-s?128?-y?vgmydatabase?hdisk1?hdisk2?hdisk3?hdisk4?hdisk5???????????????????
#?在邏輯卷?vgmydatabase?上創(chuàng)建邏輯分區(qū)
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???????????????????
#?創(chuàng)建實(shí)例用戶名inst64,組名grp64,受保護(hù)的用戶名fenc64,組名fgrp64
mkgroup??grp64
mkgroup??fgrp64
#?注意實(shí)例用戶的缺省目錄,空間要充足
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末尾,如果沒有端口對(duì)應(yīng),需要手工添加
#?vi?/etc/services
#?設(shè)置DB2環(huán)境變量
db2set?DB2CODEPAGE=1386
db2set?DB2COUNTRY=CN
#?DBM參數(shù)設(shè)置
db2?"update?dbm?cfg?using?RESTBUFSZ?10240"
db2?"update?dbm?cfg?using?SHEAPTHRES?100000"
#?創(chuàng)建數(shù)據(jù)庫mydatabase
db2?“create?db?mydatabase?using?codeset?gbk?territory?cn?pagesize?8?k”
#?設(shè)置緩沖池
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”
#?設(shè)置數(shù)據(jù)庫參數(shù)
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)?詳細(xì)出處參考:http://bbs.diybl.com/dview33t7446.html
總結(jié)
以上是生活随笔為你收集整理的在linux下安装db2全过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下安装DB2的详细步骤
- 下一篇: linux系统时间修改及同步