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