DB2如何调整表空间大小

刚刚接到客户那边打的电话,程序一直报错,所有的业务都做不了,拷贝了一份应用服务器(weblogic)的日志,日志里显示:

WARN : 2009-06-18 16:24:32,421: JDBCExceptionReporter[line:77}: SQL Error: -99999, SQLState: null
ERROR: 2009-06-18 16:24:32,422: JDBCExceptionReporter[line:78}: [ibm][db2][jcc][102][10040] 非自动批处理出现故障。虽然已经提交了批处理,但是该批处理的某个成员至少发生了一个异常。
使用 getNextException() 来检索已经过批处理的特定元素的异常。
WARN : 2009-06-18 16:24:32,422: JDBCExceptionReporter[line:77}: SQL Error: -289, SQLState: 57011
ERROR: 2009-06-18 16:24:32,422: JDBCExceptionReporter[line:78}: Error for batch element #1: DB2 SQL error: SQLCODE: -289, SQLSTATE: 57011, SQLERRMC: SMK
WARN : 2009-06-18 16:24:32,423: JDBCExceptionReporter[line:77}: SQL Error: -99999, SQLState: null
ERROR: 2009-06-18 16:24:32,423: JDBCExceptionReporter[line:78}: Error for batch element #2: [ibm][db2][jcc][t4][1026][11339] 错误检查:
WARN : 2009-06-18 16:24:32,423: JDBCExceptionReporter[line:77}: SQL Error: -289, SQLState: 57011
ERROR: 2009-06-18 16:24:32,424: JDBCExceptionReporter[line:78}: Error for batch element #2: DB2 SQL error: SQLCODE: -289, SQLSTATE: 57011, SQLERRMC: SMK
ERROR: 2009-06-18 16:24:32,424: AbstractFlushingEventListener[line:301}: Could not synchronize database state with session
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:575)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:662)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:632)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:314)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:117)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy803.saveApply(Unknown Source)
at com.cnnct.mp.counterservice.service.CounterServiceService.applySave(CounterServiceService.java:135)
at com.cnnct.mp.counterservice.ejbAction.ApplySaveEjbAction.perform(ApplySaveEjbAction.java:32)
at com.lbs.sieaf.webcontroller.RequestProcessor.processRequest(RequestProcessor.java:245)
at com.lbs.sieaf.webcontroller.MainServlet.doProcess(MainServlet.java:65)
at com.lbs.sieaf.webcontroller.MainServlet.doPost(MainServlet.java:49)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.lbs.sieaf.webcontroller.CSSaftyFilter.doFilter(CSSaftyFilter.java:167)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.cnnct.cp.webcontroller.EncodingFilter.doFilter(EncodingFilter.java:66)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3212)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1983)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1890)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1344)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
Caused by:
com.ibm.db2.jcc.b.ni: [ibm][db2][jcc][102][10040] 非自动批处理出现故障。虽然已经提交了批处理,但是该批处理的某个成员至少发生了一个异常。
使用 getNextException() 来检索已经过批处理的特定元素的异常。
at com.ibm.db2.jcc.b.p.a(p.java:414)
at com.ibm.db2.jcc.b.ih.a(ih.java:2876)
at com.ibm.db2.jcc.b.ih.b(ih.java:2710)
at com.ibm.db2.jcc.b.ih.executeBatch(ih.java:1554)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
... 39 more
ERROR: 2009-06-18 16:24:32,426: LogHelper[line:174}: 100201000|CounterServiceService.applySave的总控方法发生未知异常错误  Hibernate flushing: Could not execute JDBC batch update; uncategorized SQLException for SQL [insert into SMK.MP_YEARCARDPHOTO (CERTNUMBER, PHOTO, PHOTOTYPE, USEMAKE, CLIENTID, AUTONO) values (?, ?, ?, ?, ?, ?)]; SQL state [null]; error code [-99999]; [ibm][db2][jcc][102][10040] 非自动批处理出现故障。虽然已经提交了批处理,但是该批处理的某个成员至少发生了一个异常。
使用 getNextException() 来检索已经过批处理的特定元素的异常。; nested exception is com.ibm.db2.jcc.b.ni: [ibm][db2][jcc][102][10040] 非自动批处理出现故障。虽然已经提交了批处理,但是该批处理的某个成员至少发生了一个异常。
使用 getNextException() 来检索已经过批处理的特定元素的异常。

通过
C:\Documents and Settings\Administrator>db2 ? sql289

SQL0289N 未能在表空间 "<表空间名>"
          中分配新页面。
解释:
在一个或多个数据库分区上,下列其中一个条件为真:

1 分配给此 SMS表空间的其中一个容器已达到最大文件大小。这可能是导致该错误的原因。
2 分配给此 DMS表空间的所有容器已满。这可能是导致该错误的原因。
3 正在进行重新平衡,但其进度还不足以能使用新添加的空间。
4 正在对太小的容器进行重定向复原。
5 重定向复原后正在进行前滚且分配给此表空间的所有容器已满。
6 正在进行跳越添加容器的前滚且分配给此表空间的所有容器已满。
7 尝试创建带有小于 5个可用扩展数据块的表空间。
8 自动调整大小表空间已达到其最大大小且所有容器都已满。或者,容器的当前大小与最大大小之间没有足够的空间可扩展或添加,因此不可能自动增加空间。
9 创建自动存储器表空间时,使用了不会导致容器空间平均分配的值作为初始值。因此,使用了较高值但是此值大于指定的最大大小。
10 启用了自动调整大小的 DMS表空间未达到其最大大小,但容器所在的其中一个文件系统已满,容器不能增大。
11 启用了自动调整大小的 DMS表空间未达到其最大大小,且表空间所在的文件系统未满。但是,正在进行容器操作(或后续的重新平衡)且自动调整大小功能被暂挂,直至操作完成为止。

