db2数据库表空间
① db2中怎么查看表空间的使用情况
db2 connect to 数据库名 db2 list tablespaces show detail 如果要查对应容器, db2 list tablespace containers for 表空间id
② 如何删除DB2中的表空间
可用语句来删除:
droptablespace表空间名;
表空间:
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。
③ 如何在DB2建表空间
两种方式
1.利用信息中心,开始 输入 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 ring processing.
SQL1585N A system temporary table space with sufficient page size does not
exist. SQLSTATE=54048
SQL3015N An SQL error "-1585" occurred ring 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怎么查看表空间使用率
db2 查看表空间使用率
1. 统计所有节点表空间使用率
select substr(TABLESPACE_NAME,1,20) as TBSPC_NAME,bigint(TOTAL_PAGES * PAGE_SIZE)/1024/1024 as "TOTAL(MB)",
used_pages*PAGE_SIZE/1024/1024 as "USED(MB)", free_pages*PAGE_SIZE/1024/1024 as "FREE(MB)"
from table(snapshot_tbs_cfg('DB_NAME', -2)) as snapshot_tbs_cfg
2、查看表空间使用率
select substr(tbsp_name,1,20) as TABLESPACE_NAME,substr(tbsp_content_type,1,10) as TABLESPACE_TYPE,sum(tbsp_total_size_kb)/1024 as TOTAL_MB,
sum(tbsp_used_size_kb)/1024 as USED_MB,sum(tbsp_free_size_kb)/1024 as FREE_MB,tbsp_page_size AS PAGE_SIZE
from SYSIBMADM.TBSP_UTILIZATION group by tbsp_name,tbsp_content_type,tbsp_page_size
order by 1
3、通过存储过程查看数据库大小和容量
db2 call GET_DBSIZE_INFO (?,?,?,0)
输出参数的值
--------------------------
参数名: SNAPSHOTTIMESTAMP
参数值: 2008-05-26-10.53.06.421000
参数名: DATABASESIZE
参数值: 1203863552
参数名: DATABASECAPACITY
参数值: 4281493504
unit=byte, byte/1024/1024=m
db2 call GET_DBSIZE_INFO (?,?,?,0)
注意:
a、从V8以上版本支持,此存储过程看数据库大小和容量;如果要看各表空间使用情况上面的sql方便,
b、还有DPF环境下,db2 call GET_DBSIZE_INFO (?,?,?,0)只能看dbsize大小,无法看db的容量
SYSIBM.SYSTABLESPACES
SYSIBM.SYSTBSPACEAUTH
2.db2查看表空间和增加表空间容量
Db2 connect to xxx
Db2 “LIST TABLESPACES SHOW DETAIL”
Tablespace ID = 7
Name = TSASNAA
Type = Database managed space
Contents = All permanent data. Large table space.
State = 0x0000
Detailed explanation:
Normal
Total pages = 14800
Useable pages = 14752
Used pages = 12864
Free pages = 1888
High water mark (pages) = 12864
Page size (bytes) = 8192
Extent size (pages) = 32
Prefetch size (pages) = 32
Number of containers = 1
增加表空间大小
DB2数据库使用时,如果表空间满了,该如何扩容呢?下文将教给您DB2数据库表空间扩容的方法,供您参考,希望对您有所帮助。
1)直接添加一个容器的例子:
db2 " ALTER TABLESPACE PAYROLL ADD (DEVICE '/dev/rhdisk9' 10000) "
加容器之后DB2会有一个自动balance的过程,可能会持续几个小时!!! 一定要注意该选项,修改前确认该选项是否能满足业务需求!
2)改变现有容器的大小(该方法不会触发balance,但如果表空间建立在裸设备上,则要扩冲裸设备空间):
db2 " ALTER TABLESPACE TS1 RESIZE (FILE '/conts/cont0' 2000, DEVICE '/dev/rcont1' 2000, FILE 'cont2' 2000) "
注意这种方式就是将原有的相应容器都改成大小是2000页
db2 "ALTER TABLESPACE TS1 RESIZE (ALL 2000)"
这种方式就是把表空间中所有的容器大小都改成2000页
db2 " ALTER TABLESPACE TS1 EXTEND (FILE '/conts/cont0' 1000, DEVICE '/dev/rcont1' 1000, FILE 'cont2' 1000) "
这种方式就是将相应的容器都扩大1000页,也就是增加1000页。
db2 " ALTER TABLESPACE DATA_TS EXTEND (ALL 1000)"
这种方式就是将所有的容器都增加1000页。
3.db2数据字典
select name from sysibm.systables where type='T' and creator='USERID' and tbspace='TS4R_DNJC' order by name;
select name from sysibm.systables where type='V' and creator='USERID' order by name;
type:数据库表用T表示;数据库视图用V表示
creator:数据库对象的创建者
select * from sysibm.syscolumns
select tabname from syscat.tables where tabschema=current schema ;
获取当前模式下面的所有用户表
describe table XXXX
SELECT NAME
,COLNO
,COLTYPE || '('
|| CAST(LENGTH AS CHAR(5)) || ','
|| CAST(SCALE AS CHAR(5)) || ')'
,CASE WHEN NULLS = 'N'
THEN 'NOT NULL' ELSE ' ' END
,TBNAME
WHERE TBCREATOR = 'TEST' -- < OR 'TEST'
-- AND (NAME = 'YOUR_COL_NAME' -- < COLUMN NAME \ ONLY USE ONE
AND (TBNAME = 'T_QUICK_MENU' -- < TABLE NAME /
)
ORDER BY TBNAME, COLNO
SELECT NAME FROM SYSIBM.SYSCOLUMNS
⑤ DB2数据库表空间的创建!
http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/com.ibm.db2.luw.messages.sql.doc/doc/msql01585n.html?lang=zh
看着来解自决下吧
⑥ db2 查看表空间下有哪些表
这个还真的没做过,但你可以用db2look将整个数据库结构导出来,然后查看下一个表空间下有哪些表。
⑦ Db2数据库 怎么确认默认建表的表空间
用list tablespaces命令可以查看表空间信息
⑧ db2数据库怎么创建表空间
db2上新建表空间和数内据库容
http://blog.csdn.net/yixiayizi/article/details/8272437
⑨ 查看db2数据库有哪些表空间i
selectsubstr(tbsp_name,1,20)asTABLESPACE_NAME,substr(tbsp_content_type,1,10)
asTABLESPACE_TYPE,sum(tbsp_total_size_kb)/1024as
TOTAL_MB,sum(tbsp_used_size_kb)/1024asUSED_MB,sum(tbsp_free_size_kb)/1024as
FREE_MB,tbsp_page_sizeASPAGE_SIZEfromSYSIBMADM.TBSP_UTILIZATIONgroupby
tbsp_name,tbsp_content_type,tbsp_page_size
orderby1
拷下来跑一下吧,全出来了,这个语句可以查出来各个表空专间的使用率属。别忘了点赞啊
我跑了一下
⑩ db2数据库如何扩大表空间
有SMS 和DMS 。
SMS 是系统管理的,自动扩展。可以加目录
DMS 是数据库管理的,可以添加新的容器进扩展。
还有一种DMS是自动存储,可以自动进行扩展。