zoukankan      html  css  js  c++  java
  • DB2如何调整表空间大小

    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 SettingsAdministrator>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' )

    DB2 SQLSTATE=57011(转载)
     

    DB2 报 SQLSTATE=57011错误的解决办法

    SQLSTATE=57011   为数据库中表空间已满的异常(错误)

    可以用命令查看表空间

    db2 => list tablespaces show detail

    有两种类型表空间:
    第一种类型表空间为:SYSCATSPACE,类型为系统管理表空间(SMS)
    第二种类型表空间为:用户自己的表空间(比如xjhspaces11),类型为数据库管理表空间(DMS)
    查看表空间中总的表空间(Total pages)和 剩余表空间(Free pages)
    如果是系统管理表空间(SMS)不够,则是由于磁盘空间不够,需要增加磁盘空间
    如果是数据库管理表空间(DMS)不够,则需要扩展表空间
    扩展表空间的命令为:
    db2 alter tablespace extend (all )
    例如:db2 => alter tabblespace xjhspces11 extend(all 2560M)
    扩展了数据库表空间2.5G
    注意:对数据库管理表空间的扩展前,必须检查磁盘裸设备的空间,如果空间不够,需要增加磁盘裸设备的空间,再扩展数据库管理表空间,并且在扩展表空间之前,最好备份数据库,以免带来不必要的损失
    备份数据库命令:$ db2move databaseName export

  • 相关阅读:
    go-elasticsearch 来自官方的 golang es client
    nginx unit nodejs 模块试用(续)
    WebSocket-Over-HTTP Protocol
    pushpin Server-sent events && openresty 集成试用
    Rendering on the Web
    pushpin openresty 集成试用
    100 webhook implementations
    streamdataio 实时数据分发平台
    Generic Realtime Intermediary Protocol
    Pushpin How it works
  • 原文地址:https://www.cnblogs.com/Rozdy/p/5439689.html
Copyright © 2011-2022 走看看