如何在DB2建表空间

 我来答
Ben
2015-05-15 · 知道合伙人软件行家
Ben
知道合伙人软件行家
采纳数:860 获赞数:2875
认真回答者.

向TA提问 私信TA
展开全部
一、建表空间和数据库
1.在db2ad、db2db和db2ap上均执行:

[sql] view plaincopy
db2set db2comm=tcpip
db2set db2codepage=1386
2.新建数据库:

[sql] view plaincopy
db2 create db <dbname> using codeset gbk territory CN collate using identity
3.连接上数据库:

[sql] view plaincopy
db2 "connect to <dbname>"
4.创建缓冲池 + 建立表空间;
1).删除旧的表空间:

[sql] view plaincopy
db2 drop tablespace tablespace1, tablespace2, tablespace3
2).新建缓冲池:

[sql] view plaincopy
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 plaincopy
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 plaincopy
ALTER TABLESPACE <tablespace1> RESIZE ( FILE '/cstp/usr/db2ad/db2ad/ <tablespace1>' 5g )
6.调整缓冲池大小:

[sql] view plaincopy
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 plaincopy
db2 update dbm cfg using SVCENAME DB2_db2ad
这样在服务端实例对应的端口号就是60040;
------------
2.db2db账户下:
1).
[sql] view plaincopy
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 plaincopy
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 plaincopy
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
badkano
2014-10-30 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885369
团长

向TA提问 私信TA
展开全部
两种方式
1.利用db2信息中心,开始 输入 db2cc 启动图形界面,按照界面去一步步操作
2.利用sql语句,在命令窗口或提示符或第三方工具,里执行语句
首先创建缓冲池 create bufferpool bufp1 immediate size 1000k
然后创建表空间 create tablespace tbspname .....
详细语法自己就不列出来了。

cibcms:/cibcms/ypp/sql>db2 -v "import from /dev/null of del replace into rqb"
import from /dev/null of del replace into rqb
SQL3015N An SQL error "-1585" occurred during processing.

SQL1585N A system temporary table space with sufficient page size does not
exist. SQLSTATE=54048

SQL3015N An SQL error "-1585" occurred during processing.

SQL1585N A system temporary table space with sufficient page size does not
exist. SQLSTATE=54048

没有表空间
表空间不够

最近在项目中用到了DB2数据库,在执行一些复杂查询时,系统报出"不存在具有足够页大小的系统临时表空间 SQLSTATE=54048"的数库问题。原因是数据库系统的临时表空间所用的缓冲池页大小只有4,缓冲池大小不够。但DB2系统默认的临时表空间已经 指定的缓冲池不能改变,DB2系统默认的临时表空间也不能删除,所以只能新加另一个类型是“系统临时”的表空间。
步骤:
1、打开DB2管理工具“控制中心”,以数据库管理员身份登录。
2、创建页大小大于4的缓冲池(如16)。
3、创建别一个类型是“系统临时”的表空间,并把该表空间的缓冲池指定为刚建立的缓冲池。
db2数据导入导出时用到的一些命令 清空表命令
1。快速清空表
db2 alter table tabname activate not logged initially with empty table ;
db2 import from /dev/null of del replace into tabname

2。在用IMPORT命令向数据库插入大量数据时,如何避免日志空间满错误
在执行IMPORT命令时, 如果使用循环日志, 有时会出现日志满错误, 这时可用COMMITCOUNT参数来解决. 因为日志空间满往往是因为所有的日志均处于活动状态导致的.而COMMIT执行后, 会释放所占据的资源, 其中包括日志 .这样, 被当前事务使用的日志在COMMIT命令执行后, 即变成非活动状态了.
3。export
db2 export to staff.ixf of ixf select * from userid.staff

4。import
db2 import from stafftab.ixf of ixf insert into userid.staff
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式