db2总结
------------------------------------------安裝-----------------------------------------------
?1 創(chuàng)建用戶和組
? ?groupadd ?db2asgrp
? groupadd ?db2instgrp
? ?groupadd ?db2fencgrp
? ?useradd -g db2asgrp db2as
? ?useradd -g db2instgrp db2inst1 --實例用戶
? ?useradd -g db2fencgrp db2fenc1 --安全用戶
? ? ?
?2 輸入 ./db2_install?
? ?提示 Do you want to choose a different directory to install [yes/no] ? ? --安裝目錄
? ?輸入 no ? -- 使用默認目錄就可以了
? ?輸入 ESE ?--選擇安裝ESE,即enterprise server edition
? ?
?3 安裝license
? ?[root@seagull bin]# cd /opt/ibm/db2/V9.1/adm/
? ?[root@seagull adm]# ./db2licm -a /tmp/seagull/db2v9/license/db2ese_c.lic
? ?[root@seagull adm]# ./db2licm -a /tmp/seagull/db2v9/license/db2dpf.lic
? ?[root@seagull adm]# ./db2licm -a /tmp/seagull/db2v9/license/db2xmlese.lic
? ?
?4 創(chuàng)建實例和樣本數(shù)據(jù)庫
? ?[root@seagull V9.1]# cd /opt/ibm/db2/V9.1/instance
? ?[root@seagull instance]# ./db2icrt -p 50000 -u db2fenc1 db2inst1 ?--創(chuàng)建實例
? ?[root@seagull instance]# tail -n 6 -f /etc/services
# Local services
DB2_db2inst1 ? ?60000/tcp
DB2_db2inst1_1 ?60001/tcp
DB2_db2inst1_2 ?60002/tcp
DB2_db2inst1_END ? ? ? ?60003/tcp
[root@seagull ~]# su - db2inst1
[db2inst1@seagull ~]$ db2sampl ?--創(chuàng)建sample示例數(shù)據(jù)庫
[db2inst1@seagull sqllib]$ db2start
[db2inst1@seagull sqllib]$ db2 connect to sample
[db2inst1@seagull sqllib]$ db2 "select * from staff"
?
? 5 創(chuàng)建das管理服務器
? ? 為了遠程客戶端能夠用控制中心來控制數(shù)據(jù)庫服務器,需要在數(shù)據(jù)庫服務器上安裝das,當然,如果只是遠程連接而不是遠程管理,可以不用裝。
? ?[root@seagull instance]# ./dascrt -u db2as
? ?[root@seagull instance]# su - db2as
? ?[db2as@seagull ~]$ db2admin start
? 6.確認一下db2inst1實例的服務名?
? ?[db2inst1@seagull ~]$ db2 get dbm cfg|grep SVCENAME
? ? ? TCP/IP Service name ? ? ? ? ? ? ? ? ? ? ? ? ?(SVCENAME) = 50000
? 7.可以看一下license情況?
? ?[db2inst1@seagull ~]$ db2licm -l
? ? Product name: ? ? ? ? ? ? ? ? ? ? "DB2 Enterprise Server Edition"
License type: ? ? ? ? ? ? ? ? ? ? "CPU Option"
Expiry date: ? ? ? ? ? ? ? ? ? ? ?"Permanent"
Product identifier: ? ? ? ? ? ? ? "db2ese"
Version information: ? ? ? ? ? ? ?"9.7"
Enforcement policy: ? ? ? ? ? ? ? "Soft Stop"
Features:
DB2 Performance Optimization ESE: "Not licensed"
DB2 Storage Optimization: ? ? ? ? "Not licensed"
DB2 Advanced Access Control: ? ? ?"Not licensed"
DB2 Geodetic Data Management: ? ? "Not licensed"
IBM Homogeneous Replication ESE: ?"Not licensed"
?8 windows 遠程連接
? ?db2cmd
? ?db2 catalog tcpip node 節(jié)點名 remote IP地址 server 50000
? ?db2 catalog db 庫名 as 本地庫別名 at node 節(jié)點名
? ?此時打開控制中心,就可以操作遠程的數(shù)據(jù)庫了
?9 問題 1 ,如果在linux能連上庫,用客戶端連不上可以用以下命令解決
? ?root用戶進入db2的instance目錄下
? ?執(zhí)行 ./db2iupdt db2inst1
-------------------------------------------------------------------------------------------------
db2inst1 環(huán)境變量
if [ -f /home/db2inst1/sqllib/db2profile ]; then
? ? . /home/db2inst1/sqllib/db2profile
fi
rewsdb2 環(huán)境變量
if [ -f /home/db2inst1/sqllib/db2profile ]; then
?. /home/db2inst1/sqllib/db2profile
fi
? ----------------------------------------—命令------------------------------------------------
使索引生效 ?
db2 runstats on table schema.表名 and detailed indexes all ?
??
0 DB2日志
DB2HOME/sqllib/db2dump/db2diag.log
??
1 建立編目
catalog tcpip ?node ?節(jié)點名 remote IP地址 server 端口號
? ?
2 卸載節(jié)點編目
uncatalog ?node ?節(jié)點名
3 查看機器上節(jié)點目錄
db2 list node directory | more
4 數(shù)據(jù)庫編目
db2 catalog db 節(jié)點上庫名 as 本地庫別名 at node 節(jié)點名 ? --as 本地庫別名可不加
5 卸載數(shù)據(jù)庫編目
db2 uncatalog db 庫名
6 察看數(shù)據(jù)庫的編目
db2 list db directory | more
7 連接節(jié)點上的數(shù)據(jù)庫
db2 connect to 庫名 user 用戶名 using 密碼 ?
8 導出數(shù)據(jù)
db2 export to 目錄/myfile.ixf of ixf messages msg select * from tb1
db2 export to 目錄/myfile.dat of del modified by coldel0x03 nochardel datesiso select * from tb1 WITH UR
9 導入數(shù)據(jù)
db2 import from 目錄/myfile.ixf of ixf messages msg replace into tb1
db2 "import from c:\zj\321104\bbsybsj.ixf of ixf modified by forcein insert into bbsybsj"
db2 import from 目錄/myfile.dat of del modified by coldel0x03 nochardel keepblanks CODEPAGE=1386 replace into tb1
db2 load from myfile.dat of del modified by coldel0x03 nochardel keepblanks CODEPAGE=1386 replace into M_TDL_F_F_GL_PUB_CMVCA
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)
load from tempfile of del modified by delprioritychar replace into 表名 nonrecoverable;
說明:
在不相關的數(shù)據(jù)表export數(shù)據(jù)時,可以采取并發(fā)的形式,以提高效率;
modified by delprioritychar防止數(shù)據(jù)庫記錄中存在換行符,導致數(shù)據(jù)無法裝入的情況;
replace into對現(xiàn)數(shù)據(jù)庫中的內容進行替換,即將現(xiàn)行的數(shù)據(jù)記錄清理,替換為數(shù)據(jù)文件內容;
nonrecoverable無日志方式裝入;
10 啟動實例(db2inst1)
db2start
11 停止實例(db2inst1):
db2stop
db2stop force
12 列出所有實例(db2inst1)
db2ilist
13 列出當前實例:
db2 get instance
14 察看示例配置文件:
db2 get dbm cfg|more
15 寫數(shù)據(jù)庫管理程序配置
db2 update dbm cfg using 參數(shù)名 參數(shù)值
16 創(chuàng)建數(shù)據(jù)庫:
db2 create db 庫名 using codeset GBK territory CN
17 察看數(shù)據(jù)庫配置參數(shù)信息
db2 get db cfg for 庫名|more
18 更新數(shù)據(jù)庫參數(shù)配置信息
db2 update db cfg for 庫名 using 參數(shù)名 參數(shù)值
修改數(shù)據(jù)庫日志大小
db2 update db cfg for etl2 using LOGFILSIZ ?42000
db2 update db cfg for etl2 using LOGPRIMARY ?50
db2 update db cfg for etl2 using LOGSECOND 20
19 刪除數(shù)據(jù)庫:
db2 drop db 庫名
20 連接數(shù)據(jù)庫
db2 connect to 庫名
21 列出所有表空間的詳細信息。
db2 list tablespaces show detail
13.列出容器的信息
db2 list tablespace containers for 表空間id show detail
14 列出所有表
db2 list tables
15 列出所有的系統(tǒng)表
list tables for system
16.創(chuàng)建表:
db2 ceate table tb1(id integer not null,name char(10))
17.插入數(shù)據(jù):
db2 insert into tb1 values(1,’sam’);
db2 insert into tb2 values(2,’smitty’);
18.查詢數(shù)據(jù):
db2 “select * from tb1”
19.刪除數(shù)據(jù):
db2 delete from tb1 where id=1
20.創(chuàng)建索引:
db2 create index idx1 on 表名(字段);
21.創(chuàng)建視圖:
db2 create view 視圖名 as select id from 表名
22 執(zhí)行文中的sql
db2 -tvf 文件名.sql
23 執(zhí)行一個批處理文件
db2 –tf 批處理文件名 (文件中每一條命令用 ;結束)
24 備份數(shù)據(jù)庫
db2 backup db 庫名 to 目錄地址
25 恢復數(shù)據(jù)庫
db2 restore db 庫名 from 目錄地址
26 查看數(shù)據(jù)表結構
db2 “describe select * from 表名”
27 查詢表建的索引
DESCRIBE INDEXES FOR TABLE 表名 SHOW DETAIL
db2 "select INDNAME, COLNAMES FROM syscat.indexes where tabname='表名'"
28 查詢一張表的狀態(tài)
db2 "load query table 表名"
29 查詢數(shù)據(jù)庫里有沒有表鎖了。
db2 "select * from sysibmadm.locks_held"
30 A用戶安裝DB2后(安裝在默認目錄),如何用B用戶啟動DATABASE?
? ? 在B用戶下的.PROFILE中加上
? ? ./HOME/DB2INST/SQLLIB/DB2PROFILE
31 查詢連接到db2庫的應用
db2 list application for db 庫名 show detail
?
31.關閉所有應用連接
? ? db2 force application all
? ? db2 force application ID1,ID2,,,Idn MODE ASYNC?
? ??
31 查看版本?
? db2level ?
32 查看數(shù)據(jù)庫字符集 ?
? db2 get db cfg|grep code ?
? Database code page ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 1208
? Database code set ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = UTF-8
? Database country/region code ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 1
? #注解,在客戶端,要設置db2codepage變量與數(shù)據(jù)庫一致,這樣才能正確的顯示漢字,客 戶端設置方法db2set db2codepage=1208,在windows 上,db2codepage默認為1386(GBK),linux上默認為1208(UTF-8),aix上默認為819(ISO8859-1),要注意 這個問題,我在客戶端查詢t1表時就發(fā)現(xiàn)是亂碼,后來設置了客戶端變量db2codepage才搞定。
? 另外一種可行的辦法是,在服務器上創(chuàng)建生產庫時,指定數(shù)據(jù)庫字符集為GBK,這樣windows客戶端就不用改db2codepage變量了,這個方法我以前用過,當時在服務器上創(chuàng)建生產數(shù)據(jù)庫的腳本為:
??
su - db2inst1
db2set db2codepage=1386 ?#為了能創(chuàng)建gbk字符集數(shù)據(jù)庫
exit ?#退一次為了使得設置生效
su - db2inst1
db2 create db GZDC using codeset GBK territory CN
? ?
connect to gzdc
db2 grant dbadm on database to db2admin
db2 "create bufferpool BP_8K size -1 ?pagesize 8192 not extended storage"
db2 "alter bufferpool IBMDEFAULTBP immediate size 50000"
CREATE system temporary TABLESPACE TS_SYSTEMP_04 ?PAGESIZE 4096 ?MANAGED BY DATABASE USING (FILE '/db2data/db2data01/stmp4k1.dbf' 1024M, FILE ?'/db2data/db2data02/stmp4k2.dbf' 1024M) ?EXTENTSIZE 32 PREFETCHSIZE 64
CREATE system temporary TABLESPACE TS_SYSTEMP_08 ?PAGESIZE 8192 ?MANAGED BY DATABASE USING (FILE '/db2data/db2data01/stmp8k1.dbf' 5G, FILE ?'/db2data/db2data02/stmp8k2.dbf' 5G) ?EXTENTSIZE 192 PREFETCHSIZE 384 BUFFERPOOL BP_8K
CREATE LARGE TABLESPACE HOSPITALSPACE PAGESIZE 8192 MANAGED BY DATABASE USING?
(FILE '/db2data/db2data01/HOSPITAL_01.dbf' 50G,
?FILE '/db2data/db2data02/HOSPITAL_02.dbf' 50G,
?FILE '/db2data/db2data01/HOSPITAL_03.dbf' 50G,
?FILE '/db2data/db2data02/HOSPITAL_04.dbf' 50G,
?FILE '/db2data/db2data01/HOSPITAL_05.dbf' 50G,
?FILE '/db2data/db2data02/HOSPITAL_06.dbf' 50G,
?FILE '/db2data/db2data01/HOSPITAL_07.dbf' 50G,
?FILE '/db2data/db2data02/HOSPITAL_08.dbf' 50G,
?FILE '/db2data/db2data01/HOSPITAL_09.dbf' 50G,
?FILE '/db2data/db2data02/HOSPITAL_10.dbf' 50G)?
EXTENTSIZE 192 ?PREFETCHSIZE 384 ? BUFFERPOOL BP_8K;
CREATE LARGE TABLESPACE MANAGERSPACE PAGESIZE 8192 MANAGED BY DATABASE USING (FILE '/db2data/db2data01/MANAGER_01.dbf' 25G) ? ? ? EXTENTSIZE 192 ?PREFETCHSIZE 384 ? ? ? ?BUFFERPOOL BP_8K
alter tablespace managerspace add (file '/db2data/db2data02/MANAGER_02.dbf' 25G)
33 db2advis 根據(jù)優(yōu)化器的配置以及機器性能給出提高查詢性能的建議,種建議主要集中于如何創(chuàng)建索引,這些索引可以降低多少查詢代價,需要創(chuàng)建哪些表或者 Materialized Query Table(MQT) 等
1)創(chuàng)建temp.sql里面寫需要優(yōu)化的sql語句,以";"結束
2)執(zhí)行
? db2advis -d 庫名 -n sample -a 用戶名/密碼 -i temp.sql >test.log
??
34 查看表空間的狀況?
? ? select * from ?sysibm.SYSTABLESPACES
35 db2batch 測試SQL的執(zhí)行性能
db2batch -d 庫名 -f select.sql -a 用戶名/密碼 > test.log
(select.sql中有查詢的sql語句,以";"結束)
36 db2expln 獲得文本形式的查詢計劃
db2expln -d 庫名 -user 用戶名 密碼 -stmtfile sql文件(文件中的sql結束沒有;)-z @ -output 輸出結果文件 -g
(db2expln 將存取計劃以文本形式輸出,它只提供存取計劃中主要的信息,并不包含每一個操作占用多少 CPU、I/O、占用Buffer 的大小以及使用的數(shù)據(jù)庫對象等信息,方便閱讀。但是 db2expln 也會將各項有關存取計劃的信息存入 Explain表中,用戶可以使用db2exfmt 察看詳細的格式化文本信息。
? -z @: -z參數(shù)指定多個查詢之間的分隔符,之處的分隔符為@)
37 獲取連接的進程
db2 list applications
38 刪除當前正在使用的application:
db2 "force application (Id1,Id2,Id3)"
Id1,Id2,Id3 是List顯示的應用號
39 刪除所有的進程
db2 force application all
40 查看當前應用號的執(zhí)行狀態(tài):
db2 get snapshot for application agentid 299 |grep Row
41 查看數(shù)據(jù)庫配置
db2 get db cfg for 庫名?
42 將數(shù)據(jù)庫的參數(shù)設置為默認數(shù)值 ?
reset db cfg for 庫名
43 修改數(shù)據(jù)庫配置參數(shù)數(shù)值
update db cfg for 庫名 using 參數(shù)名 參數(shù)值
update db cfg for etl2 using LOGFILSIZ 100000
44 設置表不記錄日志
db2 "alter table 表名 activate not logged Initially" ? ??
45 如何重新啟動數(shù)據(jù)庫?
? ? Restart db db_name
46 如何激活數(shù)據(jù)庫?
? ? Activate db db_name
47 如何停止數(shù)據(jù)庫?
? ? Deactivate db db_name
48 如何重命名表?
? ? Rename old_tablename to new_tablename
----------------------------------------—緩沖池 表空間------------------------------------------------
1 創(chuàng)建緩沖池
db2 create bufferpool 緩沖池名 immediate size 100 automatic pagesize 32k
db3 CREATE BUFFERPOOL BP_FM IMMEDIATE ALL DBPARTITIONNUMS SIZE 50000 NUMBLOCKPAGES 0 PAGESIZE 16K;
??
2 修改緩沖池
db2 alter bufferpool 緩沖池名 size 10240
3 刪除緩沖池
db2 drop bufferpool 緩沖池名
4 查看緩沖池狀況
db2 "select * from ?sysibm.sysbufferpools"?
4 創(chuàng)建表空間
DB2 CREATE REGULAR TABLESPACE 表空間名 PAGESIZE 4K MANAGED BY AUTOMATIC STORAGE BUFFERPOOL 緩沖池名
CREATE LARGE TABLESPACE TBS_DATA_FM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
PAGESIZE 16K ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
MANAGED BY AUTOMATIC STORAGE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
EXTENTSIZE 32 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
PREFETCHSIZE AUTOMATIC ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
BUFFERPOOL BP_FM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
INITIALSIZE 10G ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
INCREASESIZE 2G
NO FILE SYSTEM CACHING ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
AUTORESIZE YES;?
5 DB2快照
? 1、打開db2監(jiān)控開關
#db2 connect to eos
#db2 update monitor switches using statement on
#db2 reset monitor all
2、幾分鐘之后,我們收集sql統(tǒng)計快照
#db2 get snapshot for dynamic sql on eos > dysqlstatus.out
select * from sysibmadm.top_dynamic_sql where (stmt_text like '%CACHE_%' OR STMT_TEXT LIKE ?'%cache_%') and (stmt_text like 'select%' or stmt_text like 'insert%' or stmt_text like 'delet%') order by average_execution_time_s desc fetch first 30 rows only;
----------------------------------------—sql------------------------------------------------
??
1 查詢去除重復記錄
select ?c.cstno,c.name,c.v1?
from (select row_number() over( partition by a.cstno,a.name ) as rn, a.cstno,a.name,b.v1
? ? ? ? ?from test1 a , test2 b where a.cstno=b.cstno) c
where ?c.rn = 1 ?
2 列出表中前10條數(shù)據(jù) ?fetch first 10 rows ?only?
? select * from <表名> fetch first 10 rows only
??
3 對是null的字段進行值轉換 coalesce(字段名,轉換后的值)?
? select coalesce(id,1) ?from <表名> ? ?--對表中id如果為null轉換成1
??
4 計算出日期中是周幾(1是周日,2是周一.......7是周六) ?dayofweek(日期)
? 計算出日期中是周幾(1是周一.......7是周日) ? ? dayofweek_iso(日期)
? ?dayofweek(date(2008-01-16)) ? --它會返回是4,代表星期三
? ?dayofweek_iso(date(2008-01-16)) ? --它會返回是3,代表星期三
? ?
? ?注意:參數(shù)中日期的格式是YYYY-MM-DD的形式,如果不是需要進行轉換,否則函數(shù)不能使用
? ?
5 一年中的第幾天,范圍在1-366范圍之內 ? dayofyear(日期)
6 把參數(shù)1加上連接值組成一個新值 concatt(參數(shù)1,連接值)
? concat('aa','b') ? ?--返回是aab
7 轉義字符
? 如果你想查詢字符串中包含‘%’或‘_’ ,就得使用轉義字符,比如,要想查詢testtab中包含字符串’99%’的紀錄
? SELECT * FROM testtab WHERE title like '%99!%%' escape '!'
8 表壓縮
? 在建表語句后加 COMPRESS YES;
----------------------------------------—linux------------------------------------------------
1 每兩秒查一次io讀寫
iostat -t 2 ??
l
?1 創(chuàng)建用戶和組
? ?groupadd ?db2asgrp
? groupadd ?db2instgrp
? ?groupadd ?db2fencgrp
? ?useradd -g db2asgrp db2as
? ?useradd -g db2instgrp db2inst1 --實例用戶
? ?useradd -g db2fencgrp db2fenc1 --安全用戶
? ? ?
?2 輸入 ./db2_install?
? ?提示 Do you want to choose a different directory to install [yes/no] ? ? --安裝目錄
? ?輸入 no ? -- 使用默認目錄就可以了
? ?輸入 ESE ?--選擇安裝ESE,即enterprise server edition
? ?
?3 安裝license
? ?[root@seagull bin]# cd /opt/ibm/db2/V9.1/adm/
? ?[root@seagull adm]# ./db2licm -a /tmp/seagull/db2v9/license/db2ese_c.lic
? ?[root@seagull adm]# ./db2licm -a /tmp/seagull/db2v9/license/db2dpf.lic
? ?[root@seagull adm]# ./db2licm -a /tmp/seagull/db2v9/license/db2xmlese.lic
? ?
?4 創(chuàng)建實例和樣本數(shù)據(jù)庫
? ?[root@seagull V9.1]# cd /opt/ibm/db2/V9.1/instance
? ?[root@seagull instance]# ./db2icrt -p 50000 -u db2fenc1 db2inst1 ?--創(chuàng)建實例
? ?[root@seagull instance]# tail -n 6 -f /etc/services
# Local services
DB2_db2inst1 ? ?60000/tcp
DB2_db2inst1_1 ?60001/tcp
DB2_db2inst1_2 ?60002/tcp
DB2_db2inst1_END ? ? ? ?60003/tcp
[root@seagull ~]# su - db2inst1
[db2inst1@seagull ~]$ db2sampl ?--創(chuàng)建sample示例數(shù)據(jù)庫
[db2inst1@seagull sqllib]$ db2start
[db2inst1@seagull sqllib]$ db2 connect to sample
[db2inst1@seagull sqllib]$ db2 "select * from staff"
?
? 5 創(chuàng)建das管理服務器
? ? 為了遠程客戶端能夠用控制中心來控制數(shù)據(jù)庫服務器,需要在數(shù)據(jù)庫服務器上安裝das,當然,如果只是遠程連接而不是遠程管理,可以不用裝。
? ?[root@seagull instance]# ./dascrt -u db2as
? ?[root@seagull instance]# su - db2as
? ?[db2as@seagull ~]$ db2admin start
? 6.確認一下db2inst1實例的服務名?
? ?[db2inst1@seagull ~]$ db2 get dbm cfg|grep SVCENAME
? ? ? TCP/IP Service name ? ? ? ? ? ? ? ? ? ? ? ? ?(SVCENAME) = 50000
? 7.可以看一下license情況?
? ?[db2inst1@seagull ~]$ db2licm -l
? ? Product name: ? ? ? ? ? ? ? ? ? ? "DB2 Enterprise Server Edition"
License type: ? ? ? ? ? ? ? ? ? ? "CPU Option"
Expiry date: ? ? ? ? ? ? ? ? ? ? ?"Permanent"
Product identifier: ? ? ? ? ? ? ? "db2ese"
Version information: ? ? ? ? ? ? ?"9.7"
Enforcement policy: ? ? ? ? ? ? ? "Soft Stop"
Features:
DB2 Performance Optimization ESE: "Not licensed"
DB2 Storage Optimization: ? ? ? ? "Not licensed"
DB2 Advanced Access Control: ? ? ?"Not licensed"
DB2 Geodetic Data Management: ? ? "Not licensed"
IBM Homogeneous Replication ESE: ?"Not licensed"
?8 windows 遠程連接
? ?db2cmd
? ?db2 catalog tcpip node 節(jié)點名 remote IP地址 server 50000
? ?db2 catalog db 庫名 as 本地庫別名 at node 節(jié)點名
? ?此時打開控制中心,就可以操作遠程的數(shù)據(jù)庫了
?9 問題 1 ,如果在linux能連上庫,用客戶端連不上可以用以下命令解決
? ?root用戶進入db2的instance目錄下
? ?執(zhí)行 ./db2iupdt db2inst1
-------------------------------------------------------------------------------------------------
db2inst1 環(huán)境變量
if [ -f /home/db2inst1/sqllib/db2profile ]; then
? ? . /home/db2inst1/sqllib/db2profile
fi
rewsdb2 環(huán)境變量
if [ -f /home/db2inst1/sqllib/db2profile ]; then
?. /home/db2inst1/sqllib/db2profile
fi
? ----------------------------------------—命令------------------------------------------------
使索引生效 ?
db2 runstats on table schema.表名 and detailed indexes all ?
??
0 DB2日志
DB2HOME/sqllib/db2dump/db2diag.log
??
1 建立編目
catalog tcpip ?node ?節(jié)點名 remote IP地址 server 端口號
? ?
2 卸載節(jié)點編目
uncatalog ?node ?節(jié)點名
3 查看機器上節(jié)點目錄
db2 list node directory | more
4 數(shù)據(jù)庫編目
db2 catalog db 節(jié)點上庫名 as 本地庫別名 at node 節(jié)點名 ? --as 本地庫別名可不加
5 卸載數(shù)據(jù)庫編目
db2 uncatalog db 庫名
6 察看數(shù)據(jù)庫的編目
db2 list db directory | more
7 連接節(jié)點上的數(shù)據(jù)庫
db2 connect to 庫名 user 用戶名 using 密碼 ?
8 導出數(shù)據(jù)
db2 export to 目錄/myfile.ixf of ixf messages msg select * from tb1
db2 export to 目錄/myfile.dat of del modified by coldel0x03 nochardel datesiso select * from tb1 WITH UR
9 導入數(shù)據(jù)
db2 import from 目錄/myfile.ixf of ixf messages msg replace into tb1
db2 "import from c:\zj\321104\bbsybsj.ixf of ixf modified by forcein insert into bbsybsj"
db2 import from 目錄/myfile.dat of del modified by coldel0x03 nochardel keepblanks CODEPAGE=1386 replace into tb1
db2 load from myfile.dat of del modified by coldel0x03 nochardel keepblanks CODEPAGE=1386 replace into M_TDL_F_F_GL_PUB_CMVCA
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)
load from tempfile of del modified by delprioritychar replace into 表名 nonrecoverable;
說明:
在不相關的數(shù)據(jù)表export數(shù)據(jù)時,可以采取并發(fā)的形式,以提高效率;
modified by delprioritychar防止數(shù)據(jù)庫記錄中存在換行符,導致數(shù)據(jù)無法裝入的情況;
replace into對現(xiàn)數(shù)據(jù)庫中的內容進行替換,即將現(xiàn)行的數(shù)據(jù)記錄清理,替換為數(shù)據(jù)文件內容;
nonrecoverable無日志方式裝入;
10 啟動實例(db2inst1)
db2start
11 停止實例(db2inst1):
db2stop
db2stop force
12 列出所有實例(db2inst1)
db2ilist
13 列出當前實例:
db2 get instance
14 察看示例配置文件:
db2 get dbm cfg|more
15 寫數(shù)據(jù)庫管理程序配置
db2 update dbm cfg using 參數(shù)名 參數(shù)值
16 創(chuàng)建數(shù)據(jù)庫:
db2 create db 庫名 using codeset GBK territory CN
17 察看數(shù)據(jù)庫配置參數(shù)信息
db2 get db cfg for 庫名|more
18 更新數(shù)據(jù)庫參數(shù)配置信息
db2 update db cfg for 庫名 using 參數(shù)名 參數(shù)值
修改數(shù)據(jù)庫日志大小
db2 update db cfg for etl2 using LOGFILSIZ ?42000
db2 update db cfg for etl2 using LOGPRIMARY ?50
db2 update db cfg for etl2 using LOGSECOND 20
19 刪除數(shù)據(jù)庫:
db2 drop db 庫名
20 連接數(shù)據(jù)庫
db2 connect to 庫名
21 列出所有表空間的詳細信息。
db2 list tablespaces show detail
13.列出容器的信息
db2 list tablespace containers for 表空間id show detail
14 列出所有表
db2 list tables
15 列出所有的系統(tǒng)表
list tables for system
16.創(chuàng)建表:
db2 ceate table tb1(id integer not null,name char(10))
17.插入數(shù)據(jù):
db2 insert into tb1 values(1,’sam’);
db2 insert into tb2 values(2,’smitty’);
18.查詢數(shù)據(jù):
db2 “select * from tb1”
19.刪除數(shù)據(jù):
db2 delete from tb1 where id=1
20.創(chuàng)建索引:
db2 create index idx1 on 表名(字段);
21.創(chuàng)建視圖:
db2 create view 視圖名 as select id from 表名
22 執(zhí)行文中的sql
db2 -tvf 文件名.sql
23 執(zhí)行一個批處理文件
db2 –tf 批處理文件名 (文件中每一條命令用 ;結束)
24 備份數(shù)據(jù)庫
db2 backup db 庫名 to 目錄地址
25 恢復數(shù)據(jù)庫
db2 restore db 庫名 from 目錄地址
26 查看數(shù)據(jù)表結構
db2 “describe select * from 表名”
27 查詢表建的索引
DESCRIBE INDEXES FOR TABLE 表名 SHOW DETAIL
db2 "select INDNAME, COLNAMES FROM syscat.indexes where tabname='表名'"
28 查詢一張表的狀態(tài)
db2 "load query table 表名"
29 查詢數(shù)據(jù)庫里有沒有表鎖了。
db2 "select * from sysibmadm.locks_held"
30 A用戶安裝DB2后(安裝在默認目錄),如何用B用戶啟動DATABASE?
? ? 在B用戶下的.PROFILE中加上
? ? ./HOME/DB2INST/SQLLIB/DB2PROFILE
31 查詢連接到db2庫的應用
db2 list application for db 庫名 show detail
?
31.關閉所有應用連接
? ? db2 force application all
? ? db2 force application ID1,ID2,,,Idn MODE ASYNC?
? ??
31 查看版本?
? db2level ?
32 查看數(shù)據(jù)庫字符集 ?
? db2 get db cfg|grep code ?
? Database code page ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 1208
? Database code set ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = UTF-8
? Database country/region code ? ? ? ? ? ? ? ? ? ? ? ? ? ?= 1
? #注解,在客戶端,要設置db2codepage變量與數(shù)據(jù)庫一致,這樣才能正確的顯示漢字,客 戶端設置方法db2set db2codepage=1208,在windows 上,db2codepage默認為1386(GBK),linux上默認為1208(UTF-8),aix上默認為819(ISO8859-1),要注意 這個問題,我在客戶端查詢t1表時就發(fā)現(xiàn)是亂碼,后來設置了客戶端變量db2codepage才搞定。
? 另外一種可行的辦法是,在服務器上創(chuàng)建生產庫時,指定數(shù)據(jù)庫字符集為GBK,這樣windows客戶端就不用改db2codepage變量了,這個方法我以前用過,當時在服務器上創(chuàng)建生產數(shù)據(jù)庫的腳本為:
??
su - db2inst1
db2set db2codepage=1386 ?#為了能創(chuàng)建gbk字符集數(shù)據(jù)庫
exit ?#退一次為了使得設置生效
su - db2inst1
db2 create db GZDC using codeset GBK territory CN
? ?
connect to gzdc
db2 grant dbadm on database to db2admin
db2 "create bufferpool BP_8K size -1 ?pagesize 8192 not extended storage"
db2 "alter bufferpool IBMDEFAULTBP immediate size 50000"
CREATE system temporary TABLESPACE TS_SYSTEMP_04 ?PAGESIZE 4096 ?MANAGED BY DATABASE USING (FILE '/db2data/db2data01/stmp4k1.dbf' 1024M, FILE ?'/db2data/db2data02/stmp4k2.dbf' 1024M) ?EXTENTSIZE 32 PREFETCHSIZE 64
CREATE system temporary TABLESPACE TS_SYSTEMP_08 ?PAGESIZE 8192 ?MANAGED BY DATABASE USING (FILE '/db2data/db2data01/stmp8k1.dbf' 5G, FILE ?'/db2data/db2data02/stmp8k2.dbf' 5G) ?EXTENTSIZE 192 PREFETCHSIZE 384 BUFFERPOOL BP_8K
CREATE LARGE TABLESPACE HOSPITALSPACE PAGESIZE 8192 MANAGED BY DATABASE USING?
(FILE '/db2data/db2data01/HOSPITAL_01.dbf' 50G,
?FILE '/db2data/db2data02/HOSPITAL_02.dbf' 50G,
?FILE '/db2data/db2data01/HOSPITAL_03.dbf' 50G,
?FILE '/db2data/db2data02/HOSPITAL_04.dbf' 50G,
?FILE '/db2data/db2data01/HOSPITAL_05.dbf' 50G,
?FILE '/db2data/db2data02/HOSPITAL_06.dbf' 50G,
?FILE '/db2data/db2data01/HOSPITAL_07.dbf' 50G,
?FILE '/db2data/db2data02/HOSPITAL_08.dbf' 50G,
?FILE '/db2data/db2data01/HOSPITAL_09.dbf' 50G,
?FILE '/db2data/db2data02/HOSPITAL_10.dbf' 50G)?
EXTENTSIZE 192 ?PREFETCHSIZE 384 ? BUFFERPOOL BP_8K;
CREATE LARGE TABLESPACE MANAGERSPACE PAGESIZE 8192 MANAGED BY DATABASE USING (FILE '/db2data/db2data01/MANAGER_01.dbf' 25G) ? ? ? EXTENTSIZE 192 ?PREFETCHSIZE 384 ? ? ? ?BUFFERPOOL BP_8K
alter tablespace managerspace add (file '/db2data/db2data02/MANAGER_02.dbf' 25G)
33 db2advis 根據(jù)優(yōu)化器的配置以及機器性能給出提高查詢性能的建議,種建議主要集中于如何創(chuàng)建索引,這些索引可以降低多少查詢代價,需要創(chuàng)建哪些表或者 Materialized Query Table(MQT) 等
1)創(chuàng)建temp.sql里面寫需要優(yōu)化的sql語句,以";"結束
2)執(zhí)行
? db2advis -d 庫名 -n sample -a 用戶名/密碼 -i temp.sql >test.log
??
34 查看表空間的狀況?
? ? select * from ?sysibm.SYSTABLESPACES
35 db2batch 測試SQL的執(zhí)行性能
db2batch -d 庫名 -f select.sql -a 用戶名/密碼 > test.log
(select.sql中有查詢的sql語句,以";"結束)
36 db2expln 獲得文本形式的查詢計劃
db2expln -d 庫名 -user 用戶名 密碼 -stmtfile sql文件(文件中的sql結束沒有;)-z @ -output 輸出結果文件 -g
(db2expln 將存取計劃以文本形式輸出,它只提供存取計劃中主要的信息,并不包含每一個操作占用多少 CPU、I/O、占用Buffer 的大小以及使用的數(shù)據(jù)庫對象等信息,方便閱讀。但是 db2expln 也會將各項有關存取計劃的信息存入 Explain表中,用戶可以使用db2exfmt 察看詳細的格式化文本信息。
? -z @: -z參數(shù)指定多個查詢之間的分隔符,之處的分隔符為@)
37 獲取連接的進程
db2 list applications
38 刪除當前正在使用的application:
db2 "force application (Id1,Id2,Id3)"
Id1,Id2,Id3 是List顯示的應用號
39 刪除所有的進程
db2 force application all
40 查看當前應用號的執(zhí)行狀態(tài):
db2 get snapshot for application agentid 299 |grep Row
41 查看數(shù)據(jù)庫配置
db2 get db cfg for 庫名?
42 將數(shù)據(jù)庫的參數(shù)設置為默認數(shù)值 ?
reset db cfg for 庫名
43 修改數(shù)據(jù)庫配置參數(shù)數(shù)值
update db cfg for 庫名 using 參數(shù)名 參數(shù)值
update db cfg for etl2 using LOGFILSIZ 100000
44 設置表不記錄日志
db2 "alter table 表名 activate not logged Initially" ? ??
45 如何重新啟動數(shù)據(jù)庫?
? ? Restart db db_name
46 如何激活數(shù)據(jù)庫?
? ? Activate db db_name
47 如何停止數(shù)據(jù)庫?
? ? Deactivate db db_name
48 如何重命名表?
? ? Rename old_tablename to new_tablename
----------------------------------------—緩沖池 表空間------------------------------------------------
1 創(chuàng)建緩沖池
db2 create bufferpool 緩沖池名 immediate size 100 automatic pagesize 32k
db3 CREATE BUFFERPOOL BP_FM IMMEDIATE ALL DBPARTITIONNUMS SIZE 50000 NUMBLOCKPAGES 0 PAGESIZE 16K;
??
2 修改緩沖池
db2 alter bufferpool 緩沖池名 size 10240
3 刪除緩沖池
db2 drop bufferpool 緩沖池名
4 查看緩沖池狀況
db2 "select * from ?sysibm.sysbufferpools"?
4 創(chuàng)建表空間
DB2 CREATE REGULAR TABLESPACE 表空間名 PAGESIZE 4K MANAGED BY AUTOMATIC STORAGE BUFFERPOOL 緩沖池名
CREATE LARGE TABLESPACE TBS_DATA_FM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
PAGESIZE 16K ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
MANAGED BY AUTOMATIC STORAGE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
EXTENTSIZE 32 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
PREFETCHSIZE AUTOMATIC ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
BUFFERPOOL BP_FM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
INITIALSIZE 10G ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
INCREASESIZE 2G
NO FILE SYSTEM CACHING ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
AUTORESIZE YES;?
5 DB2快照
? 1、打開db2監(jiān)控開關
#db2 connect to eos
#db2 update monitor switches using statement on
#db2 reset monitor all
2、幾分鐘之后,我們收集sql統(tǒng)計快照
#db2 get snapshot for dynamic sql on eos > dysqlstatus.out
select * from sysibmadm.top_dynamic_sql where (stmt_text like '%CACHE_%' OR STMT_TEXT LIKE ?'%cache_%') and (stmt_text like 'select%' or stmt_text like 'insert%' or stmt_text like 'delet%') order by average_execution_time_s desc fetch first 30 rows only;
----------------------------------------—sql------------------------------------------------
??
1 查詢去除重復記錄
select ?c.cstno,c.name,c.v1?
from (select row_number() over( partition by a.cstno,a.name ) as rn, a.cstno,a.name,b.v1
? ? ? ? ?from test1 a , test2 b where a.cstno=b.cstno) c
where ?c.rn = 1 ?
2 列出表中前10條數(shù)據(jù) ?fetch first 10 rows ?only?
? select * from <表名> fetch first 10 rows only
??
3 對是null的字段進行值轉換 coalesce(字段名,轉換后的值)?
? select coalesce(id,1) ?from <表名> ? ?--對表中id如果為null轉換成1
??
4 計算出日期中是周幾(1是周日,2是周一.......7是周六) ?dayofweek(日期)
? 計算出日期中是周幾(1是周一.......7是周日) ? ? dayofweek_iso(日期)
? ?dayofweek(date(2008-01-16)) ? --它會返回是4,代表星期三
? ?dayofweek_iso(date(2008-01-16)) ? --它會返回是3,代表星期三
? ?
? ?注意:參數(shù)中日期的格式是YYYY-MM-DD的形式,如果不是需要進行轉換,否則函數(shù)不能使用
? ?
5 一年中的第幾天,范圍在1-366范圍之內 ? dayofyear(日期)
6 把參數(shù)1加上連接值組成一個新值 concatt(參數(shù)1,連接值)
? concat('aa','b') ? ?--返回是aab
7 轉義字符
? 如果你想查詢字符串中包含‘%’或‘_’ ,就得使用轉義字符,比如,要想查詢testtab中包含字符串’99%’的紀錄
? SELECT * FROM testtab WHERE title like '%99!%%' escape '!'
8 表壓縮
? 在建表語句后加 COMPRESS YES;
----------------------------------------—linux------------------------------------------------
1 每兩秒查一次io讀寫
iostat -t 2 ??
l
總結
- 上一篇: oracle dp命令的使用说明
- 下一篇: java 取cpuid、主板id、硬盘i