DB2命令大全

1.1查看錶空間java

db2 list tablespaces show detailsql

 


1.2查看數據庫的表死鎖數據庫

方法一:併發

打開監控   db2 update monitor switches using lock onapp

查看鎖表  db2 get snapshot for locks on 數據庫名稱工具

db2 "force application (handle id)"性能

中止鎖的進程測試

List Of Locks   #在application handle緊跟後面出現list of locks代表該application handle 鎖了表或對象fetch

 Lock Name                = 0x030039020DFF11000000000052大數據

 Lock Attributes             = 0x00000000

 Release Flags               = 0x00000004

 Lock Count                  = 1

 Hold Count                  = 0

 Lock Object Name            = 1163533    #被鎖對象名稱

 Object Type                 = Row        #被鎖對象類型

 Tablespace Name             = tbs_data    #被鎖對象所在的表空間

 Table Schema                = DB2INST1

 Table Name                  = t_mytable1   #被鎖的表名

 Mode                        = X

 

 

方法二:

使用select agent_id,tabname,lock_mode from table(snap_get_lock('dbname')) as aa

查看:進程hander,表名,鎖模式

 

 


1.3查看和更改快照參數

  db2 get monitor switches

 

監控開關 數據庫管理器參數 註釋

  BUFFERPOOL DFT_MON_BUFPOOL 緩衝區的讀寫狀況和發生時間

  LOCK DFT_MON_LOCK 鎖持有,鎖等待,以及死鎖的發生狀況

  SORT DFT_MON_SORT Heap的使用狀況,排序性能

  STATEMENT DFT_MON_STMT 語句起始時間,語句內容

  TABLE DFT_MON_TABLE Measure of activity (rows read/written)

  UOW DFT_MON_UOW Start/end times, completion status

  TIMESTAMP DFT_MON_TIMESTAMP Timestamps

爲了觀察快照中的鎖和執行語句狀況,通常把LOCK和STATEMENT選項設爲ON,也能夠酌情把其餘開關打開,示例以下: db2 update monitor switches using lock on statement on


1.4查看和更改與鎖相關的主要配置參數

CLP方式:

  db2 get db cfg

  在參數列表中尋找DLCHKTIME和LOCKTIMEOUT兩個參數。

  -DLCHKTIME 單位是毫秒,是DB2檢查死鎖的間隔時間,假設該值爲10000ms,則意味着每隔10秒鐘檢查一下當前數據庫中有無死鎖存在,若有死鎖,會選擇回滾其中的某一個事務,讓另一個事務完成交易。

  -LOCKTIMEOUT單位是秒,是鎖等待最長時間,超過該時間仍未得到鎖,則返回錯誤。

  設置提示:

  -缺省狀況下,LOCKTIMEOUT是-1,意味着鎖等待時間無限期,這和實際應用需求通常是不太相符的,須要將其值設爲大於0的一個數。

  -DLCHKTIME時間一般要設得比LOCKTIMEOUT時間小一些,不然未等發現死鎖,就會被以鎖等待超時而返回錯誤。

  更改示例(CLP方式)

  db2 update db cfg using locktimeout 10


1.5查看當前併發應用

CLP方式:

  db2 list applications

  或db2 list applications show detail

  或 db2 list applications for database dbname [ show detail]

  該命令能夠查看當前是否有多個應用在鏈接着數據庫,從而排查是否有併發的存在。

  注意Application Name 和Application Id兩欄,Application Name欄列出了應用的名字,db2bp一般意味着目前有CLP在鏈接數據庫,java則意味着可能有db2cc或用戶本身的java應用在鏈接數據庫,在application Id欄中能夠看到這些應用來自於哪些機器,本機的就顯示爲 LOCAL + 用戶名 + 開始鏈接上的時間,遠程的就會顯示爲16進制的IP地址+用戶名+開始鏈接上的時間。經過排查併發應用從而消除測試中沒必要要的鎖現象。

 

 


1.6使用事件查看器

使用事件監控器,首先要選定所關注的事件類型,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: emp’

  -把事件監控器打開

  接上例:

  Db2 「set event monitor mymonitor state 1」

  注:1爲打開,0爲關閉

  事件監控器開始工做,當全部應用斷掉鏈接後,將事件記錄下來

  -格式化監控器的文件

db2evmon –db dbname -evm mymonitor >snap.txt

-察看監控器的文件

More snap.txt


1.6.1查看執行最耗時的SQL

 

Select stmt_text ,(stop_time-start_time) from stmt_ monitor_name Where stmt_operation not in (7,8,9,19) order by decimal(stop_time-start_time) desc fetch first 10 rows only


1.6.2查看按照順序降序排列執行次數最多的SQL

Select distinct(stmt_text),count(*) Count from stmt_monitor_name Where stmt_operation not in (7,8,9,19) group by stmt_text order by count(*) desc fetch first 10 rows only

 


1.6.3查看耗CPU時間最多的SQL

Select stmt_text ,user_cpu_time from stmt_monitor_name where stmt_operation not in (7,8,9,19) order by  user_cpu_time  desc fetch first 10 rows only

 


