使用DB2 V9进行非增量重定向还原(三)
使用自动存储管理
接下来我们通过例子来具体看一下如何使用自动存储管理,具体步骤如下:
1. 创建一个使用自动存储器的数据库DB2TEST1修改其数据库配置参数,使其使用归档日志,然后对数据库做一次全备。
2. 分别创建使用自动存储器功能的常规表空间TABLESPACE1和不使用自动存储器功能的大型表空间TABLESPACE2。
3. 对测试数据库DB2TEST1做一次全备,以便将来可以恢复到此时的状态。
4. 创建示例表 "DB2INST1"."EMPLOYEE"。
5. 对测试数据库DB2TEST1再做一次全备,以便将来可以恢复到此时的状态。
6. 利用全量备份还原测试数据库DB2TEST1。
7. 非增量定向还原测试数据库DB2TEST1。
创建测试数据库
我们首先创建使用自动存储功能的测试数据库DB2TEST1,打开 DB2 命令窗口,发出CREATE DATABASE语句,创建数据库,如 清单 1所示:
--清单 1. 创建自动存储器DB2数据库
CREATE DATABASE DB2TEST1 on /db2/databases/db2test1/auto_storage
DBPATH ON /db2/databases/db2test1
这样我们创建了一个自动存储器数据库DB2TEST1,其数据库路径是/db2/databases/db2test1,自动存储路径是/db2/databases/db2test1/auto_storage,默认创建了3个表空间:SYSCATSPACE、TEMPSPACE1、USERSPACE1,都是使用自动存储管理。创建好数据库后,连接数据库DB2TEST1,我们需要把数据库的日志管理模式改为归档,具体如清单2所示。
--清单 2. 更改数据库参数
UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 LOGRETAIN IMMEDIATE
建议大家使用LOGARCHMETH1,此参数指定已归档日志的主要目标的介质类型,不要继续使用LOGRETAIN或USEREXIT参数。LOGARCHMETH1参数缺省值为OFF,取值范围可以是 LOGRETAIN、 USEREXIT、 DISK、TSM或VENDOR,各自的含义如下:
l OFF
指定不使用日志归档方法。如果 logarchmeth1 和 logarchmeth2 都设置为 OFF,那么认为数据库正在使用循环日志记录,且不可前滚恢复。这是缺省值。
l LOGRETAIN
此值仅可用于 logarchmeth1,且等价于将 logretain 配置参数设置为 RECOVERY。 如果指定此值,将自动更新 logretain 配置参数。
l USEREXIT此值仅对 logarchmeth1 有效,且等价于将 userexit 配置参数设置为 ON。如果指定此值,将自动更新 userexit 配置参数。
l DISK
此值后必须紧跟冒号(:),然后是现有标准路径名,日志文件将在其中归档。例如,如果将 logarchmeth1 设置为 DISK:/u/dbuser/archived_logs,那么将归档日志文件放入名为 /u/dbuser/archived_logs 的目录。
注: 如果正在归档至磁带,可以使用 db2tapemgr 实用程序来存储和检索日志文件。
l TSM
如果指定不带任何附加配置参数,此值指示应该使用缺省管理类,将日志文件归档在本地 TSM 服务器上。如果此值后紧跟冒号(:)和 TSM 管理类,那么使用指定的管理类来归档日志文件。
l VENDOR
指定将使用供应商库来归档日志文件。此值后必须紧跟冒号(:)和库的名称。库中提供的 API 必须使用备份并复原供应商产品的 API。
注: 如果将 logarchmeth1 或 logarchmeth2 设置为 OFF 以外的值,那么必须配置数据库以进行前滚恢复。
如果更新 userexit 或 logretain 配置参数,将自动更新 logarchmeth1,反之亦然。然而,如果您要使用 userexit 或 logretain, 必须将 logarchmeth2 设置为 OFF。
更改成功后,此时你执行如下命令:
FORCE APPLICATIONS ALL
命令成功后,用LIST APPLICATIONS看所有应用程序是否都断开了,如果没有断开,再重复执行FORCE APPLICATIONS ALL,保证断开后,把数据库做一次全备,如清单3所示。
--清单 3.备份数据库
BACKUP DATABASE DB2TEST1 TO /db2/databases/backup/
完全备份成功后,连接上数据库,现在您可以创建示例表空间了。这样我们就创建了一个测试库DB2TEST1,其使用归档日志,不允许增量备份。
创建示例表空间
创建表空间既可以在服务器或本地执行命令创建,也可以在本地Windows环境上使用图形化界面的方式创建,为了使用图形化界面,我们首先来编目远程的数据库服务器,如清单4所示。
--清单 4. 编目远程数据库
CATALOG ADMIN TCPIP NODE 192.168.0.1 REMOTE 192.168.0.1
CATALOG TCPIP NODE db2inst1 REMOTE 192.168.0.1 SERVER 50000
CATALOG DATABASE DB2TEST1 AS MYDB AT NODE db2inst1
把IP地址是192.168.0.1,端口号是50000的数据库服务器在本地编目为节点db2inst1,并把数据库DB2TEST1在本地编目为MYDB。
接下来我们创建使用自动存储器功能的表空间TABLESPACE1,连接上数据库DB2TEST1后,发出CREATE TABLESPACE命令,如清单5所示。
--清单 5. 创建常规表空间TABLESPACE1,使用自动存储CREATE REGULAR TABLESPACE TABLESPACE1 PAGESIZE 4 K MANAGED BY AUTOMATIC STORAGE BUFFERPOOL IBMDEFAULTBP
注意,我们在MANAGED BY后面跟的是AUTOMATIC STORAGE,表示新创建的表空间将使用自动存储。查看表空间可以使用LIST TABLESPACES命令,在DB2 命令行中输入下列命令,如清单6所示。
--清单 6. 查看表空间
LIST TABLESPACES SHOW DETAIL
你可以看到TABLESPACE1已经创建成功,其空间管理类型是数据库管理空间,具体如清单7所示。
--清单 7. 查看表空间结果
表空间标识 = 3
名称 = TABLESPACE1
类型 = 数据库管理空间
内容 = 所有持久数据。常规表空间。
状态 = 0x0000
详细解释:
正常
总计页数 = 8192
可用页数 = 8160
已用页数 = 96
可用页数 = 8064
高水位标记(页) = 96
页大小(以字节计) = 4096
扩展数据块大小(页) = 32
预取大小(页) = 32
容器数 = 1
最小恢复时间 = 2007-09-11-09.18.46.000000
还可以通过在本地(Windows环境下)控制中心,对远程实例和数据库连接后,对MYDB数据库进行操作,右键单击“表空间”文件夹,选创建,打开创建表空间向导,如图1所示。
图1:创建常规表空间TABLESPACE1,使用自动存储
在名称中输入表空间名TABLESPACE1,选中“让DB2管理存储器(自动存储器)(L)”,这样将创建使用自动存储器的表空间,你一定注意到了,当你选中“让DB2管理存储器(自动存储器)(L)”时向导比选中“我想手工管理存储器(I)”,少了空间管理和容器两部分功能,这是因为使用自动存储的表空间容器和空间管理是自动完成的。
接着我们要创建一个使用非自动存储的大型表空间TABLESPACE2,其使用32K页大小,因此在创建之前我们需要先创建一个32K页大小的缓冲池,如清单8所示。
--清单8. 创建缓冲池
CREATE BUFFERPOOL BUFFERPOOL_32K IMMEDIATE SIZE 250 AUTOMATIC PAGESIZE 32 K
注意,在DB2 V9中引入了自动自调整内存机制,默认情况下启动,我们在创建缓冲池BUFFERPOOL_32K加了一个选项AUTOMATIC,表示可以对缓冲池的内存启用自调整。
命令成功完成后,我们接下来创建32K页大小的使用非自动存储的大型表空间TABLESPACE2,如清单9所示。
--清单 9. 创建大型表空间
CREATE LARGE TABLESPACE TABLESPACE2 PAGESIZE 32 K MANAGED BY DATABASE USING ( FILE /db2/databases/tablespaces/tablespace_32k 640 ) EXTENTSIZE 16 OVERHEAD 10.5 PREFETCHSIZE 16 TRANSFERRATE 0.14 BUFFERPOOL BUFFERPOOL_32K
注意,此时我们在MANAGED BY后面跟的是DATABASE,表示空间管理是数据库管理(DMS),此时容器也需要自己定义。IT168