[db2]数据备份与还原
前言
备份还原db2数据库一般有两种方式,一种是使用db2 backup + db2 restore,另一种是db2move + db2look。前者备份的数据库文件不能使用后者的方式进行还原。
- 实例所有者用户:db2inst1
- 待备份数据库:testdb,授权用户:zsusr/zspwd
备份
方式1: 使用db2 backup
- 切换到实例用户:
su - db2inst1
- 显示所有连接数据库的客户端
db2 list application
- 显示所有激活的数据库:
db2 list active databases
- 强制关闭所有数据库实例(断开所有客户端连接)
db2 force application all
- 关闭完实例后立即备份
# 备份完成后会显示: 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
- 连接到数据库(不连也行)
db2 connect to testdb
- 用db2look生成表结构dll脚本(执行这一步之前最好先找个空目录)
# -d: 指定数据库
# -e: 抽取数据库对象的DDL
# -a: 所有的用户和模式
# -o: 指定输出文件名称
db2look -d testdb -a -e -o db2look_testdb.sql
- 备份数据
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)
- 连接数据库(数据库需要先创建)
db2 connect to testdb user zsusr using zspwd
- 使用db2look生成的ddl文件生成表结构
db2 -tvf db2look_testdb.sql
- 导入数据
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
- 原因:部分表依赖其他表,而其他表还没还原出来,所以表呈暂挂状态。
- 解决:需要执行:
本文来自博客园,作者:花酒锄作田,转载请注明原文链接:https://www.cnblogs.com/XY-Heruo/p/16409752.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示