本文记录DB2常用的备份、还原及其他常用命令(错别字见谅,后续会更新)
一、备份
1、离线备份:
先切断数据库链接
db2 force application all
全量备份数据库至某个目录
db2 backup db dbname to d:
2、在线备份
开启在线备份的日志归档
db2 update db cfg for dbname using logarchmeth1 "Disk:d:\db2arch"
开启后需离线备份一次数据库,然后再进行在线备份(database可简写成db,dbname是指数据库名)
db2 force application all(先切链接)
db2 backup database dbname to d:(离线备份)
db2 backup db dbname online to d:(在线备份)
二、还原
1、没有开启在线备份
db2直接根据目录下的备份文件进行还原(注意:数据库原文件磁盘与还原磁盘应是同一磁盘,否则表空间会缺失)
db2 restore db dbname from d:
如执行该命令后出现确认提示,输入“y”即可
2、开启了在线备份
①有日志记录的还原
若还原数据库文件时有数据文件和日志文件,可根据以下步骤进行还原
先找到日志文件的目录
db2 get db cfg for dbname
根据显示出的数据库配置,找到“日志文件路径”
将该目录下文件文件复制出来,然后执行还原命令(注意:数据库原文件磁盘与还原磁盘应在同一磁盘下,否则表空间会缺失)
db2 restore db dbname from d:
执行成功后,如使用connect连接会提示数据没有前滚(SQL1117N错误)
再看下数据库配置
db2 get db cfg for dbname
将已复制的文件拷贝到日志文件目录下
然后执行前滚命令
db2 rollforward db dbname to end of logs and complete
这时,前滚完成,执行数据库连接即可(username和password是用户名和密码)
db2 connect to dbname user username using password
②没有日志记录的还原
若只有在线备份文件数据文件,没有日志文件(一般用于磁盘坏道,病毒等引发的文件丢失或部分内容不可恢复)
直接进行备份数据文件的还原,并解压出活动日志(时间戳,备份文件的所在目录)
db2 restore db dbname logs taken at 2019041703361 logtarget d:\dbold
这时数据文件已还原,并在上述目录下生成日志记录的活动文件,再根据活动文件,进行前滚即可
db2 rollforward db dbname to end of logs and stop overflow log path('d:/dbold')
这样,再输入连接命令就可以了。
三、DB2常用命令
1、修改日志文件大小
修改日志文件大小:update db cfg for dbname using LOGFILSIZ 30000
修改主日志文件个数:update db cfg for dbname using LOGPRIMARY 100
修改辅助日志文件个数:update db cfg for dbname using LOGSECOND 60
2、用db2look命令生成表结构(dbname 是数据库名字,username 是数据库用户名,password 是数据库密码)
db2look -d dbname -i username -w password -a -e -o d:\database.sql
3、用db2move导出所有表的数据
db2move dbname export -u username -p password
4、执行sql脚本(-tvf 后面跟着sql文件,后面是打印log)
db2 -tvf d:\database.sql -z d:\20190417.log
5、删除
删除表空间(dbname_tempspace32 是表空间名称)
db2 drop tablespace dbname_tempspace32
删除数据库
db2 drop db dbname
卸载Catalog信息
db2 uncatalog db dbname
db2 uncatalog node dbname
db2 terminate