db2数据库异机恢复
环境介绍:
源 端:172.16.1.110 数据库db2 版本v11.5 数据库名称:yxdb
恢复端:172.16.1.121 数据库db2 版本v11.5 数据库名称:test
在源端进行操作:
1.数据库整机备份
db2 backup database yxdb online to /opt/backup compress INCLUDE LOGS
2.查看归档日志
[db2inst1@pripdb LOGSTREAM0000]$ db2 get db cfg for yxdb | grep -i log
Log retain for recovery status = NO
User exit for logging status = YES
Catalog cache size (4KB) (CATALOGCACHE_SZ) = 300
Log buffer size (4KB) (LOGBUFSZ) = 2151
Active log space disk capacity (4KB) (LOG_DISK_CAP) = 0
Log file size (4KB) (LOGFILSIZ) = 4096
Number of primary log files (LOGPRIMARY) = 10
Number of secondary log files (LOGSECOND) = 20
Changed path to log files (NEWLOGPATH) =
Path to log files = /db2_data/redo_log/NODE0000/LOGSTREAM0000/
Overflow log path (OVERFLOWLOGPATH) =
Mirror log path (MIRRORLOGPATH) =
First active log file = S0000040.LOG
Block log on disk full (BLK_LOG_DSK_FUL) = NO
Block non logged operations (BLOCKNONLOGGED) = NO
Percent max primary log space by transaction (MAX_LOG) = 0
Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = 0
Percent log file reclaimed before soft chckpt (SOFTMAX) = 0
HADR log write synchronization mode (HADR_SYNCMODE) = ASYNC
HADR spool log data limit (4KB) (HADR_SPOOL_LIMIT) = AUTOMATIC(122880)
HADR log replay delay (seconds) (HADR_REPLAY_DELAY) = 0
First log archive method (LOGARCHMETH1) = DISK:/db2_data/archive_log/
Archive compression for logarchmeth1 (LOGARCHCOMPR1) = OFF
Options for logarchmeth1 (LOGARCHOPT1) =
Second log archive method (LOGARCHMETH2) = OFF
Archive compression for logarchmeth2 (LOGARCHCOMPR2) = OFF
Options for logarchmeth2 (LOGARCHOPT2) =
Failover log archive path (FAILARCHPATH) =
Number of log archive retries on error (NUMARCHRETRY) = 5
Log archive retry Delay (secs) (ARCHRETRYDELAY) = 20
Log pages during index build (LOGINDEXBUILD) = ON
Log DDL Statements (LOG_DDL_STMTS) = NO
Log Application Information (LOG_APPL_INFO) = NO
3.将全备备份片和归档日志拷贝到172.16.1.121上
scp -r /opt/backup root@172.16.1.121:/opt/backup
scp -r /db2_data/archive_log/ root@172.16.1.121:/opt/backup
4.在目标机上安装db2数据库软件和创建instance
5.启动instance
db2start
6.预恢复生成clp文件
db2 “restore db YXDB from /opt/backup taken at 20250914165747 /
on ‘/oradata/test’ /
into test /
redirect generate script restore_test.clp”
编辑修改clp文件
UPDATE COMMAND OPTIONS USING S ON Z ON YXDB_NODE0000.out V ON;
SET CLIENT ATTACH_MEMBER 0;
SET CLIENT CONNECT_MEMBER 0;
RESTORE DATABASE YXDB FROM ‘/opt/backup’ TAKEN AT 20250914165747 ON ‘/oradata/test’ DBPATH ON ‘/oradata/test’ INTO TEST REDIRECT ;
SET TABLESPACE CONTAINERS FOR 4 USING ( FILE ‘/oradata/data_test/tbs_data01.dbf’ 65536 );
SET TABLESPACE CONTAINERS FOR 5 USING ( FILE ‘/oradata/data_test/idx_tbs01.dbf’ 65536 );
SET TABLESPACE CONTAINERS FOR 6 USING ( FILE ‘/oradata/data_test/anshen_8_1.dbf’ 262144 );
SET TABLESPACE CONTAINERS FOR 7 USING ( FILE ‘/oradata/data_test/anshen_8_2.dbf’ 262144 );
SET TABLESPACE CONTAINERS FOR 8 USING ( FILE ‘/oradata/data_test/anshen_16_1.dbf’ 131072 );
SET TABLESPACE CONTAINERS FOR 9 USING ( FILE ‘/oradata/data_test/anshen_16_2.dbf’ 131072 );
SET TABLESPACE CONTAINERS FOR 10 USING ( FILE ‘/oradata/data_test/idx_anshen_8_1.dbf’ 262144 );
SET TABLESPACE CONTAINERS FOR 11 USING ( FILE ‘/oradata/data_test/idx_anshen_16_1.dbf’ 131072 );
RESTORE DATABASE YXDB CONTINUE;
7.执行恢复操作
db2 -tvf restore_test.clp
[db2inst1@db2recover1 ~]$ db2 -tvf restore_test.clp
UPDATE COMMAND OPTIONS USING S ON Z ON YXDB_NODE0000.out V ON
DB20000I The UPDATE COMMAND OPTIONS command completed successfully.
SET CLIENT ATTACH_MEMBER 0
DB20000I The SET CLIENT command completed successfully.
SET CLIENT CONNECT_MEMBER 0
DB20000I The SET CLIENT command completed successfully.
RESTORE DATABASE YXDB FROM ‘/opt/backup’ TAKEN AT 20250914165747 ON ‘/oradata/test’ DBPATH ON ‘/oradata/test’ INTO TEST REDIRECT
SQL1277W A redirected restore operation is being performed. During a table
space restore, only table spaces being restored can have their paths
reconfigured. During a database restore, storage group storage paths and DMS
table space containers can be reconfigured.
DB20000I The RESTORE DATABASE command completed successfully.
SET TABLESPACE CONTAINERS FOR 4 USING ( FILE ‘/oradata/data_test/tbs_data01.dbf’ 65536 )
DB20000I The SET TABLESPACE CONTAINERS command completed successfully.
SET TABLESPACE CONTAINERS FOR 5 USING ( FILE ‘/oradata/data_test/idx_tbs01.dbf’ 65536 )
DB20000I The SET TABLESPACE CONTAINERS command completed successfully.
SET TABLESPACE CONTAINERS FOR 6 USING ( FILE ‘/oradata/data_test/anshen_8_1.dbf’ 262144 )
DB20000I The SET TABLESPACE CONTAINERS command completed successfully.
SET TABLESPACE CONTAINERS FOR 7 USING ( FILE ‘/oradata/data_test/anshen_8_2.dbf’ 262144 )
DB20000I The SET TABLESPACE CONTAINERS command completed successfully.
SET TABLESPACE CONTAINERS FOR 8 USING ( FILE ‘/oradata/data_test/anshen_16_1.dbf’ 131072 )
DB20000I The SET TABLESPACE CONTAINERS command completed successfully.
SET TABLESPACE CONTAINERS FOR 9 USING ( FILE ‘/oradata/data_test/anshen_16_2.dbf’ 131072 )
DB20000I The SET TABLESPACE CONTAINERS command completed successfully.
SET TABLESPACE CONTAINERS FOR 10 USING ( FILE ‘/oradata/data_test/idx_anshen_8_1.dbf’ 262144 )
DB20000I The SET TABLESPACE CONTAINERS command completed successfully.
SET TABLESPACE CONTAINERS FOR 11 USING ( FILE ‘/oradata/data_test/idx_anshen_16_1.dbf’ 131072 )
DB20000I The SET TABLESPACE CONTAINERS command completed successfully.
RESTORE DATABASE YXDB CONTINUE
DB20000I The RESTORE DATABASE command completed successfully.
恢复完成
8.执行恢复日志并且end backup logs
之前拷贝的归档日志,此时需要end
[db2inst1@db2recover1 ~]$
[db2inst1@db2recover1 ~]$ db2 “rollforward db test to end of logs and stop overflow log path (/opt/backup/NODE0000/LOGSTREAM0000/LOGSTREAM0000/C0000000)”
Rollforward Status
Input database alias = test
Number of members have returned status = 1
Member ID = 0
Rollforward status = not pending
Next log file to be read =
Log files processed = S0000035.LOG - S0000038.LOG
Last committed transaction = 2025-09-14-08.57.50.000000 UTC
DB20000I The ROLLFORWARD command completed successfully.
[db2inst1@db2recover1 ~]$
至此,DB2数据库恢复完成
9.修改redo和归档日志
退出登录的session
[db2inst1@db2recover1 ~]$ db2 connect reset
DB20000I The SQL command completed successfully.
[db2inst1@db2recover1 ~]$
[db2inst1@db2recover1 ~]$ db2 terminate
DB20000I The TERMINATE command completed successfully.
[db2inst1@db2recover1 ~]$
deactivate database 去激活数据库
[db2inst1@db2recover1 ~]$ db2 deactivate db test
DB20000I The DEACTIVATE DATABASE command completed successfully.
[db2inst1@db2recover1 ~]$
[db2inst1@db2recover1 ~]$
设置活动日志redo[类似oracle的 redo ]
[db2inst1@db2recover1 ~]$ db2 “update db cfg for TEST using NEWLOGPATH /oradata/test_redo_log”
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
[db2inst1@db2recover1 ~]$
[db2inst1@db2recover1 ~]$
设置归档位置
[db2inst1@db2recover1 ~]$ db2 “update db cfg for TEST using LOGARCHMETH1 ‘DISK:/oradata/test_arch’”
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
[db2inst1@db2recover1 ~]$
[db2inst1@db2recover1 ~]$
激活数据库
[db2inst1@db2recover1 ~]$ db2 activate database test
DB20000I The ACTIVATE DATABASE command completed successfully.
[db2inst1@db2recover1 ~]$
[db2inst1@db2recover1 ~]$
[db2inst1@db2recover1 ~]$
切换归档日志
[db2inst1@db2recover1 ~]$ db2 archive log for db test
DB20000I The ARCHIVE LOG command completed successfully.
[db2inst1@db2recover1 ~]$ db2 archive log for db test
DB20000I The ARCHIVE LOG command completed successfully.
[db2inst1@db2recover1 ~]$ db2 archive log for db test
DB20000I The ARCHIVE LOG command completed successfully.
[db2inst1@db2recover1 ~]$ ls -lrt /oradata/test_arch/db2inst1/TEST/NODE0000/LOGSTREAM0000/C0000001/S000004
S0000040.LOG S0000041.LOG S0000042.LOG
[db2inst1@db2recover1 ~]$ ls -lrt /oradata/test_arch/db2inst1/TEST/NODE0000/LOGSTREAM0000/C0000001/S000004
-rw-r——-. 1 db2inst1 db2iadm1 57344 Sep 14 18:31 /oradata/test_arch/db2inst1/TEST/NODE0000/LOGSTREAM0000/C0000001/S0000040.LOG
-rw-r——-. 1 db2inst1 db2iadm1 12288 Sep 14 18:31 /oradata/test_arch/db2inst1/TEST/NODE0000/LOGSTREAM0000/C0000001/S0000041.LOG
-rw-r——-. 1 db2inst1 db2iadm1 12288 Sep 14 18:31 /oradata/test_arch/db2inst1/TEST/NODE0000/LOGSTREAM0000/C0000001/S0000042.LOG
[db2inst1@db2recover1 ~]$
[db2inst1@db2recover1 ~]$
[db2inst1@db2recover1 ~]$ db2 archive log for db test
DB20000I The ARCHIVE LOG command completed successfully.
[db2inst1@db2recover1 ~]$
[db2inst1@db2recover1 ~]$ db2 archive log for db test
DB20000I The ARCHIVE LOG command completed successfully.
[db2inst1@db2recover1 ~]$ ls -lrt /oradata/test_arch/db2inst1/TEST/NODE0000/LOGSTREAM0000/C0000001/S000004
-rw-r——-. 1 db2inst1 db2iadm1 57344 Sep 14 18:31 /oradata/test_arch/db2inst1/TEST/NODE0000/LOGSTREAM0000/C0000001/S0000040.LOG
-rw-r——-. 1 db2inst1 db2iadm1 12288 Sep 14 18:31 /oradata/test_arch/db2inst1/TEST/NODE0000/LOGSTREAM0000/C0000001/S0000041.LOG
-rw-r——-. 1 db2inst1 db2iadm1 12288 Sep 14 18:31 /oradata/test_arch/db2inst1/TEST/NODE0000/LOGSTREAM0000/C0000001/S0000042.LOG
-rw-r——-. 1 db2inst1 db2iadm1 12288 Sep 14 18:31 /oradata/test_arch/db2inst1/TEST/NODE0000/LOGSTREAM0000/C0000001/S0000043.LOG
-rw-r——-. 1 db2inst1 db2iadm1 12288 Sep 14 18:31 /oradata/test_arch/db2inst1/TEST/NODE0000/LOGSTREAM0000/C0000001/S0000044.LOG
[db2inst1@db2recover1 ~]$
[db2inst1@db2recover1 ~]$ db2 list db directory
System Database Directory
Number of entries in the directory = 1
Database 1 entry:
Database alias = TEST
Database name = TEST
Local database directory = /oradata/test
Database release level = 15.00
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =
[db2inst1@db2recover1 ~]$ db2 list active databases
Active Databases
Database name = TEST
Applications connected currently = 0
Database path = /oradata/test/db2inst1/NODE0000/SQL00001/MEMBER0000/
[db2inst1@db2recover1 ~]$
版权声明:本文为博主原创文章,未经博主允许不得转载。
rhel7.9上db2数据库异机恢复