DB2_备份恢复(离线&在线)

本文详细介绍了数据库的离线备份、在线备份、不同机器间的恢复流程,并覆盖了表结构的导入导出。内容包括如何进行离线和在线备份、恢复数据库到相同或不同数据库、以及在不同机器上的恢复操作。此外,文章还提供了表结构的导入导出方法,适用于数据库管理和维护人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、离线备份

su – db2inst1
#断开所有连接,关闭数据库
#db2 force applications all               
db2 db2stop force
#启动数据库
db2 db2start
#显示所有数据库及其路径列表
db2 list database directory
#显示所有活动的数据库
db2 list active databases
#释放一个数据库
db2 deactivate database db_test
#数据库的备份和恢复,注意:不能跨平台恢复
#离线备份 
db2 backup database db_test to "/data/DB2/db2idb/dbback"
#恢复到相同数据库
--db2 restore database db_dev from "/data/DB2/db2idb/dbback"
#恢复到不同数据库
db2 restore database db_test from "/data/DB2/db2idb/dbback" into db_dev

二、在线备份

注意:设置或者备份用的目录必须是db2用户有权限的目录

su - db2inst1
#显示配置信息
db2 get db cfg for db_db
#启用日志归档模式
db2 update db cfg for db_db using LOGRETAIN ON
#设置日志归档目录
db2 update db cfg for db_db using LOGARCHMETH1 DISK:/data/db2data/logs/db_db
#做一次离线备份,否则数据库会登录不了[如果提示有连接无法备份,请参考db2离线备份]
db2 backup db db_db to "/data/db2data/backup/db_db"
#在线备份--备份日志(首个活动日志到当前日志会一同备份到备份文件里)
db2 backup db db_db online to "/data/db2data/backup/db_db" include logs
#从包含日志的备份集恢复[恢复同一个数据库 into db_db 可省略]
#要导入的数据库的归档目录不要和备份恢复的日志目录相同
#db2 force applications all
db2 RESTORE db db_db FROM /data/db2data/backup/db_test/ taken at 20130618142149 into db_test LOGTARGET /data/db2data/logs/db_test
#前滚
#由于从备份成功到数据库崩溃的时间间隔会产生其他的归档日志,可以将这些日志拷贝到/data/db2data/logs/中,
#或者直接从归档日志目录进行前滚,同"从不包含日志的备份集恢复"中的"前滚"
db2 "rollforward db db_test to end of logs and stop overflow log path(/data/db2data/logs/db_test)"

三、不同机器恢复

#指定redirect
db2 RESTORE db dbdb FROM /data/db2data/backup/ taken at 20130618180228 into db_db LOGTARGET /data/db2data/backup/log redirect

#db2 list tablespace containers for 0 查看空间
#db2 list tablespaces show detail 查看所有空间
#设置新的表空间,空间位置和参数可通过上两个指令查看
db2 "set tablespace containers for 0 using (file '/home/db2inst1/db2inst1/NODE0000/DB_DB/T0000000/C0000000.CAT' 6144)"
db2 "set tablespace containers for 1 using (Path '/home/db2inst1/db2inst1/NODE0000/DB_DB/T0000001/C0000000.TMP')"
db2 "set tablespace containers for 2 using (File '/home/db2inst1/db2inst1/NODE0000/DB_DB/T0000002/C0000000.LRG' 14336)"
db2 "set tablespace containers for 3 using (file '/home/db2inst1/db2inst1/NODE0000/DB_DB/T0000003/C0000000.LRG' 1024)"
db2 "set tablespace containers for 4 using (Path '/home/db2inst1/db2inst1/NODE0000/DB_DB/T0000004/C0000000.UTM')"
#应用设置
db2 RESTORE DATABASE dbdb CONTINUE
--db2 rollforward db db_db query status 查看状态
db2 "rollforward db db_db to end of logs and stop overflow log path(/data/db2data/backup/log)"

#不是同一个版本的数据库会报如下错误,本人未进行进一步测试
$ db2 connect to db_db
SQL0901N  The SQL statement failed because of a non-severe system error. 
Subsequent SQL statements can be processed.  (Reason "Scan interface error".)  
SQLSTATE=58004
DB2 SQL0901N错误解决
问题描述:还原数据库后连接数据库报错,提示信息如下。
SQL0901N  由于不严重的系统错误,SQL 语句失败。可以处理后续 SQL语句。(原因"Scan interface error")。 SQLSTATE=58004
问题解决:查看备份机器和还原机器的DB2版本,查看版本(包括补丁号)是否一致(查看版本号命令DB2LEVEL),如果不一致,则在还原机器上打补丁(网上下载或在备份机器上copy一份),以确保与备份机器一致。

四、表结构导入导出

#表结构导出
db2look -d db_test -e -z AM -l -o exdb.sql
#导入表结构操作:
db2 -tvf exdb.sql





















转载于:https://my.oschina.net/sandant/blog/371101

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值