如何在DB2建表空间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在DB2建表空间相关的知识,希望对你有一定的参考价值。

一、建表空间和数据库
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
参考技术A 两种方式
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本回答被提问者和网友采纳

在 DB2 中创建表抛出 BOOLEAN data type is not supported 错误。知道如何解决这个问题吗?

【中文标题】在 DB2 中创建表抛出 BOOLEAN data type is not supported 错误。知道如何解决这个问题吗?【英文标题】:Create table in DB2 throws BOOLEAN data type is not supported error. Any idea how to resolve this? 【发布时间】:2019-01-31 18:27:55 【问题描述】:
CREATE TABLE AR.Sample_tableM
(
   spring_profiles_active   VARCHAR (100),
   isActive                 BOOLEAN
);
 Lookup Error - DB2 Database Error: ERROR [428H2] [IBM][DB2/LINUXX8664]
 SQL20441N  A "BOOLEAN" data type is not supported in the context where
 it is being used.

【问题讨论】:

。 .您不理解错误消息的哪一部分?使用char(1)tinyint 【参考方案1】:

自版本 11.1 起,Db2-LUW 支持 的 BOOLEAN 数据类型。

较早/较旧的 Db2-LUW 版本不支持此列数据类型,因此这可以解释您的 SQL20441N 症状。

早期版本支持 BOOLEAN 用于其他用途,包括参数传递,但它不像今天的版本那样是列数据类型。

【讨论】:

以上是关于如何在DB2建表空间的主要内容,如果未能解决你的问题,请参考以下文章

db2默认表空间userspace1怎么查看

在db2 如何计算表空间和表缓存空间?有会的么?

DB2 中模式的默认表空间

DB2 删除表后如何释放相应磁盘空间

如何在oracle10G中创建表空间

db2 如何计算表空间和表缓存空间?