DB2數據庫常用命令數據庫學習
你可以用 get snapshot for locks on XXX 看是那個表鎖了,再從相關的操作去查原因吧
db2pd -d 庫名 -locks
和
db2pd -d 庫名 -wlocks
window環境下在db2cmd下,使用db2 get snapshot for locks on dbname
-查看數據庫管理器級別快照信息
db2 get snapshot for dbm
-查看數據庫級別快照信息
db2 get snapshot for database on dbname
-查看應用級別快照信息
db2 get snapshot for application agentid appl-handler
注:appl-handler可以從list applicaitions的輸出中得到
-查看表級別快照信息
db2 get snapshot for tables on dbname
注:需要把tables快照開關設為ON才會有作用
-查看鎖快照信息
db2 get snapshot for locks on dbname
或
db2 get snapshot for locks on for application agentid appl-handler
-查看動態sql語句快照信息
db2 get snapshot for dynamic sql on dbname
db2 get monitor switches
db2 update monitor switches using lock on statement on
create event monitor mymonitor for deadlocks,statements write to file 'D:\temp'
set event monitor mymonitor state 1
db2evmon - path 'D:\temp'
DB2頻繁出現死鎖,常用解決命令
db2 get snapshot for locks on sample
db2 get db cfg for sample
db2 update db cfg using dlchktime 10000
4. 查看快照信息
-查看數據庫管理器級別快照信息
DB2 get snapshot for dbm
-查看數據庫級別快照信息
DB2 get snapshot for database on dbname
-查看應用級別快照信息
DB2 get snapshot for application agentid appl-handler
注:appl-handler可以從list applicaitions的輸出中得到
-查看表級別快照信息
DB2 get snapshot for tables on dbname
注:需要把tables快照開關設為ON才會有作用
-查看鎖快照信息
DB2 get snapshot for locks on dbname
或
DB2 get snapshot for locks for application agentid appl-handler
-查看動態sql語句快照信息
DB2 get snapshot for dynamic sql on dbname
5.使用事件查看器
可以使用時間查看器收集鎖事件,SQL語句事件,從而根據事件分析鎖原因。
事件類型
使用事件監控器,首先要選定所關注的事件類型,DB2中有很多事件類型,可以用於鎖分析的通常會用到以下三種:
DEADLOCKS
DEADLOCKS WITH DETAILS
STATEMENTS
步驟:
-創建事件監控器
create event monitor evmname for eventtype write to file ‘directory’
例:create event monitor mymonitor for deadlocks, statements
write to file ‘c:\temp’
-把事件監控器打開
接上例:
set event monitor mymonitor state 1
注:1為打開,0為關閉
事件監控器開始工作,當所有應用斷掉連接后,將事件記錄下來
-查看事件細節
一、加載數據:
1、 以默認分隔符加載,默認為“,”號
db2 "import from btpoper.txt of del insert into btpoper"
2、 以指定分隔符“|”加載
db2 "import from btpoper.txt of del modified by coldel| insert into btpoper"
二、卸載數據:
1、 卸載一個表中全部數據
db2 "export to btpoper.txt of del select * from btpoper"
db2 "export to btpoper.txt of del modified by coldel| select * from btpoper"
2、 帶條件卸載一個表中數據
db2 "export to btpoper.txt of del select * from btpoper where brhid='907020000'"
db2 "export to cmmcode.txt of del select * from cmmcode where codtp='01'"
db2 "export to cmmcode.txt of del modified by coldel| select * from cmmcode where codtp='01'"
三、查詢數據結構及數據:
db2 "select * from btpoper"
db2 "select * from btpoper where brhid='907020000' and oprid='0001'"
db2 "select oprid,oprnm,brhid,passwd from btpoper"
四、刪除表中數據:
db2 "delete from btpoper"
db2 "delete from btpoper where brhid='907020000' or brhid='907010000'"
五、修改表中數據:
db2 "update svmmst set prtlines=0 where brhid='907010000' and jobtp='02'"
db2 "update svmmst set prtlines=0 where jobtp='02' or jobtp='03'"
六、聯接數據庫
db2 connect to btpdbs
七、清除數據庫聯接
db2 connect reset 斷開數據庫連接
db2 terminate 斷開數據庫連接
db2 force applications all 斷開所有數據庫連接
八、備份數據庫
1、 db2 backup db btpdbs
2、 db2move btpdbs export
db2look -d btpdbs -e -x [-a] -o crttbl.sql
九、恢復數據庫
1、 db2 restore db btpdbs without rolling forward
2、 db2 -tvf crtdb.sql
crtdb.sql文件內容:create db btpdbs on /db2catalog
db2 -stvf crttbl.sql
db2move btpdbs import
十、DB2幫助命令:
db2 ?
db2 ? restroe
db2 ? sqlcode (例:db2 ? sql0803) 注:code必須為4位數,不夠4位,前面補0
十一、bind命令:將應用程序與數據庫作一捆綁,每次恢復數據庫后,建議都要做一次bind
(1) db2 bind br8200.bnd
(2) /btp/bin/bndall /btp/bnd
/btp/bin/bndall /btp/tran/bnd
十二、查看數據庫參數:
db2 get dbm cfg
db2 get db cfg for btpdbs
十三、修改數據庫參數:
db2 update db cfg for btpdbs using LOGBUFSZ 20
db2 update db cfg for btpdbs using LOGFILSIZ 5120
改完后,應執行以下命令使其生效:
db2 stop
db2 start
補充:
db2 set schema btp 修改當前模式為"btp"
db2 list tablespaces show detail 查看當前數據庫表空間分配狀況
db2 list tablespace containers for 2 show detail 查看tablespace id=2使用容器所在目錄
db2 list application
db2 list db directory 列出所有數據庫
db2 list active databases 列出所有活動的數據庫
db2 list tables for all 列出當前數據庫下所有的表
db2 list tables for schema btp 列出當前數據庫中schema為btp的表
db2 list tablespaces show detail 顯示數據庫空間使用情況
db2 list packages for all
db2 "import from tab76.ixf of ixf commitcount 5000 insert into achact"
db2 "create table achact_t like achact"
db2 "rename table achact_t to achact"
db2 "insert into achact_t select * from achact where txndt>=(select lstpgdt from
acmact where actno=achact.actno)"
db2 get snapshot for dynaimic sql on jining
刪除一個實例:
# cd /usr/lpp/db2_07_01/instance
# ./db2idrop InstName
列出所有DB2實例:
# cd /usr/lpp/db2_07_01/bin
# ./db2ilist
為數據庫建立編目
$ db2 catalog db btpdbs on /db2catalog
取消已編目的數據庫btpdbs
$ db2 uncatalog db btpdbs
查看版本
# db2level
顯示當前數據庫管理實例
$ db2 get instance
設置實例系統啟動時是否自動啟動。
$ db2iauto -on 自動啟動
$ db2iauto -off 不自動啟動
數據庫優化命令:
reorg、runstats
當數據庫經過一段時間使用,數據空間會變得越來越龐大。一些delete掉
的數據仍存放在數據庫中,占用數據空間,影響系統性能。因此需要定期
運行reorg、runstats命令,清除已delete的數據,優化數據結構。
db2 reorg table 表名
db2 runstats on table 表名 with distribution and indexes all
因為要優化的表比較多,所以在/btp/bin目錄下提供了一個sh程序runsall,
可在當天業務結束后,運行runsall,對數據庫進行優化