1.6.4查看總排序時間降序排列排序時間最長的SQL

Select stmt_text,total_sort_time from stmt_monitor_name where stmt_operation not in (7,8,9,19) order by  decimal(total_sort_time)  desc fetch first 10 rows only

 

 


1.7查看錶上的索引

     describe indexes for table 表名


1.8獲得誤刪除表的ID

list history dropped table all for 數據庫名 獲得刪除表的tableid

 


1.9數據庫導入導出

db2move databasename export -sn 模塊名 –tn 表名 -u db2admin -p *****

 

db2look -d databasename -e -a -o db2look_htdctr.sql

 

 

db2move test import -u 用戶名 -p 密碼

 

 

 


1.10編目數據庫

db2set DB2_CREATE_DB_ON_PATH=YES

 

 

 

CATALOG TCPIP NODE Server51
    REMOTE IP_Address
    SERVER 51000
    REMOTE_INSTANCE DB2
    OSTYPE NT;

 


1.11查詢SQLCODE

Db2 ? 22001

 

Db2 ? sql-204

 

 


1.12 備份數據庫

備份表空間

Db2 「backup database databasename」 tablespace tablespaceName to /path

 

Db2 backup database dbname to /path

 

 


1.13中止單個數據庫

db2 connect to sample
db2 quiesce db immediate force connections
db2 terminate
db2 deactivate db sample
db2 connect to sample
db2 unquiesce db

 


1.14查看並修改DB2端口

C:/WINDOWS/SYSTEM32/DRIVERS/ETC/services

 

db2 get dbm cfg 查看SVCENAME名稱

 

修改db2端口

update dbm cfg using svcename 50000

 


1.15查看數據庫

db2 list db directory

 


1.16插入空值到表中

import from /dev/null of del replace into db2inst1.表名

 


1.17創建nickname

一、在db2命令窗口下,運行connect to 目標庫 user 用戶名 using 密碼

二、顯示全部對象 list tables

三、創建nickname create nickname  nickname的名字  for server名.schma名.table名


1.18查看前幾條記錄

查看記錄

select * from table fetch first 10 rows only

 

 


1.19查看db2實例

Db2ilist

 

 


1.20查看數據庫語句執行時間

 

見1.6

 


1.21建立數據庫

db2 "CREATE DATABASE MIBSSE AUTOMATIC STORAGE YES  ON '/db2/xbank2' DBPATH ON '/db2/xbank2' USING CODESET UTF-8 TERRITORY CN COLLATE USING SYSTEM PAGESIZE 4096"

 


1.22查看BufferPool

db2 "select * from syscat.bufferpools"

 

 


1.23單表導入導出

db2 Export to "F:/fund/FssProduct.txt" of del select * from tablename

 

db2 import from 「F:/fund/FssProduct.txt」 of del messages 「d:/msgs.txt」 insert into tablename

 


1.24 數據庫全部快照

db2 get snapshot for dynamic sql on mibsse >snap.out

 

經過Linux命令查出全部的執行最大次數

 grep -n "Number of executions" snap.out |grep -v "= 0" |sort -k 5,5rn|more

 

 


1.25查看臨時表空間使用狀況

db2 get snapshot for tables on mibsse >snap2.out

db2 get snapshot for application agented <agent ID>

 


1.26經過性能管理視圖監控數據庫

db2 list tables for schema sysibmadm;

或在db2客戶端察看視圖

 


1.26.1監控緩衝池命中率

 

--須要開啓BUFFERPOOL監控

db2 update dbm cfg using DFT_MON_BUFPOOL on

Select substr(bp_name,1,30) as bp_name,data_hit_ratio_percent,index_hit_ratio_percent,total_hit_ratio_percent
from sysibmadm.bp_hitratio where bp_name not like 'IBMSYSTEM%';

 


1.26.2監控Package Cache 大小

with dbcfg1 as (select int(value) as pckcachesz from sysibmadm.dbcfg where name ='pckcachesz')
Select pckcachesz as package_Cache_Size ,pkg_cache_lookups as lookups, pkg_cache_inserts as inserts,pkg_cache_num_overflows as overflows, 100*pkg_cache_size_top/(pckcachesz * 4096) as pkg_Cache_alloc
from dbcfg1,sysibmadm.snapdb


1.26.3監控執行成本最高的SQL

 

 

Select agent_id ,rows_selected,rows_read from sysibmadm.APPLICATION_PERFORMANCE[Z1] ;

 


1.26.4監控容許最長的SQL

Select appl_name,elapsed_time_min as elapsedmin,appl_status as status,authid as auth_id,inbound_comm_address as ip_address,stmt_text as SQL_statement
from sysibmadm.long_running_sql order by 2 desc


1.26.5監控SQL準備和預編譯時間最長的SQL

Select num_executions, average_execution_time_s,prep_time_ms,prep_time_percent, stmt_text 
       from sysibmadm.query_prep_cost
       where average_execution_time_s>0 order by prep_time_percent des


1.26.6監控執行次數最多的SQL

