INFORMIX的監控和管理命令

zhouwf0726發表於2019-03-21
INFORMIX的監控和管理命令
監控ONLINE系統後動情況的工具主要有以下三類:
 系統監控介面(SMI)
 tbstat
 tbcheck

一、 系統監控介面(SMI):
  我們主要通過SQL命令操作online的內部資料庫sysmaster中的內部表/結構,來獲取有關的維護資訊。Sysmaster是在online初次初始化時,系統自動建立的。它實際主要儲存了一些資料結構,而不是真正的表。使用SMI有如下限制:
 不能對SMI中的表加鎖或使用隔離級別。
 不允許使用insert,delete,update等語句(只讀)
 不能使用dbschema,dbexport等命令
 使用select rowid語句將會產生不可預料的結果
主要的SMI表有:
sysdatabases:online中的資料庫資訊
systabnames:某資料庫中所有表的資訊
syslogs:邏輯日誌資訊
sysdbspaces:資料庫資訊
syschunks,syslocks等
例1:顯示處於離線(offline)狀態的chunk的序號和所在資料庫空間
Select chknum,dbsnum from syschunks where is_offline=1 or misline=!
例二:顯示滿chunk的資訊
Select chknum,dbsnum from syschunks where nfree=0
二、 TBSTAT
 列出當前時刻的資訊(實際也是讀取SMI表)
 不需要磁碟I/O
 不需要鎖等系統資源,因此不會影響系統效能

用法: tbstat [-abcdklmpstuzBDFPRX] [-r seconds] [-o file] [infile]

  -a   print all info (options: bcdklmpstu)
  -b   print buffers(緩衝區)
  -c   print configuration file(配置檔案)
  -d   print dbspaces and chunks(dbspace和chunk)
  -k   print locks(鎖)
  -l   print logging(日誌)
  -m   print message log(訊息日誌)
  -p   print profile(profile檔案)
  -s   print latches(門閘)
  -t   print tblspaces(表空間)
  -u   print users(使用者)
  -z   zero profile counts
  -B   print all buffers
  -D   print dbspaces and detailed chunk stats
  -F   print page flushers(頁重新整理程式)
  -P   print profile, including BIGreads
  -R   print LRU queues(LRU佇列)
  -X   print entire list of sharers and waiters for buffers
  -r   repeat options every n seconds (default: 5)
  -o   put shared memory into specified file (default: tbstat.out)
infile use infile to obtain shared memory information

三、 幾個常用的tbstat選項:
 tbstat -m :顯示訊息日誌的最後20行.
訊息日誌的內容包括:
1)、檢查點資訊
2)、讀寫錯誤資訊
3)、ONLINE模式轉換資訊
4)、長事務
5)、日誌檔案滿(LOG FILE FULL )
若想顯示完整資訊,可直接編譯訊息日誌檔案.
 Tbstat -d:磁碟空間的使用情況,包括DBSPACE和CHUNK的資訊
例:RSAM Version 5.03.UC1  -- On-Line -- Up 09:45:41 -- 816 Kbytes

Dbspaces
address number  flags  fchunk  nchunks flags owner  name
8040a244 1    1    1    1   N   informix rootdbs
1 active, 8 total

Chunks
address chk/dbs offset  size   free   bpages  flags pathname
80409d84 1  1  0  300000  231871      PO- /dev/rdata
1 active, 8 total              
其中的FREE項,顯示了該CHUNK的空閒空間大小(Kbytes).
 Tbstat -l :日誌檔案情況
Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
 P-2 0    16    0    0    0.00
   phybegin physize phypos  phyused %used
   101782  15000  960   0    0.00

Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
 L-2 0    16    1    1    1  1.0    1.0

address number  flags  uniqid  begin    size   used  %used
8042de94 1    U---C-L 1    10521a    7500   630   8.40
8042deb0 2    F------ 0    106f66    7500    0   0.00
8042decc 3    F------ 0    108cb2    7500    0   0.00
8042dee8 4    F------ 0    10a9fe    7500    0   0.00
8042df04 5    F------ 0    10c74a    7500    0   0.00
8042df20 6    F------ 0    10e496    7500    0   0.00
                              
