[db2]数据备份与还原

前言

备份还原db2数据库一般有两种方式,一种是使用db2 backup + db2 restore,另一种是db2move + db2look。前者备份的数据库文件不能使用后者的方式进行还原。

  • 实例所有者用户:db2inst1
  • 待备份数据库:testdb,授权用户:zsusr/zspwd

备份

方式1: 使用db2 backup

  1. 切换到实例用户:
su - db2inst1
  1. 显示所有连接数据库的客户端
db2 list application
  1. 显示所有激活的数据库:
db2 list active databases
  1. 强制关闭所有数据库实例(断开所有客户端连接)
db2 force application all
  1. 关闭完实例后立即备份
# 备份完成后会显示: Backup successful. The timestamp for this backup image is : ...
# 注意时间戳
# 语法: db2 backup db <db name> to <path>
db2 backup db testdb to /home/db2inst1/backup

方式2: 使用db2 move

  1. 连接到数据库(不连也行)
db2 connect to testdb
  1. 用db2look生成表结构dll脚本(执行这一步之前最好先找个空目录)
# -d: 指定数据库
# -e: 抽取数据库对象的DDL
# -a: 所有的用户和模式
# -o: 指定输出文件名称
db2look -d testdb -a -e -o db2look_testdb.sql
  1. 备份数据
db2move testdb export -sn testdb -u zsusr -p zspwd

还原

方式1(对应备份方式1)

db2 restore db dbbak from /home/db2inst1 taken at 20200401160847 into dbbak01

方式2(对应备份方式2)

  1. 连接数据库(数据库需要先创建)
db2 connect to testdb user zsusr using zspwd
  1. 使用db2look生成的ddl文件生成表结构
db2 -tvf db2look_testdb.sql
  1. 导入数据
db2move testdb load

补充

  • 还原出来的新库,查看部分表时可能会报错:SQL0668N Operation not allowed for reason code "1" on table xxx SQLSTATE=57016
    • 解决:需要执行:set integrity for <schema_name>.<table_name> immediate checked
    • 原因:部分表依赖其他表,而其他表还没还原出来,所以表呈暂挂状态。
posted @   花酒锄作田  阅读(832)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示