DB2 执行SQL报错: DB2 SQL Error: SQLCODE=-1585, SQLSTATE=54048
说明建的db2数据库没有建足够大的临时表空间,新建一个足够大的临时表空间
1.创建数据库
db2 "create database testdb automatic storage yes on /dbauto dbpath on /database using codeset UTF-8 territory cn collate using system"
dbpath on 表示数据库目录 using codeset XXXX terriory XXX 指定数据库编码集和区域
1.1显示实例下创建的数据库
db2 list db directory
2.数据库连接
db2 connect to testdb
3.创建缓冲池
db2 "create bufferpool bp32k size 10000 pagesize 32k" size表示页数,pagesize表示页大小,size*pagesize就是缓冲池的内存大小
4.创建数据库管理(DMS)的数据表空间
db2 "create large tablespace tbs_data pagesize 32k managed by database using (file '/data1/tbs_data/cont0' 100M, file '/data1/tbs_data/cont1' 100M) extentsize 32 prefetchsize automatic bufferpool bp32k no file system caching"
5.创建系统管理(SMS)的临时表空间
db2 "create temporary tablespace tbs_temp pagesize 32k mamaged by system using ('/data1/tbs_temp') bufferpool bp32k"
using 指定表空间的容器,SMS支持的容器类型只是目录
6.创建(SMS)管理的用户临时表空间
db2 "create user temporary tablespace tbs_user_temp pagesize 32k managed by system using ('/data1/tbs_usertemp') bufferpool bp32k"
7.创建自动存储管理(Automatic Storage)的表空间
7.1 db2 "create tablespace tbs_index pagesize 32k bufferpool bp32k"
7.2 db2 "create tablespace tbs_data2 initialsize 100M increasesize 100M maxsize 1000G"
只有建库时启用了automatic storage yes,表空间才支持自动存储管理
8.显示每个表空间核心信息
db2 list tablespaces
8.1显示指定表空间相关信息
db2 list tablespace containers for <tablespace_id> show detail
8.2比list tablespaces更详细的显示表空间信息
db2 get snapshot for tablespaces on <db_name>
9.显示表空间的配置信息,使用情况和容器信息
db2pd -d <db_name> tablespaces
10.表空间容器的更改
10.1alter tablespace <db_name> add/drop/extend/reduce/resize
//add和drop操作,表空间会发生数据重新平衡(rebalance),对于reduce和resize操作,需要确保更改后的表空间容器有足够的空间,否则db2会拒绝该操作。
10.2alter tablespace <db_name> begin new stripe set
//begin new stripe set 选项是当已有容器使用完后,再使用新增加的容器,该选项不会在容器间做Rebalance ,不会对系统造成性能影响,但它会造成数据偏移。
使用方法:db2 "db2 alter tablespace data_ts2 add(file '/data1/ts2/cont2' 50G)"
10.3db2 alter database db_name add storage on db_path3
//对于自动存储管理的表空间,无法在表空间级进行容器更改,只能在数据库级别,因为自动存储路径是在建库时指定的。可以使用add storage on 选项为数据库添加新的存储路径。
建库脚本:
DB2安装默认用户:
db2inst1
db2iadm1第一步新建用户,添加至DB2用户,并切换至新建用户
----------------------------------------------------------------------------------
[root@localhost ~]# useradd -g db2iadm1 -u 1017 -d /usr/slsadmin -m slsadmin
[root@localhost ~]# passwd slsadmin
[root@localhost ~]# ####slsadmin789[root@localhost ~]# cd /opt/ibm/db2/V10.5/instance/
[root@localhost instance]# ./db2icrt -u slsadmin slsadmin
[root@localhost instance]# su - slsadmin
------------------------------------------------------------------------------------
设置环境配置,允许远程TCP/IP访问。此处数字为端口号,需要用vi去etc/services中查找此用户的最小的端口号
------------------------------------------------------------------------------------
[slsadmin@localhost ~]$ db2 update dbm cfg using SVCENAME 60012
[slsadmin@localhost ~]$ db2set DB2COMM=TCPIP
[slsadmin@localhost ~]$ db2
----------------------------------------------------------------------------------
启动db2命令窗
----------------------------------------------------------------------------------
db2 => db2start
db2 => create db faldb using codeset GBK territory CN
db2 => list db directory
db2 => connect to faldb--db2 => CREATE SCHEMA "hbreport" AUTHORIZATION "hbreport"--size表示页数,pagesize表示页大小,size*pagesize就是缓冲池的内存大小
db2 => create bufferpool poolname immediate size 10000 pagesize 32k--创建数据库管理(DMS)的数据表空间
db2 => create tablespace faldb pagesize 32k managed by system using ('/usr/slsadmin/NODE0000/sqlt0003.0') bufferpool poolname
db2 => create temporary tablespace faldb_temp pagesize 32k managed by system using ('/usr/slsadmin/NODE0000/faldb_temp') bufferpool poolnamedb2 => commit work
db2 => connect reset
db2 => terminate执行建库SQL语句
----------------------------------------------------------------------------------
[slsadmin@localhost ~]$ db2 -tvf /home/WGJ/faldb20160215.sql
[slsadmin@localhost ~]$ db2move faldb import -u slsadmin -p slsadmin789一定要关闭防火墙!导出数据库
----------------------------------------------------------------------------------
[slsadmin@localhost ~]$ db2look -d faldb -e -a -x -i slsadmin -w slsadmin789 -0 faldb20160215.sql #导出数据库结构
[slsadmin@localhost ~]$ db2move faldb export -u slsadmin -p slsadmin789 #导出数据库数据
注意:如果使用db2默认的临时表空间,就会造成这个错误。
转载至https://www.cnblogs.com/hehongtao/p/5530373.html