DB2資料庫常用命令集:部分資料庫維護命令

pianzif發表於2014-06-23
在DB2的開發過程中,貫穿整個開發過程還有很重要的一部分工作就是資料庫的維護;對於維護一個龐大資訊系統來說是非常必要的;留一份簡易的維護手冊,以備不時之需;以下收集到的部分維護命令,以饗我們的維護工程師和專案經理。 


************************************************* 

* update: 2006-06-14 

* memo: 詳細命令請使用"db2 ? <command>"進行檢視。  

************************************************* 


1.關閉db2 


db2stop 或db2stop force。 


在指令碼中一般兩個都寫上,避免使用db2stop force命令,如: 


db2stop 
db2stop force 


2.啟動db2 


db2start 


3.建立資料庫 


db2 create db <db name>或db2 create db using codeset GBK territory CN 


4.刪除資料庫 

執行此操作要小心。 


db2 drop db <db name> 


如果不能刪除,斷開所有資料庫連線或者重啟db2。 

5.斷開資料庫連線 


db2 force application all 


6.連線資料庫 


db2 connect to <db name> user <username> using <password> 


7.斷開資料庫連線 

斷開當前資料庫連線: 


db2 connect reset或者:db2 disconnect current 


斷開所有資料庫的連線: 


db2 disconnect all 


8.備份資料庫 


db2 backup db <db name> 


備註:執行以上命令之前需要斷開資料庫連線 

9.恢復資料庫 


db2 restore db <source db name> 


10.匯出資料檔案 


db2move <db name> export 
[-sn <模式名稱,一般為db2admin>] 
[-tn <表名,多個之間用逗號分隔>] 


11.匯入資料檔案 


db2move <db name> import 


12.列出資料庫中所有db 


db2 list db directory 


13.進入db2命令環境 


在“執行”中執行:db2cmd 

14.獲取db2資料庫管理配置環境資訊 


db2 get dbm cfg 


15.獲取db2某個資料庫資料庫管理配置環境資訊 


db2 get db cfg for <db name> 
或者:連線至某個資料庫以後執行db2 get db cfg。 


16.設定聯合資料庫為可用(預設聯合資料庫不可用) 


db2 update dbm cfg using federated yes 


17.更改db2日誌空間的大小 

備註:以下命令為了防止db2資料庫過份使用硬碟空間而設,僅用於開發者自己機器上的db2,如果是伺服器,則引數需要修改。 


db2 UPDATE DB CFG FOR <db name> USING logretain OFF 
logprimary 3 logsecond 2 logfilsiz 25600; 


如果頁大小是4KB,則以上命令建立3個100M的日誌檔案,佔用300MB硬碟空間。25600*4KB=102400KB。 

18.建立臨時表空間 


DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K 
MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000) 
EXTENTSIZE 256 


19.獲取資料庫管理器的快照資料 


db2 –v get snapshot for dbm 


20.顯示進行程號 


db2 list applications show detail 


21.調查錯誤 


sqlcode:產品特定錯誤碼; 

sqlstate:DB2系列產品的公共錯誤碼,符合ISO/ANSI 92SQL標準。 

調查sqlcode : db2 ? sql1403n 

調查sqlstate: db2 ? 08004 


22.建立表空間 


rem 建立緩衝池空間 8K 

db2 connect to gather 

db2 CREATE BUFFERPOOL STMABMP IMMEDIATE SIZE 25000 PAGESIZE 8K 

rem 建立表空間:STMA 

rem 必須確認路徑正確 

rem D:\DB2Container\Stma 

db2 drop tablespace stma 

db2 CREATE 
REGULAR TABLESPACE STMA PAGESIZE 8 K 
MANAGED BY SYSTEM 
USING ('D:\DB2Container\Stma' ) EXTENTSIZE 8 
OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL 
STMABMP 
DROPPED TABLE RECOVERY OFF 

db2 connect reset 

23. 將暫掛的資料恢復到前滾狀態 


db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE NORETRIEVE 


24.備份表空間 


BACKUP DATABASE YNDC TABLESPACE ( USERSPACE1 ) 
TO "D:\temp" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING 


25.建立db2工具資料庫 


db2 create tools catalog systools create new database toolsdb 


26.如何進行增量/差量備份 

增量:上一次完整備份至本次備份之間增加的資料部分; 

差量(delta):上次備份以來(可能是完整備份、增量備份或者差量備份)至本次備份之間增加的資料部分; 

27.更新所有表的統計資訊 


db2 -v connect to DB_NAME 

db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes" 

db2 -v reorgchkupdate statistics on table all 

db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes" 

db2 -v terminate 


28.對一張表執行統計資訊 


db2 -v runstatson table TAB_NAMEand indexes all 


29.檢視是否對資料庫執行了RUNSTATS 


db2 -v "select tbname, nleaf, nlevels, 
stats_timefrom sysibm.sysindexes" 


30.更改緩衝池的大小 

緩衝池中,當syscat.bufferpools的npages是-1時,由資料庫的配置引數bufferpage控制緩衝池的大小。 

將npages的值更改為-1的命令: 


db2 -v connect to DB_NAME 

db2 -v select * from syscat.bufferpools 

db2 -v alter bufferpoolIBMDEFAULTBP size -1 

db2 -v connect reset 

db2 -v terminate 


更改資料庫配置引數BufferPages的命令如下: 


db2 -v update db cfgfor dbnameusing BUFFPAGE bigger_value 

db2 -v terminate 


31.檢視資料庫監視內容列表 


db2 -v get monitor switches 


32.開啟某個資料庫監視內容 


db2 -v update monitor switches using bufferpoolon 


33.獲取資料庫快照 


db2 -v get snapshot for all databases > snap.out 

db2 -v get snapshot for dbm>> snap.out 

db2 -v get snapshot for all bufferpools>> snap.out 

db2 -v terminate 


34.重置資料庫快照 


db2 -v reset monitor all 


35.計算緩衝池命中率 

理想情況下緩衝池命中率在95%以上,計算公式如下: 


(1 -((buffer pool data physical reads + buffer pool index physical reads) 
/(buffer pool data logical reads + pool index logical reads))) *100% 


36.建立db2例項 


db2icrt <例項名稱> 


37.刪除db2例項 


db2idrop <例項名稱> 


38.設定當前db2例項 


set db2intance=db2 


39.顯示db2擁有的例項 


db2ilist 


40.恢復離線增量備份資料庫的命令 


DB2 RESTORE DATABASE YNDC INCREMENTAL AUTOMATIC FROM 
D:\backup\autobak\db2 TAKEN AT 20060314232015 


41.建立樣本資料庫 

在unix平臺,使用: 


sqllib/bin/db2sampl <path> 


在windows,os/2平臺,使用:db2sampl e,e是可選引數,指定將建立資料庫的驅動器; 

42.列出資料庫中所有的表 


db2 list tables 


43.列出某個表的資料結構 


db2 describe table v_ro_role 


44.給表增加列 


ALTER TABLE STAFF 
ADD COLUMN PNHONE VARCHAR(20) 


45.資料遷移方法1 

export指令碼示例 


db2 connect to testdb user test password test 
db2 "export to aa1.ixf of ixf select * from table1" 
db2 "export to aa2.ixf of ixf select * from table2" 
db2 connect reset 


import指令碼示例 


db2 connect to testdb user test password test 
db2 "load from aa1.ixf of ixf replace into table1 COPY NO without prompting " 
db2 "load from aa2.ixf of ixf replace into table2 COPY NO without prompting " 
db2 connect reset

相關文章