用户响应:
执行与引起错误的原因对应的操作:

1 切换至 DMS
TABLESPACE,或重新创建具有更多目录(PATH)的 SMS
TABLESPACE,以使:
(目录数)>=(最大表大小/最大文件大小)。注意,最大文件大小与操作系统有关。
2 将新容器添加至 DMS
表空间,并当重新平衡程序使新页可用后,再次尝
试该操作。
3 等待重新平衡程序完成。
4 再次对较大的容器执行重定向复原。
5 再次对较大的容器执行重定向复原。
6 再次执行允许添加容器的前滚,或对较大的容器执行重定向复原。
7 重新提交 CREATE TABLESPACE
语句,确保表空间具有至少 5
个可用的扩展数据块。
8 增大表空间的最大大小。
9 减小表空间的初始大小或增大表空间的最大大小。
10 将新的容器分割集添加至表空间。现有容器不会再增大,当进行自动调整大小时,只扩展表空间的最后范围中的那些新容器。
11 等待操作和后续的重新平衡完成。

sqlcode :   -289
sqlstate :  57011

确定是表空间满了,我想问下如何调整表空间的大小,有点紧急,没时间去网上查资料了,麻烦两位老师指点一下

解答:

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页。

增加表空间为
1、增加的是裸设备
  ALTER TABLESPACE TS1
     ADD (DEVICE ‘/dev/rhdisk9‘ 10000)
2,增加的是文件系统
  ALTER TABLESPACE TS1
     ADD (FILE ‘/adsasdf/aasdfasd‘ 10000)
3,删除某个容器
ALTER TABLESPACE TS1
     drop (FILE ‘/adsasdf/aasdfasd‘,DEVICE ‘/dev/rhdisk9‘ )

时间: 2024-08-28 07:15:19

DB2如何调整表空间大小的相关文章

DB2查看表空间大小及使用情况

1.SQL 查询(选择Schema为SYSPROC) 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)"

19_Oracle_Admin_调整表空间的大小

Oracle数据库的存储设置可以分为三级:在全局范围内设置:在表空间层面设置:在segment层面设置. 随着数据的增长,有的表空间可能已经快用完了:有的表空间则可能长期闲置,这就需要对表空间的大小进行调整,,其方式主要有以下几种: 1. 设置为自动增长: 2. 使用ALTER命令手动调整:3. 通过增加Datafile来扩充表空间: 4. 直接增加表空间 ALTERR TABLESPACE的方式是针对datadictionary里的修改,不值得推荐,如有兴趣可以查阅联机文档中的相关内容. 一.

db2 &nbsp; 使用重定向方式恢复数据 and 修改表空间大小

Backup a DB2 database and restore redirect it to a different location [[email protected] ~]$ db2 backup db erpdb to /home/db2inst1/backups [[email protected]primarynode-1 ~]$ scp ERPDB.0.db2inst1.NODE0000.CATN0000.20170511104723.001 172.16.0.77:/home

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:[@[email protected]] Normal Total pages = 14800

C++中类的内存空间大小(sizeof)分析

首先明确各数据类型占多大的空间.例如int到底是占2字节还是4字节空间: 在TC里,int是2字节的(主要是因为TC是16位的,所以int类型也该是16位的)VC++里,int是4字节的,因为现代操作系统下的软件大多是是32位.64位的VC++,本来按理说,该是8字节的,但是可能为了维持32位的源代码移植到64位尽量不出错,所以也维持了4字节的长度.至于其他有名的编译器,如gcc,我还没用过,你得查一查它所规定int的长度 或者利用sizeof(int)也可以计算出来.本人电脑上计算如下: 在C

SD卡可用空间大小的判断

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); File path = Environment.getExternalStorageDirectory(); /*StatFs: * Retrieve overall information about the space on a file

ZeroMQ接口函数之 :zmq_msg_init_size - 使用一个指定的空间大小初始化ZMQ消息对象

ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_msg_init_size zmq_msg_init_size(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_msg_init_size - 使用一个指定的空间大小初始化ZMQ消息对象 Synopsis int zmq_msg_init_size (zmq_msg_t *msg, size_t size); Description zmq_msg_init_size()函数会分配任何被请

[Linux监控]磁盘空间大小

echo 192.168.10.69>>ip.list ------------------------------------------- #!/bin/bash #注意if和[]之间的空格 rm -f ~/fanr/shell/DiskUsageAlert/out.print out=$(cat ~/fanr/shell/DiskUsageAlert/ip.list) echo $out for _IP in $out do ssh [email protected]$_IP df |

Android中StatFs获取系统/sdcard存储(剩余空间)大小

package com.orgcent.util; import java.io.File; import android.os.Environment; import android.os.StatFs; public class MemoryStatus { static final int ERROR = -1; /** * 外部存储是否可用 * @return */ static public boolean externalMemoryAvailable() { return andr