其中:%USED: 使用百分比
FLAGS欄位的含義:
F: 空閒 B:已備份 C: 正在接收事物記錄
U: 正在使用 A: 新增日誌 L: 包含最後一個檢查點
 Tbstat - u:ONLINE的使用者情況
Users
address flags  pid   user   tty   wait  tout locks nreads  nwrites
804019f4 ------D 329   root   console 0    0  0   179   2
80401a64 ------D 0    root   console 0    0  0   0    0
80401ad4 ------F 330   root       0    0  0   0    0
3 active, 20 total

Transactions
address flags user   locks log begin isolation retrys coordinator
804022b4 A---- 804019f4 0   0     NOTRANS  0
804028d8 A---- 80401a64 0   0     NOTRANS  0
2 active, 20 total  
其中:flages欄位的含義:
第一列:(S:等待mutex;Y:等待條件;L:等待鎖;B:等待緩衝區;
      C:等待檢查點;X:長事務清理;G:等待長緩衝寫;T:等待事務)
第二列:(*:事務執行時,發生I/O錯誤)
第三列:(A:正在備份;B:操作已被記錄在日誌中;P:分佈處理已準備好; 
      C:正在提交;R:正在回滾)
第四列:(P:會話的主線索)
第五列:(R:在read rsam 呼叫中;X:程式在關鍵分割槽)
第七列:(M:特殊監控;D:特殊線索;C:清理線索;F:特殊清頁程式;
       B:特殊B+樹清頁線索)
 Tbstat -k :使用者持有鎖的情況
鎖按照粒度分為6種: 庫鎖、表鎖、頁鎖、行鎖、位元組鎖、鍵鎖
位元組鎖:更新包含有VARCHAR型別的行時,加在該行上的鎖。
鍵鎖:用於索引樹上的鎖。一般在相應位元組上加刪除標誌。
這幾種鎖的識別如下:
    TYPE  TBLSNUM  ROWID   SIZE 
庫鎖  HDR+X  1000002   205     0 
表鎖       100000e   0      0
頁鎖             100      0
行鎖             101 
位元組鎖  HDR+B               909
鍵鎖             很大的16進位制數
鎖的生命期:1、不使用事務時,操作完成即會釋放對應的鎖;
2、 若使用事務,鎖將伴隨整個事務。(即隨這COMMIT WORK或ROLLBACK WORK而釋放)  
(**鎖的幾種型別:共享鎖(SHARE),排它鎖(EXCLUSIVE),可升級鎖**)
 tbstat -p : 顯示系統資源狀況(是否充分)
Profile
dskreads pagreads bufreads %cached dskwrits pagwrits bufwrits %cached
181  199   358   49.44  7   8    2    0.00

isamtot open start  read  write rewrite delete  commit  rollbk
3   1   1   0   0   0   0    1    0

ovtbls ovlock ovuser  ovbuff  usercpu syscpu  numckpts flushes
0    0    0    0    0.00   0.00   2    239

bufwaits lokwaits lockreqs deadlks dltouts lchwaits ckpwaits compress
0    0    0    0    0    0    0    0 
OVTBLS:指示TBLSPACE值不夠 ,TBLSPACES值應增大
OVLOCK:鎖溢位  LOCKS應增大
OVUSER:使用者表資源不夠  USERS
OVBUF:緩衝區資源不夠   BUFFERS
以上數字若持續增加,表明相應引數值應調整
DEADLOCKS:檢測到的死鎖數
DLTOUTS:網路超時死鎖
DEADLOCK_TIMEOUT:一般為60秒,若增大此數字,可以減少死鎖數,但會增加響應時間,使用者看來效能更差;若減少此數字,死鎖數可能會增大,但會減少響應時間,在使用者看來,響應時間變快了。

四、 ONCHECK:
 定位並修復資料與索引的不一致
 檢查磁碟上的資料結構
 顯示不同資料結構的報告
 某些選項可能回在它所涉及的表上家一個共享鎖
用法: tbcheck [-clist] [-plist] [-qny]
    [ { database[:[owner.]table] | TBLSpace number | Chunk number }
      { rowid | page number } ]

-c   - check(檢查)
  r  - reserved pages(保留頁)
  e  - TBLSpace extents and chunk extents
  c  - database catalogs(目錄)
  i  - table indexes(表的索引)
  I  - table indexes and rowids in index(表的索引和索引的rowid)
  d  - TBLSpace data rows including bitmaps(表空間的資料行包括點陣圖)
  D  - TBLSpace data rows including bitmaps, remainder pages and blobs
                    
