签到成功

知道了

CNDBA社区CNDBA社区

rhel7.9上db2数据库异机恢复

2025-09-14 18:36 136 0 原创 Linux
作者: Anshen

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”

http://www.cndba.cn/redhat/article/131720

编辑修改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.http://www.cndba.cn/redhat/article/131720

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.

http://www.cndba.cn/redhat/article/131720
http://www.cndba.cn/redhat/article/131720

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)”http://www.cndba.cn/redhat/article/131720

http://www.cndba.cn/redhat/article/131720

                             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 UTChttp://www.cndba.cn/redhat/article/131720

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 ~]$

切换归档日志http://www.cndba.cn/redhat/article/131720

[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 =http://www.cndba.cn/redhat/article/131720

[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 ~]$ http://www.cndba.cn/redhat/article/131720

版权声明:本文为博主原创文章,未经博主允许不得转载。

rhel7.9上db2数据库异机恢复

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Anshen

Anshen

关注

成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。

  • 71
    原创
  • 0
    翻译
  • 5
    转载
  • 8
    评论
  • 访问:319595次
  • 积分:332
  • 等级:中级会员
  • 排名:第13名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