db2建表空間時怎麼配置頁大小
㈠ db2建表語句主鍵最長是多少位
資料庫管理器中表的行長度不能超過:
* 在具有 4K 頁大小的表空間中,是 4005 位元組
* 在具有 8K 頁大小的表空間中,是 8101 位元組。
* 在具有 16K 頁大小的表空間中,是 16293 位元組。
* 在具有 32K 頁大小的表空間中,是 32677 位元組。
這個是DB2的硬限制,USERSPACE1是默認創建的4K頁大小的表空間。數據頁大小在表空間創建時指定,不可更改。所以你需要做的是建一個更大數據頁大小的表空間,然後把表建到這個表空間, 命令如下:
1. create tablespace ts32k pagesize 32k managed by database using (FILE 'D:\ts32k\cont1' 2000)
2. create table ..... in ts32k
解決中文存儲進資料庫超過欄位最大容量的問題
㈡ db2 資料庫頁大小與存儲或者說容量打下的關系
一個資料庫下可以有多個表空間,用來存放資料庫對象(表,索引,大對象……)。每個表空間都有一個屬性叫 pagesize ,分為4k,8k,16k,32k。所以可參考計算公式是:
表空間1的頁面數 * 表空間1的pagesize + 表空間2的頁面數 * 表空間2的pagesize + …… + 表空間n的頁面數 * 表空間n的pagesize。
至於 乘以 4 是默認認為都是 4k 頁的表空間。但實際上可能存在不同pagesize的表空間在同一個資料庫中。
over
㈢ db2 如何計算表空間和表緩存空間
BufferPool的大小 = 每頁的大小(PageSize) X 頁數(Size)
如下面這一句之中,申請了900000個大小為16384(16K)的頁, 所以BufferPool的總大小是: 900000 * 16K = 14400000K = 14064.5M = 13.73G. 即表緩存的空間是13.73G
CREATE BUFFERPOOL "BP16" SIZE 900000 PAGESIZE 16384 NOT EXTENDED STORAGE;
創建表空間的時候,可以指定PageSize的大小,以及其所佔空間的大小。 對已有的tablespace可以通過Total Pages * PageSize計算表空間的大小。
如下命令可以查看當前的tablespace的狀況:
db2=> List tablespaces show detail
Tablespace ID = 2
Name = USERSPACE1
Type = Database managed space
Contents = All permanent data. Large table space.
State = 0x0000
Detailed explanation:
Normal
Total pages = 8192 //表空間中的頁總數
Useable pages = 8160
Used pages = 2912
Free pages = 5248
High water mark (pages) = 2912
Page size (bytes) = 4096 //表空間的頁面大小。
Extent size (pages) = 32
Prefetch size (pages) = 32
Number of containers = 1
該UserSpace1的實際大小是8192 * 4K = 32M
㈣ DB2表空間擴容方法(裸設備,多容器)有哪些
根據表空間的類型不同,擴容方法不同。DB2一般分SMS和DMS兩種類型表空間,一個是系統管理表空間,一個是資料庫管理表空間。
1、SMS表空間的container是文件系統目錄或文件,一般container是自動擴展的,這種情況下你需要擴容文件系統。
查看錶空間類型和container
$db2listtablespacesshowdetail
$<tablespaceid>
2、DMS表空間也有自動擴展類型和使用裸設備的情況(container是文件或裸設備),如果是自動擴展則擴容文件系統。非自動擴展的擴容方式是增加container。
DMS+文件
$db2connectto<dbname>
$db2"altertablespace<tablespaceName>beginnewstripeset(file'<filePath>/<fileName>'655360)"
DMS+裸設備
$db2connectto<dbname>
$db2"altertablespace<tablespaceName>beginnewstripeset(device'/dev/rLR_XXXXXX'671088640)"
語句中使用了begin new stripe set,表示新的數據直接寫到新的container上,不進行數據reblance。否則替換為add,表示在container間進行數據reblance(會在後台執行,可用list utilities查看進度)
括弧中的數字表示container的page個數(表空間pagesize×這個數字即是container的大小)。
㈤ 怎麼用db2visualizer personal工具修改資料庫表空間大小
系統管理的空間(SMS)和資料庫管理的空間(DMS)是DB2資料庫中,兩種類型的基本表空間。本文將為您介紹調整表空間大小的方法,供您參考,希望對您有所幫助。
與 SMS 表空間相關聯的容器是文件系統目錄,而這些目錄中的文件會隨著表空間中對象的增長而增長。文件會增加至達到其中一個容器上的文件系統限制或達到資料庫的表空間大小限制。
DMS 表空間液檔由文件容器或原始設備容器組成,它們的大小是在將容器指定給表空間時設置的。當容器中的所有空間都已被使用時,則認為表空間已滿。但是,與 SMS 不同,您可以使用 ALTER TABLESPACE 語句來添加或擴展容器,從而允許將更多的存儲器空間提供給表空間。DMS 表空間還具有稱為「自動調整大小」的功能。當可以自動調整大小的 DMS 表空間昌此中的空間被消耗時,DB2 資料庫系統可能回擴展一個或多個文件容器。SMS 表空間具有類似於自動增長的功能但術語「自動調整大小」專門用於 DMS。
啟用和禁用自動調整大小(AUTORESIZE)
預設情況下,不會對 DMS 表空間啟用自動調整大小功能。下列語句創建不啟用自鬧迅亂動調整大小功能的 DMS 表空間:
CREATE TABLESPACE DMS1 MANAGED BY DATABASE
USING (FILE '/db2files/DMS1' 10 M)要啟用自動調整大小功能,將 AUTORESIZE YES 子句指定為 CREATE TABLESPACE 語句的一部分:
CREATE TABLESPACE DMS1 MANAGED BY DATABASE
USING (FILE '/db2files/DMS1' 10 M) AUTORESIZE YES在已創建 DMS 表空間之後,還可以通過在 ALTER TABLESPACE 語句上使用 AUTORESIZE 子句來啟用或禁用自動調整大小功能:
ALTER TABLESPACE DMS1 AUTORESIZE YES
ALTER TABLESPACE DMS1 AUTORESIZE NO有兩個其他屬性(MAXSIZE 和 INCREASESIZE)與自動調整大小的表空間相關聯。
㈥ 如何在DB2建表空間
一、建表空間和資料庫
1.在db2ad、db2db和db2ap上均執行:
[sql] view plain
db2set db2comm=tcpip
db2set db2codepage=1386
2.新建資料庫:
[sql] view plain
db2 create db <dbname> using codeset gbk territory CN collate using identity
3.連接上資料庫:
[sql] view plain
db2 "connect to <dbname>"
4.創建緩沖池 + 建立表空間;
1).刪除舊的表空間:
[sql] view plain
db2 drop tablespace tablespace1, tablespace2, tablespace3
2).新建緩沖池:
[sql] view plain
db2 create bufferpool bp32k all nodes size -1 pagesize 32k
bp32k為該緩沖池的名稱;
32K為頁大小;
size=-1表示使用預設的buffpage,而buffpage可以通過db2 get db cfg|grep -i buff參數查看到;
3).新建表空間:
[sql] view plain
db2 "create regular tablespace tablespace1 pagesize 32k managed by database using(file '/usr/yixiayizi/tablespace1' 5g) bufferpool bp32k"
db2 "create regular tablespace tablespace2 pagesize 32k managed by database using(file '/usr/yixiayizi/tablespace2' 10g) bufferpool bp32k"
db2 "create regular tablespace tablespace3 pagesize 32k managed by database using(file '/usr/yixiayizi/tablespace3' 2g) bufferpool bp32k"
注意(file '/usr/yixiayizi/tablespace1' 5g)的設置:
第一個參數:
當指向外置盤時,file改為device;
當指向文件路徑時,為file;
第二個參數:需要是絕對路徑;
第三個參數:該表空間的大小;
關於表殲坦埋空間和緩沖池的說明見如下網頁:
http://www.ibm.com/developerworks/cn/data/library/techarticles/0212wieser/0212wieser.html
5.調整表空間大小:
[sql] view plain
ALTER TABLESPACE <tablespace1> RESIZE ( FILE '/cstp/usr/db2ad/db2ad/ <tablespace1>' 5g )
6.調整緩沖池大小:
[sql] view plain
db2 alter bufferpool bp32k size 2g
--------------------------------------------------------------------------------------------
遠程客戶端的配置網路:
1.db2ad賬戶下:
1). 首先查看/etc/services中db2各個服務的埠號:
more /etc/services
可以看到如下信息:
DB2_db2ad 60040/tcp
DB2_db2ad_1 60041/tcp
DB2_db2ad_2 60042/tcp
DB2_db2ad_END 60043/tcp
2).
[sql] view plain
db2 update dbm cfg using SVCENAME DB2_db2ad
這樣在服務端實例對應的埠號就是60040;
------------
2.db2db賬戶信稿下:氏螞
1).
[sql] view plain
db2 catalog tcpip node <node_name> remote 172.17.252.214 server 60040
(上面操作的反編目:db2 uncatalog node <node_name>)
2).db2 list node directory可以看到如下信息:
Node Directory
Number of entries in the directory = 1
Node 1 entry:
Node name = <node_name>
Comment =
Directory entry type = LOCAL
Protocol = TCPIP
Hostname = 172.17.252.214
Service name = 60040
3).
[sql] view plain
db2 catalog db <dbname> at node <node_name>
(上面操作的反編目:db2 uncatalog db <dbname>)
4).db2 list db directory可以看到如下信息:
System Database Directory
Number of entries in the directory = 1
Database 1 entry:
Database alias = <dbname>
Database name = <dbname>
Node name = <node_name>
Database release level = c.00
Comment =
Directory entry type = Remote
Catalog database partition number = -1
Alternate server hostname =
Alternate server port number =
--編目系統資料庫目錄
-----------------------
授權:
在db2ad賬戶下,給db2db授權使用表空間:
[sql] view plain
db2 "grant use of tablespace <tablespace1> to user db2db"
db2 "grant use of tablespace <tablespace2> to user db2db"
db2 "grant use of tablespace <tablespace3> to user db2db"
二、建表
切換到db2db用戶,執行建表的sql語句:
db2 -vf tmp.sql