-p   - print(顯示)
  r  - reserved pages (-cr) (保留頁)
  e  - extents report (-ce)(extent)
  c  - catalog report (-cc)(目錄)
  k  - keys in index (-ci)(索引的鍵值)
  K  - keys and rowids in index (-cI)
  l  - leaf node keys only (-ci)
  L  - leaf node keys and rowids (-cI)
  d  - TBLSpace data rows (-cd)
  D  - TBLSpace data rows including bitmaps, remainder pages and blobs (-cD)
  t  - TBLSpace report
  T  - TBLSpace disk utilization report
  p  - dump page for the given [table and rowid | TBLSpace and page number]
  P  - dump page for the given chunk number and page number
  B  - BLOBSpace utilization for given table(s) [database:[owner.]]table

-q   - quiet mode - print only error messages
-n   - answer NO to all questions
-y   - answer YES to all questions

五、 幾個主要的tbcheck選項:
 TBCHECK -PT  DATABASE:TABLE
產生有關TBLSPACE的報告。包括EXTENT和空間使用資訊。資訊的輸出來自TBLSPACE TBLSPACE,這是一個特殊的TBLSPACE,用來跟蹤ONLINE建立的資料庫,是根DBSPACE中的第二個TBLSPACE,其TBLSNUM為1000002。這個TBLSPACE中的每行儲存一個資料庫的資訊。
 TBCHECK -Cd DATABASE:TABLE
測試一個表空間的資料。它從表空間中讀取所有頁做一致性檢查,並檢測點陣圖也以確認該頁被正確對映。它所做的工作包括:確認資料的有效性,對特殊資料做相應標誌(如BLOB頁,剩餘頁等)。
 TBCHECK -Ci DATABASE:TABLE
測試表上的索引,比如是否所有的ROWID都指向表中的有效行,必要時,重建SYSINDEXES資訊。它所做的工作包括:驗證索引是否有效,重建被損壞的索引,並對索引樹重新做相應調整。
索引策略:
應加索引的欄位:用於連線(JOIN)的欄位,用來過濾的欄位(在WHERE條件中使用的欄位,稱為過濾器),用於排序的欄位(ORDER BY)。
不應加索引的欄位:有高重複值的欄位
另外,可以用主鍵限制索引個數,加複合索引來避免重複,用聚簇索引加快索引速度。
六、其它重要的工具:
 UPDATE STATISTICS  [LOW | MEDIUM | HIGH]
此語句的三個主要作用:更新內部表;產生資料分佈;優化儲存過程
應定期使用
 tbinit
用於初始化資料庫共享記憶體。每次開機後都必須執行此命令。一般將它放在/etc/rc2.d目錄下的一個自引導檔案中。
例如:當以應用軟體註冊時,系統提示:
DBERR –529/C-ISAM –123 [Open Database]
使用finderr查529錯誤,提示:
-529  Cannot attach to shared memory. {不能使用共享記憶體}
此時,使用tbinit命令將資料庫共享記憶體進行初始化後,系統恢復正常。
 tbmode -sy| tbmode -ky
用於關閉資料庫共享記憶體。為了資料的安全,每次關機前都必須執行此命令。為了簡化操作,我們經常將它放在/etc/rc0.d目錄下的一個自引導檔案中,讓系統進入多使用者時自動來執行此檔案。
 finderr
用來查詢資料庫的錯誤。當系統出現資料庫錯誤時,系統處了給你簡單的出錯提示外,還給出一個錯誤號。你可以使用此命令對這種錯誤進行深入的分析,然後針對不同的錯誤進行相應的處理。
例如:當你在超級使用者root下對儲蓄資料庫bankstar進行操作時,系統提示:
387: No connect permission.
111: ISAM error: no record found.
意思是:系統出現387錯誤,錯誤的原因是:沒有connect許可權。
原因分析:
運算元據庫至少需要CONNECT許可權。解決如下:informix使用者註冊,執行如下SQL語句:grant connect to root
 dbaccess(略)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-242072/,如需轉載,請註明出處,否則將追究法律責任。

相關文章