select  "NUM_EXECUTIONS", "AVERAGE_EXECUTION_TIME_S",
    "STMT_SORTS", "SORTS_PER_EXECUTION", "STMT_TEXT", "DBPARTITIONNUM"
  from "SYSIBMADM"."TOP_DYNAMIC_SQL"
  where NUM_EXECUTIONS>0
  order by 1 desc fetch first 5 rows only;


1.26.7監控排序次數最多的SQL

select  "NUM_EXECUTIONS", "AVERAGE_EXECUTION_TIME_S",
    "STMT_SORTS", "SORTS_PER_EXECUTION", "STMT_TEXT", "DBPARTITIONNUM"
  from "SYSIBMADM"."TOP_DYNAMIC_SQL"
  where NUM_EXECUTIONS>0
  order by STMT_SORTS desc fetch first 5 rows only

 


1.26.8監控LOCK WAIT等待時間

select ai.appl_name,ai.primary_auth_id,ap.lock_waits,ap.lock_wait_time/1000 as "Total Wait (s)",(ap.lock_wait_time/ap.lock_waits) as "Avg Wait(ms)"
from sysibmadm.snapappl_info ai,sysibmadm.snapappl ap
where ai.agent_id = ap.agent_id
and ap.lock_waits>0;

 


1.26.9 監控LOCK CHAIN

select ai_h.appl_name,ai_h.primary_auth_id,lw.authid,lw.lock_mode,lw.tabname,lw.tabschema,timestampdiff(2,char(lw.snapshot_timestamp-lw.lock_wait_start_time)) as "Wating(s)"
from sysibmadm.lockwaits lw,sysibmadm.snapappl_info ai_h
where lw.agent_id_holding_lk = ai_h.agent_id;


1.26.10監控鎖內存使用
1.26.11 監控鎖升級、死鎖和鎖超時
1.26.12監控全表掃描的SQL

Select substr(authid,1,10) as authid,substr(appl_name,1,20) as appl_name,percent_rows_selected from sysibmadm.appl_performance

 


1.26.13監控Page Cleaners是否足夠
1.26.14監控Prefecher是否夠用
1.26.15監控內存使用狀況

Select pool_id,pool_secondary_id,pool_current_size,pool_watermark from sysibmadm.snapdb_memory_pool

 


1.27db2pd工具
1.27.1診斷數據庫加鎖的表的狀況

db2pd -db dbname -applications | more

 

獲得下表

 

Address            AppHandl [nod-index] NumAgents  CoorEDUID  Status     

00xC0000000D0300080 27898    [000-27898] 1          45348      Lock-wait

 

 

再經過db2pd -db dbname –transactions

 

找尋 status=Lock-Wait 對應的AppHandl句柄27898對應的TranHdl 122

Address            AppHandl [nod-index] TranHdl

0xC0000003417F2680 27898    [000-27898] 122

 

再經過db2pd -db dbname–locks 查詢 122 對應的鎖狀態

 

Address            TranHdl    Lockname                   Type

0xC0000003418AF400 122        000200A8000000020040000552 Row        .NS  W   315

0xC0000003418A6A80 122        000000F4000000010001EB0056 Internal V

 


1.27.2診斷鎖超時

db2pd –db dbname –locks –transactions –applications –dynamic

 


1.27.3捕獲正在等待的鎖定

db2pd –db dbname –locks wait

 


1.27.4監控動態的SQL語句

db2pd –db dbname –app –dyn

 


1.27.5監控內存使用狀況

db2pd –memblock

 


1.27.6監控哪一個應用程序用光了 表空間
1.27.7監控全表掃描的表

db2pd –db dbname -tcbstats

 


1.27.8監視恢復
1.27.9監控事務正在使用的資源量
1.27.10監控日誌使用狀況

db2pd –db dbname –logs


1.27.11收集操做系統信息

db2pd –osinfo

 


1.27.12獲取數據庫管理器配置參數

db2pd –db dbname -dbmcfg

 


1.27.13獲取數據庫配置參數

db2pd –db dbname -dbcfg

 

 

 


1.28擴大數據庫事務日誌

db2 get db cfg

 

使用db2 update db cfg using 改變

Log file size (4KB)                         (LOGFILSIZ) = 10000

Number of primary log files                (LOGPRIMARY) = 32

Number of secondary log files               (LOGSECOND) = 24

 

 


1.29db2mtrk使用方法

db2mtrk –i –d –v

 

db2mtrk –i  #顯示當前實例的內存使用狀況

 

db2mtrk –I –v #顯示當前實例的內存使用詳細狀況

 

db2mtrk  –d #顯示數據庫的內存使用狀況

 

db2mtrk –d –v #顯示數據庫的內存使用狀況的詳細信息

 

db2mtrk –p #顯示代理進程專用內存使用率

 

-m 參數選項用於顯示最大的內存使用上限

-w 參數選項用於顯示使用過程當中內存達到的最大值

-r  參數選項用於重複顯示

Interval 指定以秒爲單位的重複的間隔

count 指定間隔次數

 


1.30列出全部的db2註冊變量

db2set -lr

相關文章
相關標籤/搜索