db2表空間及日志文件調整


1.SQLState '57011' and errorCode '-964'
  原因:數據庫的日志文件已滿
  解決方法:修改日志文件大小(加大),增加日志文件個數,增加輔助日志文件個數(三個修改參數可以任意選擇)

  查看數據庫的配置參數:get db cfg for <dbname>  
         日志文件大小(4KB)  (LOGFILSIZ) = 1024 (每個日志文件大小為1024*4KB=4MB)
         主日志文件的數目     (LOGPRIMARY) = 3
         輔助日志文件的數目   (LOGSECOND) = 1

  修改數據庫的配置參數:update db cfg for <dbname> using <p> <v>
  修改日志文件大小:update db cfg for <dbname> using LOGFILSIZ  4096
  修改主日志文件個數:update db cfg for <dbname> using LOGPRIMARY  6
  修改輔助日志文件個數:update db cfg for <dbname> using LOGSECOND 10

x

db2pd -db DNJC transactions
db2pd -db DNJC -dynamic
db2pd -db DNJC -logs


表空間滿了,肯定使用的是DMS的表空間,對於DMS表空間,可以有以下幾種方式擴容:
1. 向表空間中添加新的容器:
ALTER TABLESPACE 表空間名 ADD (FILE '容器文件路徑和名稱' 容器文件大小)
2. 把現有的容器擴大:也有兩種方法
(1)ALTER TABLESPACE 表空間名 RESIZE(FILE '已滿的容器名' 更改后容器的大小)
(2)ALTER TABLESPACE 表空間名 EXTEND(FILE '已滿的容器名' 准備增加的大小)
若表空間直接用的是祼設備的話,就需要把file 改成device.
在做的時候一定要考慮到rebalance時間,增加了容器以后DB2會自動重新balance數據,根據tablespace的數據大小需要一定的時間來完成。這期間訪問速度會下降很多。
要注意是幾K頁的表空間,4K最大表空間限制在64G,8K是128G,16K是256G,32K是512G,如果有上述限制是不可以直接加CONTAINER的,那只有再建一個新的表空間!
問一下容器文件太大對讀寫性能有多大影響?
一直有這樣的疑問,在表空間不夠的時候,到底是增大文件的大小好還是添加一個容器文件好
如果你有分離的磁盤,當然是在物理上分離的磁盤上建立文件容器好了,i/o比較快。
windows環境中還是擴大container的size比較實用,可以避免rebalance


增加表空間大小
DB2數據庫使用時,如果表空間滿了,該如何擴容呢?下文將教給您DB2數據庫表空間擴容的方法,供您參考,希望對您有所幫助。
1)直接添加一個容器的例子:
db2 " ALTER TABLESPACE PAYROLL ADD (DEVICE '/dev/rhdisk9' 10000) "
加容器之后DB2會有一個自動balance的過程,可能會持續幾個小時!!! 一定要注意該選項,修改前確認該選項是否能滿足業務需求!
2)改變現有容器的大小(該方法不會觸發balance,但如果表空間建立在裸設備上,則要擴沖裸設備空間):
db2 " ALTER TABLESPACE TS1 RESIZE (FILE '/conts/cont0' 2000, DEVICE '/dev/rcont1' 2000, FILE 'cont2' 2000) "
注意這種方式就是將原有的相應容器都改成大小是2000頁
db2 "ALTER TABLESPACE TS1 RESIZE (ALL 2000)"
這種方式就是把表空間中所有的容器大小都改成2000頁
db2 " ALTER TABLESPACE TS1 EXTEND (FILE '/conts/cont0' 1000, DEVICE '/dev/rcont1' 1000, FILE 'cont2' 1000) "
這種方式就是將相應的容器都擴大1000頁,也就是增加1000頁。
db2 " ALTER TABLESPACE DATA_TS EXTEND (ALL 1000)"
這種方式就是將所有的容器都增加1000頁。

創建表空間:
create tablespace TS4R_INDEX
pagesize 4K
managed by database using(file 'E:\DNJC\TS4R_INDEX' 10G)
extentsize 32
bufferpool BP_4K
dropped table recovery off;

改變容器大小:
db2 alter tablespace idx_data resize(file 'd:\db2\datafile_netdb\idx_data' 32000);
增加容器:
db2 alter tablespace idx_data add(file 'd:\db2\datafile_netdb\idx_data_exl' 640);
表空間設為自增長:
db2 alter tablespace idx_data autoresize yes increasesize 10240K maxsize none;
查看表空間是否為自增長及增長大小:
db2 get snapshot for tablespaces on netdb |more;

db2 get snapshot for locks on 數據庫名稱,只能查看一個數據庫的死鎖,是否有辦法查詢所有數據庫的死鎖 用list db directory得到所有數據庫名,再循環執行快照命令
db2 get snapshot for dynamic sql on db 得到的結果文本各個項的具體含義

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM