ECC6.0+DB2下DBTABLOG表清理并释放表空间
- 格式:docx
- 大小:302.08 KB
- 文档页数:7
解决方法但由于是双机,所以裸设备需要在hacmp中建,或者建了后两边同步一下,可以找富通和IBM解决。
DB2解决tablespace满的问题1. 连接到数据库,查看一下tablespace的使用情况db2 => list tablespaces show detailTablespaces for Current DatabaseTablespace ID = 0Name = SYSCATSPACEType = System managed spaceContents = Any dataState = 0x0000Detailed explanation:NormalTotal pages = 4814Useable pages = 4814Used pages = 4814Free pages = Not applicableHigh water mark (pages) = Not applicablePage size (bytes) = 4096Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1Tablespace ID = 1Name = TEMPSPACE1Type = System managed spaceContents = System Temporary dataState = 0x0000Detailed explanation:NormalTotal pages = 227Useable pages = 227Used pages = 227Free pages = Not applicableHigh water mark (pages) = Not applicablePage size (bytes) = 4096Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1Name = USERSPACE1Type = Database managed spaceContents = Any dataState = 0x0000Detailed explanation:NormalTotal pages = 131072Useable pages = 131056Used pages = 12080Free pages = 118976High water mark (pages) = 12432Page size (bytes) = 4096Extent size (pages) = 16Prefetch size (pages) = 16Number of containers = 1Minimum recovery time = 2006-09-25-07.22.30.000000Tablespace ID = 3Name = USERSPACE2Type = Database managed spaceContents = Any dataState = 0x0000Detailed explanation:NormalTotal pages = 65536Useable pages = 65520Used pages = 65520Free pages = 0High water mark (pages) = 65520Page size (bytes) = 16384Extent size (pages) = 16Prefetch size (pages) = 16Number of containers = 1Minimum recovery time = 2006-08-11-02.52.11.000000Tablespace ID = 4Name = TMPSPACE3Type = System managed spaceContents = System Temporary dataState = 0x0000Detailed explanation:NormalTotal pages = 199Used pages = 199Free pages = Not applicableHigh water mark (pages) = Not applicablePage size (bytes) = 16384Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1Minimum recovery time = 2005-12-15-11.09.33.000000发现USERSPACE2 Free pages为0了2. 再看一下USERSPACE2使用的containerdb2 => list tablespace containers for 3 show detailTablespace Containers for Tablespace 3Container ID = 0Name = /dev/rdatacdblv2Type = DiskTotal pages = 65536Useable pages = 65520Accessible = Yes只有一个/dev/rdatacdblv23. 查看一下系统中相关的裸设备#>cd /dev#>ls -l *datacdb*brw-rw---- 1 db2admin db2grp1 10, 10 11月11 2004 datacdblv1 brw-rw---- 1 db2admin db2grp1 10, 12 4月05 2006 datacdblv2 crw-rw---- 1 db2admin db2grp1 10, 10 9月30 15时01 rdatacdblv1 crw-rw---- 1 db2admin db2grp1 10, 12 10月09 18时43 rdatacdblv24. 创建一个新的裸设备#>mklv -y'datacdblv3' -t'raw' db2vg 4rootvg是卷组的名称,可以用lsvg查,16是块的数量,要看OS的PPSIZE,相乘就是裸设备的大小5. 看一下新的的设备#>ls -l *datacdb*brw-rw---- 1 db2admin db2grp1 10, 10 11月11 2004 datacdblv1 brw-rw---- 1 db2admin db2grp1 10, 12 4月05 2006 datacdblv2 brw-rw---- 1 root system 10, 18 10月09 19时56 datacdblv3 crw-rw---- 1 db2admin db2grp1 10, 10 9月30 15时01 rdatacdblv1 crw-rw---- 1 db2admin db2grp1 10, 12 10月09 18时43 rdatacdblv2 crw-rw---- 1 root system 10, 18 10月09 19时56 rdatacdblv36. 修改属主#>chown db2admin:db2grp1 *datacdb*7. 再看一下属主是否已经改了#>ls -l *datacdb*brw-rw---- 1 db2admin db2grp1 10, 10 11月11 2004 datacdblv1 brw-rw---- 1 db2admin db2grp1 10, 12 4月05 2006 datacdblv2 brw-rw---- 1 db2admin db2grp1 10, 18 10月09 19时56 datacdblv3 crw-rw---- 1 db2admin db2grp1 10, 10 9月30 15时01 rdatacdblv1 crw-rw---- 1 db2admin db2grp1 10, 12 10月09 18时43 rdatacdblv2 crw-rw---- 1 db2admin db2grp1 10, 18 10月09 19时56 rdatacdblv38. 连接到数据库9. 为tablespace增加containerdb2 => alter tablespace USERSPACE2 add (device'/dev/rdatacdblv3' 32768)10. 最后确认一下是否增加成功了db2 => list tablespaces show detailTablespaces for Current DatabaseTablespace ID = 0Name = SYSCATSPACEType = System managed space Contents = Any dataState = 0x0000Detailed explanation:NormalTotal pages = 4814Useable pages = 4814Used pages = 4814Free pages = Not applicableHigh water mark (pages) = Not applicable Page size (bytes) = 4096Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1Tablespace ID = 1Name = TEMPSPACE1Type = System managed space Contents = System Temporary data State = 0x0000Detailed explanation:NormalTotal pages = 227Useable pages = 227Used pages = 227Free pages = Not applicableHigh water mark (pages) = Not applicable Page size (bytes) = 4096Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1Tablespace ID = 2Name = USERSPACE1Type = Database managed space Contents = Any dataState = 0x0000Detailed explanation:NormalTotal pages = 131072Useable pages = 131056Used pages = 12080Free pages = 118976High water mark (pages) = 12432Page size (bytes) = 4096Extent size (pages) = 16Prefetch size (pages) = 16Number of containers = 1Minimum recovery time = 2006-09-25-07.22.30.000000Tablespace ID = 3Name = USERSPACE2Type = Database managed spaceContents = Any dataState = 0x10000000Detailed explanation:DMS rebalancer is activeTotal pages = 98304Useable pages = 98272Used pages = 65520Free pages = 0High water mark (pages) = 65520Page size (bytes) = 16384Extent size (pages) = 16Prefetch size (pages) = 16Number of containers = 2Minimum recovery time = 2006-08-11-02.52.11.000000Tablespace ID = 4Name = TMPSPACE3Type = System managed spaceContents = System Temporary dataState = 0x0000Detailed explanation:NormalTotal pages = 199Useable pages = 199Used pages = 199Free pages = Not applicableHigh water mark (pages) = Not applicablePage size (bytes) = 16384Extent size (pages) = 32Prefetch size (pages) = 32Number of containers = 1。
oracle释放表空间最佳实践释放表空间是在数据库中删除不再需要的表空间,以节省存储空间和提高数据库性能。
以下是Oracle数据库释放表空间的最佳实践:1. 确保没有任何对象依赖于要释放的表空间。
在进行释放之前,需要确保没有表、索引、分区、包等对象依赖于要释放的表空间。
可以使用Oracle的`DBA_DEPENDENCIES`视图来检查对象间的依赖关系。
2. 备份数据。
在释放表空间之前,应该先备份要释放的表空间中的数据。
这样可以避免意外删除数据引起的潜在问题。
3. 迁移数据。
如果要释放的表空间中有一些重要的数据,但是不再需要这些数据,可以先将这些数据迁移到其他表空间或者归档。
这样可以确保这些数据不会丢失,同时也不会占用要释放的表空间的存储空间。
4. 关闭相关的数据库连接。
在释放表空间之前,应该确保没有任何活动的数据库连接正在使用该表空间。
可以使用`DBA_ACTIVE_SESSIONS`视图和`V$SESSION`视图来查找和关闭相关的数据库连接。
5. 停止相关的数据库服务。
在释放表空间之前,最好停止相关的数据库服务,以确保没有任何数据库进程正在使用该表空间。
6. 使用`DROP TABLESPACE`语句释放表空间。
最后,使用`DROP TABLESPACE`语句来释放表空间。
这个语句将会删除该表空间及其包含的所有对象。
总之,释放表空间之前,必须确保没有任何对象依赖于它,并备份重要的数据。
同时,还要关闭相关的数据库连接和停止相关的数据库服务。
最后,使用`DROP TABLESPACE`语句来释放表空间。
在创建数据库时遇到数据库别名已存在的问题时,可以通过以下方法解决:
首先用db2 list database directory命令看在系统数据库目录(System Database Directory)中有没有该数据库。
如果有,应该在确定该数据库是没有用的数据库之后用db2 drop database 数据库名将其删除。
如果没有,再用db2 list database directory on location 看在本地数据库目录(Local Database Directory)中有没有该数据库,location指定数据库的位置(如Windows下的C: ,Unix下/home/db2inst1)。
如果有,先用db2 catalog database 数据库名on location将数据库编目到节点上,再对其进行删除处理。
解决过程:
1、db2 list database directory 查看系统数据库目录,看不到要找的数据库,表示该数据库不在系统数据库目录中
2、db2 list database directory on D:(在系统数据库目录找不到的情况下执行该指令,这里是盘符d),然后发现有sample和source的别名。
说明在本地数据库目录中。
3、db2 catalog database 数据库名on d: 将数据库编目到节点上
4. drop database 数据库名删除数据库。
DB2如何调整表空间⼤⼩DB2如何调整表空间⼤⼩刚刚接到客户那边打的电话,程序⼀直报错,所有的业务都做不了,拷贝了⼀份应⽤服务器(weblogic)的⽇志,⽇志⾥显⽰:WARN : 2009-06-18 16:24:32,421: JDBCExceptionReporter[line:77}: SQL Error: -99999, SQLState: nullERROR: 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: 57011ERROR: 2009-06-18 16:24:32,422: JDBCExceptionReporter[line:78}: Error for batch element #1: DB2 SQL error: SQLCODE: -289, SQLSTATE: 57011, SQLERRMC: SMKWARN : 2009-06-18 16:24:32,423: JDBCExceptionReporter[line:77}: SQL Error: -99999, SQLState: nullERROR: 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: 57011ERROR: 2009-06-18 16:24:32,424: JDBCExceptionReporter[line:78}: Error for batch element #2: DB2 SQL error: SQLCODE: -289, SQLSTATE: 57011, SQLERRMC: SMKERROR: 2009-06-18 16:24:32,424: AbstractFlushingEventListener[line:301}: Could not synchronize database state with sessionorg.hibernate.exception.GenericJDBCException: Could not execute JDBC batch updateat 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 mit(JDBCTransaction.java:106)at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:575)atorg.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:662) at mit(AbstractPlatformTransactionManager.java:632)atmitTransactionAfterReturning(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 nct.mp.counterservice.service.CounterServiceService.applySave(CounterServiceService.java:135)at nct.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 nct.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] ⾮⾃动批处理出现故障。
1、lo ad 方法装入数据:exp ort t o tem pfile of d el se lect* fro m tab lenam e whe re no t 清理条件;l oad f rom t empfi le of delmodif ied b y del prior itych ar re place into tabl enamenonr ecove rable;说明:在不相关的数据表exp ort数据时,可以采取并发的形式,以提高效率;table name指待清理ta ble的名称;m odifi ed by delp riori tycha r防止数据库记录中存在换行符,导致数据无法装入的情况; r eplac e int o对现数据库中的内容进行替换,即将现行的数据记录清理,替换为数据文件内容;n onrec overa ble无日志方式装入;2、查找当前的应用:db2 lis t app licat ion g rep b tpdbs;3、删除当前正在使用的a pplic ation:db2 "fo rce a pplic ation (id1,id2,id3)"id1,id2,id3 是list显示的应用号;4、查看当前应用号的执行状态:db2 g et sn apsho t for appl icati on ag entid 299greprow5、查看数据库参数:db2 getdb cf g for //当前数据库可以省略6、修改数据库的log数据:db2 u pdate db c fg us ing <参数名><参数值>7、d b2sto p for ce的用法:在进行bind的时候出现如下错误:sql0082c an er ror h as oc curre d whi ch ha s ter minat ed pr ocess ing.sql0092nn o pac kagewas c reate d bec auseof pr eviou s err ors.sql0091nb indin g was ende d wit h "3" erro rs an d "0" warn ings.主要是表文件被加锁,不能继续使用;在进行s top的时候报错:d b2sto p8/03/2005 21:46:530 0sql1025nth e dat abase mana ger w as no t sto ppedbecau se da tabas es ar e sti ll ac tive.sql1025n the d ataba se ma nager wasnot s toppe d bec ausedatab asesare s tillactiv e.需要使用如下命令可以解决这个问题: db2stopforce08/03/2005 21:47:49 0 0 sql1064nd b2sto p pro cessi ng wa s suc cessf ul.sql1064ndb2stop proc essin g was succ essfu l.然后启动数据库db2s tart,连接数据库db2s后,重新进行bind即可。
DB2及表空间和缓冲池DB2的表空间和缓冲池对于刚涉足DB2 领域的DBA 或未来的DBA 而言,新数据库的设计和性能选择可能会很令人困惑。
在本文中,我们将讨论DBA 要做出重要选择的两个方面:表空间和缓冲池。
表空间和缓冲池的设计和调优会对DB2 服务器的性能产生深远的影响,因此我们将着重讨论这些活动。
表空间数据库中的所有数据都存储在许多表空间中。
可以认为表空间是孩子而数据库是其父母,其中表空间(孩子)不能有多个数据库(父母)。
由于表空间有不同用途,因此根据它们的用途和管理方式将它们分类。
根据用途有五种不同的表空间:目录表空间每个数据库只有一个目录表空间,它是在发出CREATE DATABASE 命令时创建的。
目录表空间被DB2 命名为SYSCATSPACE,它保存了系统目录表。
总是在创建数据库时创建该表空间。
常规表空间常规表空间保存表数据和索引。
它还可以保存诸如大对象(Large Object,LOB)之类的长数据,除非这些数据显式地存储在长表空间中。
如果某些表空间是数据库管理的空间(Database Managed Space,DMS),则可以将表及其索引分别放到单独的常规表空间中。
我们将在本文后面定义DMS 和系统管理的空间(System Managed Space,SMS)之间的区别。
每个数据库中必须至少有一个常规表空间。
创建数据库时指定该表空间的缺省名为USERSPACE1。
长表空间长表空间用于存储长型或LOB 表列,它们必须驻留在DMS 表空间中。
它们还可以存储结构化类型的列或索引数据。
如果没有定义长表空间,那么将把LOB 存储在常规表空间中。
长表空间是可选的,缺省情况下一个都不创建。
系统临时表空间系统临时表空间用于存储SQL 操作(比如排序、重组表、创建索引和连接表)期间所需的内部临时数据。
每个数据库必须至少有一个系统临时表空间。
随数据库创建的系统临时表空间的缺省名为TEMPSPACE1。
数据库表空间不足引发的故障处理方法在数据库管理中,表空间的重要性不言而喻。
表空间是用来存储数据库中表和索引的地方,当表空间不足时,会导致数据库无法正常运行,影响业务运行和数据的完整性。
因此,及时处理表空间不足的问题至关重要。
本文将分享如何处理数据库表空间不足所引发的故障,以确保数据库的稳定运行。
一、了解表空间的概念和特性在处理表空间不足的问题之前,首先需要了解表空间的概念和特性。
表空间是由一个或多个数据文件组成的逻辑存储单元,用于存放数据库中的表、索引和其他对象。
每个表空间都有一个固定大小,根据数据库管理系统的不同,表空间的大小可以灵活调整。
表空间的管理是数据库管理员的重要任务之一,合理规划和管理表空间,可以提高数据库的性能和可靠性。
因此,在进行故障处理之前,确保对表空间有深入了解,掌握表空间的特性和基本管理方法是必不可少的。
二、监控表空间的使用情况及时了解表空间的使用情况是处理表空间不足问题的关键。
数据库管理员应该定期监控表空间的使用情况,通过数据库管理工具或查询系统视图来获取相关信息。
查询表空间的使用情况可以使用如下SQL语句:```SELECT tablespace_name, sum(bytes)/(1024*1024) AS "Total Size(MB)",sum(bytes)/(1024*1024) - sum(free_space)/(1024*1024) AS "Used Size(MB)",sum(free_space)/(1024*1024) AS "Free Size(MB)" FROM dba_free_spaceGROUP BY tablespace_name;```该语句可以列出所有表空间的总大小、已使用大小和空闲大小。
通过监控表空间的使用情况,可以及时发现空间不足的问题,避免出现故障。
三、释放不再使用的空间在监控表空间使用情况的基础上,如果发现某个表空间空间不足,应及时采取措施释放不再使用的空间。
db2数据库删除分区命令
在DB2数据库中,要删除分区,你可以使用ALTER TABLE命令来删除分区。
具体步骤如下:
首先,你需要连接到DB2数据库,并进入要操作的数据库。
然后,使用以下命令删除分区:
ALTER TABLE table_name DROP PARTITION partition_name.
在这个命令中,table_name是你要操作的表的名称,partition_name是要删除的分区的名称。
执行这条命令后,DB2数据库将会删除指定的分区。
需要注意的是,删除分区可能会影响到表的数据和性能,所以在执行这个操作之前,请确保已经做好了充分的备份,并且明确了删除分区的后果。
另外,还需要考虑到删除分区后可能需要重新组织表的数据和索引,以确保数据库的性能和一致性。
因此,在执行删除分区操作
之后,建议进行必要的数据和索引的重新组织。
总之,删除分区是一个需要谨慎对待的操作,需要在充分了解其影响的情况下进行。
希望这个回答能够帮助到你。
DB2数据库表空间检查与维护一、表空间占满故障现象1、系统上线初期正常,稳定运行半年以后突然出现故障。
2、对数据库进行写入操作时失败:用户的流程计划不能正常提交,录入数据无法保存。
3、系统应用程序操作响应慢,甚至宕机(死机)。
4、DB2数据库能正常连接,select语句执行正常,insert语句执行失败。
二、表空间状态检查与查看1、使用DB2管理员账户查看表空间状态:db2 list tablespaces |more ,其中|more 用于分页显示输出结果,按空格键翻页。
结果如图1所示。
图1其中状态0x0000 表示表空间正常。
2、查看表空间及其表空间所属容器的详细信息:db2 list tablespaces show detail |more ,结果如图2所示。
图2剩余表空间=可用页数*页大小,如图2中SYSCATSPACE表空间的可用空间大小:=3532*4096(4K)=14M,即该表空间最多还能增加14M的数据,若占满后需要扩充表空间。
三、表空间占满解决方法1、改变容器大小:db2 alter tablespace idx_data resize(file 'd:\db2\datafile_netdb\idx_data' 32000)该命令是将表空间idx_data 的大小为1000MB(因为该表空间扩展数据库大小为32K),d:\db2\datafile_netdb\idx_data是该表空间文件存放位置。
执行结果如图3所示。
图32、增加新的容器:db2 alter tablespace idx_data add(file 'd:\db2\datafile_netdb\idx_data_ex1' 640) 该命令是将表空间idx_data 增加新的容器idx_data_ex1,大小为20MB(因为该表空间扩展数据库大小为32K),d:\db2\datafile_netdb\idx_data_ex1是该新增容器文件存放位置。
适用情况:
ECC6.0
DB2 版本从V9.5升级到V10.1
一、从表DBTABLOG中删除数据,只保留1年数据。
(时间自己定)
SE38 运行程序RSTBPDEL,后台运行程序。
二、打入DB6CONV程序
参考note1513862,下载附件中的文件解压,把解压文件放到如下目录:cp R000016.FW1 /usr/sap/trans/data
cp K000016.FW1 /usr/sap/trans/cofiles
运行STMS
传输即可。
三、运行程序DB6CONV重组表DBTABLOG。
SE38 执行程序DB6CONV,参考note 362325
保存即可,选择合适的时间启动后台任务运行。
四、降低高水位
高水位降低后表空间大小没有减少。
五、缩小PRD#PROTD表空间
1、创建表空间PRD#PROTD1。
CREATE LARGE TABLESPACE "PRD#PROTD1" IN DATABASE PARTITION GROUP SAPNODEGRP_PRD PAGESIZE 16384 MANAGED BY AUTOMATIC STORAGE
USING STOGROUP "IBMSTOGROUP"
AUTORESIZE YES
INITIALSIZE 32 M
MAXSIZE NONE
EXTENTSIZE 2
PREFETCHSIZE AUTOMATIC
BUFFERPOOL "IBMDEFAULTBP"
DATA TAG NONE
OVERHEAD 7.500000
TRANSFERRATE 0.060000
NO FILE SYSTEM CACHING
DROPPED TABLE RECOVERY OFF;
2、把表空间PRD#PROTD的数据转移到表空间PRD#PROTD1。
运行会报错,如下:
SQL0551N "SAPPRD" does not have the required authorization or privilege to perform operation "CREATE TABLE" on object
缺少权限,给用户SAPPRD dbadm权限。
db2 grant dbadm on database to user SAPPRD
SE38 运行程序DB6CONV
3、删除表空间PRD#PROTD,容器也被删除,文件系统空间释放。
db2 drop tablespace PRD#PROTD
4、重建表空间PRD#PROTD。
CREATE LARGE TABLESPACE "PRD#PROTD" IN DATABASE PARTITION GROUP SAPNODEGRP_PRD PAGESIZE 16384 MANAGED BY AUTOMATIC STORAGE
USING STOGROUP "IBMSTOGROUP"
AUTORESIZE YES
INITIALSIZE 32 M
MAXSIZE NONE
EXTENTSIZE 2
PREFETCHSIZE AUTOMATIC
BUFFERPOOL "IBMDEFAULTBP"
DATA TAG NONE
OVERHEAD 7.500000
TRANSFERRATE 0.060000
NO FILE SYSTEM CACHING
DROPPED TABLE RECOVERY OFF;
5、把表空间PRD#PROTD1中的数据重新转回到表空间PRD#PROTD。
6、删除表空间PRD#PROTD1。
db2 drop tablespace PRD#PROTD1
7、去掉dbadm权限
revoke dbadm on database from user sapprd
六、前后对比变化
1、表空间PRD#PROTD从145G减少到256M,释放文件系统空间144G,数据库大小减少144G。
2、表空间PRD#PROTD的状态发生了变化。
RECLAIMABLE_SPACE_ENABLED的值从0变成1。
第三步到第五步,也可如下操作
1、rename old tablespaces
db2 rename tablespace PRD#PROTD to PRD#PROTD _OLD
db2 rename tablespace PRD#PROTI to PRD#PROTDI_OLD
2、创建表空间
通过DBACOCKPIT事务码创建表空间PRD#PROTD和PRD#PROTI,也可通过DDL语句找到创建表空间的语句在数据库层面创建。
3、通过DB6CONV程序转换表空间即可。
Tablespace to Be Converted“PRD#PROTD _OLD”,Target Data Tablespace“PRD#PROTD”,Target Index Tablespace“PRD#PROTDI”。
4、DROP旧表空间
db2 drop tablespace PRD#PROTD
db2 drop tablespace PRD#PROTI。