在迁移前增大表空间和日志文件大小
在开始迁移 DB2® 服务器之前,必须确保系统目录表空间和临时表空间上具有足够的可用空间量,同时还有足够的日志空间用来迁移数据库。
先决条件
-
确保您具有 SYSCTRL 或 SYSADM 权限,从而能够增大表空间和日志空间大小。
限制
-
在分区数据库环境中,需要更多地考虑增大表空间大小,因为表空间分布在各个数据库分区中。另外,只需增大目录数据库分区服务器中的日志空间。
- 连接至想要迁移的数据库:
db2 CONNECT TO sample
- 通过以下命令来确定表空间磁盘使用情况:
db2 LIST TABLESPACES SHOW DETAIL
收集总页数、已使用页数、可用页数和页大小。请参阅下表,以了解通过前一命令获得的信息摘要:
表 1. 样本数据库的表空间信息
表空间 | 类型 | 总页数 | 已使用页数 | 可用页数 | 页大小 |
---|
SYSCATSPACE | SMS | 8172 | 8172 | 无 | 4086 |
TEMPSPACE1 | SMS | 10 | 10 | 无 | 4086 |
- 增大系统目录表空间的大小。
-
如果具有 SMS 表空间,那么应确保可用磁盘空间中至少具有相同数量的已使用页数;在此示例中,大约为 32 MB。
- 如果具有 DMS 表空间并且已使用的页数大于可用页数,那么使用以下公式来计算每个容器要增加的页数:
number_of_pages = ( used_pages - free_pages ) /
number_of_containers_in_SYSCATSPACE
然后,使用以下命令来增大系统目录表空间中所有容器的大小: db2 "ALTER TABLESPACE SYSCATSPACE EXTEND (ALL number_of_pages)"
- 增大临时表空间的大小。
-
如果具有 SMS 表空间,那么只需确保可用磁盘空间中的总页数至少是系统目录表空间的总页数的两倍;在此示例中,大约为 64 MB。
- 如果具有 DMS 表空间,那么使用以下公式来计算每个容器要增加的页数:
number_of_pages = ( number_of_total_pages_in_SYSCATSPACE ) /
number_of_containers_in_TEMPSPACE1
使用以下命令来增大临时表空间中所有容器的大小: db2 "ALTER TABLESPACE SYSCATSPACE EXTEND (ALL number_of_pages)"
- 如果具有启用了 AUTORESIZE 的 DMS 表空间以及 MAXSIZE 设置为 NONE,那么确保至少有两倍于系统目录表空间总页数的可用磁盘空间。如果 MAXSIZE 设置为一个整数值,确保此值至少是总页数的两倍。下面的查询返回了样本数据库中的当前大小(按字节计数的总页数)和表空间 TEMPSPACE1 的 MAXSIZE:
db2 "SELECT TBSP_CURRENT_SIZE, TBSP_MAX_SIZE
FROM table(SNAP_GET_TBSP_PART('SAMPLE', -1)) T
WHERE TBSP_NAME = 'TEMPSPACE1'"
如果 TBSP_MAX_SIZE 小于 TBSP_CURRENT_SIZE 的值的两倍,那么需要使用 ALTER TABLESPACE 语句增大 MAXSIZE: db2 "ALTER TABLESPACE TEMPSPACE1
MAXSIZE (<TBSP_CURRENT_SIZE*2/1024>) K"
表空间的自动调整大小自从 DB2 UDB 版本 8 修订包 9 就可用了。
- 使用 GET DATABASE CONFIGURATION 命令来确定当前的日志空间大小。记录数据库配置参数 logfilsiz、logprimary 和 logsecond 的值:
db2 GET DB CFG FOR sample |grep '(LOG[FPS]'
日志文件大小(4KB) (LOGFILSIZ) = 1000
主日志文件数 (LOGPRIMARY) = 3
辅助日志文件数 (LOGSECOND) = 2
- 使用下列命令来增大日志空间大小:
db2 UPDATE DB CFG FOR sample using LOGPRIMARY current_value * 2
db2 UPDATE DB CFG FOR sample using LOGSECOND current_value * 2
如果日志空间已经足够大,那么可能不需要将它增大。也许,仅当已经在数据库上创建了非常多的数据库对象时,才认为只增大辅助日志文件数是一项安全措施。
- 可选:通过将 logsecond 设置为 -1 并启用归档日志记录来启用无限多的活动日志,而不是增大日志空间。无限制的活动日志记录允许活动工作单元既使用主日志又使用归档日志,从而有效地支持事务使用无限多的日志文件。您应该知道,如果迁移失败,那么回滚事务所花的时间取决于需要检索的归档日志数。以下命令显示了一个示例,说明如何将归档日志记录到磁盘以及如何启用无限制的日志记录:
db2 UPDATE DB CFG FOR sample using LOGARCHMETH1 DISK:archive-dir
db2 UPDATE DB CFG FOR sample using LOGSECOND -1
其中 archive-dir 是用来归档日志文件的目录。 尽管这些是动态参数,但是,必须在所有应用程序都与此数据库断开连接之后,新值才会生效。
--------------------------------------------------------------------------------------------------------------------------
有三种我们需要熟悉的日志定义: 活动日志 —— 该日志包含没有提交或回滚的事务,或者已提交但尚未刷新到磁盘的事务。 联机归档日志 —— 该日志包含已提交并且被记录到硬盘的事务的信息,和活动日志位于同一目录。 脱机归档日志 —— 如果将联机归档日志从活动日志所在目录移动到其他目录或磁带中,就成为了脱机归档
日志。 有许多与日志记录有关的配置参数: LOGFILSIZ —— 每个日志文件的大小,默认值是 250,单位为 4KB。 LOGPRIMARY —— 主日志文件的个数(默认值是 3)。 LOGSECOND —— 主日志文件占用满时,可以分配的二级日志文件的个数。当把这个参数设为 -1 时(版本 8
),可以使用无限数量的活动日志。 NEWLOGPATH —— 用来更改日志文件的存储位置。要想使该参数生效,需要重新激活数据库。
MIRRORLOGPATH —— 日志文件的镜像路径,以避免单点故障。 OVERFLOWLOGPATH —— 指定前滚期间可以在哪些目录搜索需要的日志,以允许前滚操作能访问多个目录中的
日志。 USEREXIT——用于启动用户出口功能,进行日志的自动归档。 BLK_LOG_DSK_FUL——当 DB2 无法在活动日志路径中创建新日志文件时,防止生成磁盘已满错误。 为了使用联机备份,必须打开归档日志记录。通过将 LOGRETAIN 设为 ON,可以打开归档日志记录。 归档日志记录是一种不同于循环日志记录的日志记录机制,因为循环日志记录重写了提交的日志,而归档日
志记录归档了提交的日志。 在归档日志记录中,不能重用已经变成归档日志的日志。要移动那些联机归档日
志,您需要手动移动它们或者使用用户出口程序(user exit)来移动它们。 默认情况下,活动和联机归档日志保存在 SQLOGDIR 目录中。NEWLOGPATH 数据库配置参数确定了将在哪里存
储未来的活动归档日志。要想使 NEWLOGPATH 参数生效,需要停用数据库(目的是关闭所有活动日志文件)
。然后,重新激活数据库将导致在新路径中创建新日志文件,原来的归档日志将留在原来的路径中。 当进行
联机备份时,将记录所有的数据库事务。在完成联机备份之后,DB2 将强行关闭当前活动日志,并对其进行
归档. 要确定哪个日志是活动的,哪些日志是归档的,请使用 DB2 命令 GET DB CFG 来查看“第一个活动日
志文件”。该命令提供了目前活动的日志文件,因此被归档的日志将是那些比当前日志更早的日志。
----------------------------------------------------------------------------------------------
DB2的备份和归档设置 跟Oracle类似DB2也分为两个模式,日志循环vs归档日志,也就是非归档和归档模式,下面对这两种模式做简单的介绍。 [b]日志循环[/b] 日志循环是默认方式,也就是非归档模式,这种模式只支持backup offline脱机备份,在备份过程中需要DB2停止服务。 运行脱机备份需要如下注意的地方: 1,停止应用对DB2的访问。 2,通过LIST APPLIACATIONS命令查看现有的连接,然后通过FORCE APPLIACATION命令来结束连接。 3,通过DEACTIVATE DATABASE 命令来确保数据库未处于活动状态。 4,通过BACKUP DATABASE命令来对数据库进行备份。 [b]归档日志[/b] 归档日志不是默认状态,需要配置后才会起作用,DB2在使用日志保留模式的时候数据库是可恢复的数据库,支持在线备份、前滚恢复和崩溃恢复。 配置DB2进入归档日志模式主要是靠Logarchmeth1和Logarchmeth2两个参数(注:Logretain参数在DB2 v8以后已经被Logarchmeth1取代,可以不用管)。 [b]Logarchmeth1设置为LOGRETAIN[/b] 使用归档日志,数据库是可恢复的数据库。启用前滚恢复和崩溃恢复,但是非自动归档模式。 归档日志文件之后,必须人工将无用的归档日志删除,以便新的日志文件可以复用磁盘空间。每当日志文件已满,DB2 就开始将记录写至另一个日志文件,并且不断创建新日志文件。 [b]Logarchmeth1设置为除OFF 或LOGRETAIN以外的值[/b] 使用归档日志。数据库是可恢复的数据库。启用前滚恢复和崩溃恢复。当日志文件满时,自动对它进行归档,归档的目的地就是Logarchmeth1设置的位置。 如果在归档日志文件时发生错误,归档暂挂一段时间,此时间由ARCHRETRYDELAY数据库配置参数指定。还可以使用NUMARCHRETRY 数据库配置参数来指定 DB2 尝试将日志文件归档到主要或辅助归档目录的次数,然后它再尝试将日志文件归档到故障转移目录(由 FAILARCHPATH 数据库配置参数指定)。 Logarchmeth1和Logarchmeth2配置可能有如下几种组合 1,Logarchmeth1设置为LOGRETAIN,Logarchmeth2只能设置为OFF 归档日志位置就是DB2数据库日志的位置,需要人工干预归档日志的转移和空间维护工作 2,Logarchmeth1设置为USEREXIT,Logarchmeth2只能设置为OFF 归档日志的管理交由USEREXIT来处理,通过设置编译USEREXIT可以实现相对复杂一些的归档管理方式 3,Logarchmeth1设置为<Directory>,Logarchmeth2设置为OFF 归档日志的工作将会自动进行,需要归档日志将会被自动归档到<Directory>指定的位置,由于归档是自动进行,DB2的日志目录中只有正常logprimary+logsecond个数据库日志。 4,Logarchmeth1设置为<Directory1>,Logarchmeth2设置为<Directory2> 归档日志的工作将会自动进行,需要归档日志将会被自动归档到<Directory1>和<Directory2>指定的位置,也就是会产生两份归档日志由于归档是自动进行,DB2的日志目录中只有正常logprimary+logsecond个数据库日志。 <Directory1>或者<Directory2>都可以设置为TSM。一般推荐<Directory1>为文件系统,<Directory2>设置为TSM,既可以归档到TSM离线保存,又可以在线使用文件系统中归档日志,比较方便。 [b]注意:设置Logarchmeth1和Logarchmeth2后,数据库会进入backup pending状态,必须进行一次脱机备份,数据才会进入recovery模式并且正常工作。[/b] [b]其他常用的日志设置参数[/b] 1,故障转移归档路径(failarchpath) 如果指定的日志归档方法失败,则为归档日志文件指定备用目录。在失败的日志归档方法再次可用之前,此目录是日志文件的临时存储器,此时日志文件将从此目录中移至日志归档方法。通过将日志文件移动至该临时位置,可以避免日志目录发生已满情况。此参数必须是一个标准现有目录。 如果用tsm作为归档目的,这个参数比较必要,当tsm出现问题不能接收归档文件数据的时候,这个可以救急,以免数据库挂起。 2,日志文件大小(logfilsiz) 此参数以 4 KB 的页数指定每个配置日志的大小。 如果logfilsiz太小会引起频繁的日志切换和归档,而且遇到大事务的时候 (logprimary+logsecond)× logfilsiz 不足装下所有内容的时候,该事务会失败回滚。 3,每个事务的最大日志数(max_log) 此参数指示一个事务可以消耗的主日志空间的百分比。该值是为 logprimary 配置参数指定的值的百分比。 如果该值设置为 0,则对一个事务可以消耗的总的主日志空间的百分比没有限制。如果应用程序违反了 max_log 配置,则将强制该应用程序与数据库断开连接,事务将被回滚,并且将返回错误 SQL1224N。 如果对事务大小无法估计,一般都设置为0,避免意外回滚发生。 4,主日志(logprimary) 此参数指定将创建的大小为 logfilsiz 的主日志数。 默认为3 主日志,无论是空的还是满的,都需要相同的磁盘空间容量。因此,若配置的日志多于需要的日志,将会不必要地占用磁盘空间。若配置的日志太少,可能会遇到日志满载的情况。当选择要配置的日志数时,必须考虑建立的每个日志的大小,以及应用程序是否可以处理日志满载的情况。对活动日志空间的总日志文件大小限制为 256 GB。 5,辅助日志(logsecond) 此参数指定创建并用于恢复(如果需要的话)的辅助日志文件的数目。 默认为2 如果主日志文件已满,可按需要一次分配一个辅助日志文件(大小为 logfilsiz),最多可分配由此参数指定的最大数目。如果此参数设置为 -1,则将数据库配置为无限活动日志空间。对在数据库上运行的未完成事务的大小或数量没有任何限制。在必须容纳大型作业的环境中(这些作业需要的日志空间比通常分配给主日志的空间多),无限活动日志记录功能非常有用。