鉴于网上对DB2数据库的备份、还原资料较少,故将自己整理的内容记录一下。
常见的备份方式有三种,
第一种:数据库整体备份,通过时间戳还原数据库;
第二种:通过将数据库文件导出为 .ixf 文件,命令行还原方式;
第三种:通过其他中间件备份,如CSV表格等等。
这里仅对前两种备份的方式进行说明。
Part One -》
通过cmd命令进入db2cmd,
备份命令: db2 backup database
还原命令: db2 restore db
(或通过datastudio进行备份、复原亦可)
Part Two -》
1> 导出表结构
db2look -d
单模式导出语句 db2look -d
具体参数说明: https://blog.csdn.net/qiuyoungster/article/details/48549817
2> 导出表数据
通过数据库连接工具运行如下命令,这里以备份COMMON 模式为例。
select 'db2 export to '|| 'E:\data\COMMON\' || tabname ||'.ixf of ixf select * from '||'COMMON.'||tabname from syscat.tables where TABSCHEMA='COMMON'
将运行的结果写入批处理文件中。
export.bat
db2 connect to user administrator using
db2 export to E:\data\COMMON\T_BAS_ATTACH.ixf of ixf select * from COMMON.T_BAS_ATTACH
db2 export to E:\data\COMMON\T_BAS_COMPANY.ixf of ixf select * from COMMON.T_BAS_COMPANY
另外如果密码中含有特殊字符,如","等,需要将密码转义, \" xx,.xx \"。
在需要备份的数据库db2cmd中运行该批处理文件,即可将数据备份至文件目录下。
3> 导入表结构
db2 -tvf E:\FILE_TO_EXPORT.sql
单模式还原 db2 -z
4> 导入表数据
通过数据库连接工具运行如下命令,这里以备份COMMON 模式为例。
select 'db2 load from '|| 'D:\data\COMMON\' || tabname ||'.ixf of ixf modified by identityoverride replace into ' ||'COMMON.' || tabname from syscat.tables where TABSCHEMA='COMMON'
将运行的结果写入批处理文件中。
import.bat
db2 connect to user administrator using
db2 load from E:\data\COMMON\T_BAS_ATTACH.ixf of ixf modified by identityoverride replace into COMMON.T_BAS_ATTACH
db2 load from E:\data\COMMON\T_BAS_COMPANY.ixf of ixf modified by identityoverride replace into COMMON.T_BAS_COMPANY
在需要备份的数据库db2cmd中运行该批处理文件,即可将数据还原。
5> 数据表有时会出现暂挂的状态。
不允许对表 "" 执行操作,原因码为 "1"。. SQLCODE=-668, SQLSTATE=57016,
// 查看表是否暂挂
db2 load query TABLE
db2 set integrity for check immediate unchecked
ps: 此外,如果需要将备份的数据导入到别名的数据库中,命令如下
db2 RESTORE DATABASE