redirect restore db2 database
重定向恢复draft库
注意事项:
确认库以及文件系统大小,用户组等信息
要求目标环境满足数据库版本以及库、文件系统、用户组等一致
操作系统AIX5300-12 DB2 v9.1.0.6
创建实例或者用已有实例本次使用db2draft 实例操作
检查确认文件系统是否满足
db2draft db2gdraft 30GB /draftds
1 生成重定向恢复脚本
dbname=draft
imagepath=/draftds/20180503
timestamp=20180503021001
scriptname=draft.clp
dbhome=/draftds/catalog
db2 restore db $dbname from $imagepath taken at $timestamp redirect generate script $scriptname
2 修改脚本
根据新环境需要调整内容
restore options on dbpath on into newlogpath etc
automatic storage paths
container layout and paths
3 创建新库 如果没有
参数解释
- DATABASE database-name
给数据库指定名称,在本地和系统库中,都必须唯一的,不能包含空格。 - AT DBPARTITIONNUM
指定数据库将要被创建在发出命令的分区。当创建一个新库,不要指定这个参数。可以用它重建一个因为损坏而删除的数
据库分区。当用这个参数创建库,数据库将处于restore pending状态。不切断应用可能导致不一致,用时谨慎。 - AUTOMATIC STORAGE NO | YES
指定自动存储打开或关闭。默认是打开的。 - ON path or drive
这个子句和AUTOMATIC STORAGE的值有关,它指定了DB表空间的容器位置。详细的目录结构如下
/Path or Drive ----------> 数据库目录
|
|------ InstanceName ----------> 实例名
|
|------ NODEnnnn ----------> 节点名
|
|------ DataBaseName ----------> 数据库名
|
|------Tnnnnnnn ----------> 表空间容器
对于AUTOMATIC STORAGE NO:只有一个path可以包含在ON后,它指定了DB的位置。如果没有指定这个参数,DB创建到默认路径中,该默认路径为dbm cfg的dftdbpath指定。
对于AUTOMATIC STORAGE YES:可以列出多个路径,有逗号分隔,这些路径作为存储路径和保存自动存储表空间的容器。对于多分区DB,相同的存储路径被用在所有分区中。
创建数据库后将创建三个缺省表空间:
T0000000子目录中包含带有系统目录表的目录表空间。
T0000001子目录中包含缺省临时表空间。
T0000002子目录中包含缺省用户数据表空间。
每个子目录或容器中都会创建一个名为 SQLTAG.NAM 的文件。这个文件可以标记正在使用中的子目录,因此在以后创建其他表空间时,不会尝试使用这些子目录。
此外,名为 SQL*.DAT 的文件中还存储有关子目录或容器包含的每个表的信息。星号()将被唯一的一组数字取代,用来识别每个表。对于每个 SQL.DAT 文件,可能有一个或多个下列文件,这取决于表类型、表的重组状态或者表是否存在索引、LOB 或 LONG 字段:
SQL*.BKM(如果它是一个 MDC 表,那么它包含块分配信息)
SQL*.LF(包含 LONG VARCHAR 或 LONG VARGRAPHIC 数据)
SQL*.LB(包含 BLOB、CLOB 或 DBCLOB 数据)
SQL*.XDA(包含 XML 数据)
SQL*.LBA(包含有关 SQL*.LB 文件的分配和可用空间信息)
SQL*.INX(包含索引表数据)
SQL*.IN1(包含索引表数据)
SQL*.DTR(包含用于重组 SQL*.DAT 文件的临时数据)
SQL*.LFR(包含用于重组 SQL*.LF 文件的临时数据)
SQL*.RLB(包含用于重组 SQL*.LB 文件的临时数据)
SQL*.RBA(包含用于重组 SQL*.LBA 文件的临时数据)
5、DBPATH ON指定了数据库基础文件(控制文件,日志文件等)的创建位置。如果没有指定,则数据库在ON后面第一
个路径指定。如果没有指定路径,则在默认位置创建,该默认路径为dbm cfg的dftdbpath指定。数据库路径里面创建了
分层目录结构。这个结构保存了数据库操作需要的文件,目录结构具体如下
/Path or Drive ----------> 数据库目录
|
|------ InstanceName ----------> 实例名
|
|------ NODEnnnn ----------> 节点名
|
|------ SQLxxxxx ----------> 数据库编号
| |
| |------SQLOGDIR ----------> 数据库日志目录
|
|------sqldbdir ----------> 本地数据库编目
其中SQLOGDIR目录用来存放数据库日志文件,建库后可以更改日志文件位置
SQLxxxxx目录下包含如下文件
SQLBP.1 和 SQLBP.2 文件中都包含缓冲池信息。这两个文件中具有相同的副本,从而提供备份。
SQLSPCS.1 和 SQLSPCS.2 文件中都包含表空间信息。这两个文件中具有相同的副本,从而提供备份。
SQLSGF.1 和 SQLSGF.2 文件中都包含与数据库的自动存储器相关的存储路径信息。这两个文件中具有相同的副本,从而提供备份。
SQLDBCON 文件中包含数据库配置信息。切勿编辑此文件。要更改配置参数,请使用控制中心或者使用 UPDATE DATABASE CONFIGURATION 和 RESET DATABASE CONFIGURATION 命令。
db2rhist.asc 历史记录文件及其备份 db2rhist.bak 中包含关于备份、复原、表装入、表重组、表空间改变和其他数据库更改的历史记录信息。
DB2TSCHNG.HIS文件中包含日志文件级别的表空间更改的历史记录。对于每个日志文件,DB2TSCHG.HIS中包含有助于确定日志文件影响哪些表空间的信息。表空间恢复使用此文件中的信息来确定在进行表空间恢复期间要处理哪些日志文件。可以在文本编辑器中检查这两个历史记录文件中的内容。
日志控制文件 SQLOGCTL.LFH 和 SQLOGMIR.LFH 中包含有关活动日志的信息。
恢复处理过程使用这些文件中的信息来确定要在日志中后退多远来开始恢复。SQLOGDIR子目录中包含实际的日志文件。
注:您应确保不要将日志子目录映射到用于存储数据的磁盘。这样,在磁盘发生问题时,只会影响到数据或日志,而不会同时影响这两者。由于日志文件与数据库容器不会争用同一磁盘磁头的移动,因此这可提供很多性能方面的好处。要更改日志子目录的位置,请更改 newlogpath数据库配置参数。
SQLINSLK文件用于确保一个数据库只能由数据库管理器的一个实例使用。
在创建数据库的同时,还在db2event目录下创建了详细死锁事件监视器。详细死锁事件监视器文件存储在目录节点的数据库目录中。当事件监视器达到它要输出的最大文件数 时,它将取消激活,并且将把一条消息写入通知日志中。这样可防止事件监视器消耗过多的磁盘空间。除去不再需要的输出文件将允许在下一次数据库激活时再次激 活事件监视器。
DBPATH ON选项可以被用来把以上文件和信息,放在一个与数据库数据存储路径分开的路径中。当使用automatic storage时,建议将数据库的information和数据库的data分开。
对于MPP系统,数据库不能建在NFS文件夹中,不能是相对路径。每个给出的路径必须在每个数据库分区中存在并可访问。
database path最长215字符,storage path最长175字符。
db2 create database draft on /draftds/catalog using codeset UTF-8 territory CN
4 执行恢复命令
db2 -tvf draft.clp
db2draft@P750B:/draftds>db2 -tvf draft.clp
UPDATE COMMAND OPTIONS USING S ON Z ON DRAFT_NODE0000.out V ON
DB20000I The UPDATE COMMAND OPTIONS command completed successfully.
SET CLIENT ATTACH_DBPARTITIONNUM 0
DB20000I The SET CLIENT command completed successfully.
SET CLIENT CONNECT_DBPARTITIONNUM 0
DB20000I The SET CLIENT command completed successfully.
RESTORE DATABASE DRAFT FROM ‘/draftds/20180503’ TAKEN AT 20180503021001 ON ‘/draftds/catalog’ INTO DRAFT LOGTARGET ‘/draftds/actlog’ NEWLOGPATH ‘/draftds/actlog’ REDIRECT
SQL2523W Warning! Restoring to an existing database that is different from
the database on the backup image, but have matching names. The target database
will be overwritten by the backup version. The Roll-forward recovery logs
associated with the target database will be deleted.
Do you want to continue ? (y/n) y
SQL1277W A redirected restore operation is being performed. Table space
configuration can now be viewed and table spaces that do not use automatic
storage can have their containers reconfigured.
DB20000I The RESTORE DATABASE command completed successfully.
SET TABLESPACE CONTAINERS FOR 2 USING ( FILE ‘/draftds/tbsp/dcbmsbizts01.file’ 2521440 , FILE ‘/draftds/tbsp/dcbmsbizts02.file’ 2521440 , FILE ‘/draftds/tbsp/dcbmsbizts03.file’ 2521440 )
SQL0968C The file system is full. SQLSTATE=57011
日志报错:
2018-05-16-14.44.41.792362+480 I55265A784 LEVEL: Warning
PID : 2851022 TID : 1 PROC : db2agent (DRAFT) 0
INSTANCE: db2draft NODE : 000 DB : DRAFT
APPHDL : 0-74 APPID: *LOCAL.db2draft.180516062449
AUTHID : DB2DRAFT
FUNCTION: DB2 UDB, database utilities, sqludCheckRedirectedStatus, probe:1165
DATA #1 :
Insufficient space in tablespace USERSPACE1; you must have at least 982528
usable pages. (The “usable pages” total does not include pages used
internally by DB2, so the value specified on the SET TABLESPACE
CONTAINERS operation should be increased by one extent per container.
Based on the latest SET TABLESPACE CONTAINERS values specifed, the
tablespace should have 982560 pages in total.)
db2 “set tablespace containers for 2 using(FILE ‘/draftds/tbsp/dcbmsbizts01.file’ 500000,FILE ‘/draftds/tbsp/dcbmsbizts02.file’ 500000)”
db2 “set tablespace containers for 3 using(FILE ‘/draftds/tbsp/systemp_cont.1’ 238400)”
db2 “restore database draft continue”
检查进度
db2 list utilities show detail
ID = 3
Type = RESTORE
Database Name = DRAFT
Partition Number = 0
Description = db
Start Time = 05/16/2018 14:24:49.330705
State = Executing
Invocation Type = User
Progress Monitoring:
Completed Work = 4228059136 bytes
Start Time = 05/16/2018 14:24:49.330711
完成之后验证
4 验证
db2 list db directory show detaill
db2 list db directory on /draftds/catalog
db2pd -d draft -tablespace
db2 list tablespace containers for 0 1 2 3 4 5
检查 db2diag.log
2018-05-17-10.04.51.027351+480 E19475A597 LEVEL: Warning (OS)
PID : 6041708 TID : 1 PROC : db2agent (DRAFT) 0
INSTANCE: db2draft NODE : 000
APPHDL : 0-440 APPID: *LOCAL.db2draft.180517020450
AUTHID : DB2DRAFT
FUNCTION: DB2 UDB, oper system services, sqlomkdirp, probe:100
MESSAGE : ZRC=0x860F000A=-2045837302=SQLO_FNEX “File not found.”
DIA8411C A file “” could not be found.
CALLED : OS, -, unspecified_system_function
OSERR : ENOENT (2) “No such file or directory”
DATA #1 : File name, 21 bytes
/dcbmslogbak/db2draft
2018-05-17-10.04.50.910940+480 E17006A645 LEVEL: Warning (OS)
PID : 2851022 TID : 1 PROC : db2agent (DRAFT) 0
INSTANCE: db2draft NODE : 000 DB : DRAFT
APPHDL : 0-74 APPID: *LOCAL.db2draft.180516062449
AUTHID : DB2DRAFT
FUNCTION: DB2 UDB, oper system services, sqlomkdirp, probe:100
MESSAGE : ZRC=0x860F000A=-2045837302=SQLO_FNEX “File not found.”
DIA8411C A file “” could not be found.
CALLED : OS, -, unspecified_system_function
OSERR : ENOENT (2) “A file or directory in the path name does not exist.”
DATA #1 : File name, 21 bytes
/dcbmslogbak/db2draft
调整归档目录
db2 “update db cfg for draft using LOGARCHMETH1 DISK:/draftds/archlog”
手工归档
db2draft@P750B:/draftds>db2 "archive log for db draft "
SQL1117N A connection to or activation of database “DRAFT” cannot be made
because of ROLL-FORWARD PENDING. SQLSTATE=57019
由于前滚恢复没有指定without roolling forward 需要rollforward操作之后才能访问数据库
db2 “rollforward db draft to end of logs and stop”




