这里假设dbdemo1和dbdemo2是两个数据库名,两个实验主机名分别为A和B,其中A中安装版本较高的db2, B 中安装有版本较低的db2.
下面是几个基本命令:
db2启动/停止: db2start/db2stop(force) db2连接:db2 connect to <数据库名>
db2cmd进入db2的命令提示窗口
db2cc 进入db2控制中心图形化界面(无发打开时有可以尝试关闭javaw.exe进程) db2 list db directory列出已经创建的数据库目录
同一台主机上数据库的备份与恢复:
下面这条命令是将数据库dbdemo2备份到C 盘的dbdata文件夹目录中 db2 backup db dbdemo2 to C:\\dbdata
这条命令运行成功会在C:\\dbdata目录下生成一个如下格式的文件
下面这条命令是用如上生成的备份文件对数据库dbdemo2进行恢复 db2 restore db dbdemo2 from C:\\dbdata taken at 20120109171220
(直接取备份数据的时间戳即可)
注意:恢复操作执行时,数据库dbdemo2可已存在也可以不存在,存在时会恢复到该时间戳对应的数据库数据版本,如果db2中不存在名为dbdemo2的数据库,则会自动生成一个名为dbdemo2的数据库,内容极为备份的原数据库的内容。
另外还能用db2move export/import命令操作对数据库进行导入导出以实现备份和恢复 例如对于dbdemo2可以通过如下命令将数据库导出到指定目录例如E:\\db2data 通过命令行进入E:\\db2data目录
然后在该目录下执行如下命令 db2move dbdemo2 export
此时E:\\db2data文件夹中即会生成dbdemo2数据库的导出文件
要将数据库dbdemo2重新导入时,必须是导入已经存在的数据库中
执行如下命令即可将之前备份的dbdemo2导入到新的dbdemo2数据库中, db2move dbdemo2 import
(也可将备份的dedemo2导入其他另一个数据库如dbdemo3,结果跟下面一样) 分别用dbdemo2_old和dbdemo2_new表示备份数据库和新数据库
对于dbdemo2_new和dbdemo2_old中存在的同名表,dbdemo2_old的表会覆盖dbdemo2_new中存在的同名表的内容,但不会覆盖表的结构:
例如dbdemo2_old中有表tdemo1 该表有c1这一个字段,且只有一个元组取值为1
dbdemo2_new中也有表tdemo1,但该表有c1,c2这两个字段,且有两个元组取值为1,a; 2,b 执行如上操作后dbdemo2_new中的表tdemo1会被覆盖,仍有c1,c2两个字段,但此时只有一个元组取值为1 ,null。
对于dbdemo2_new中不存在而dbdemo2_old中存在的的表,会直接导入进来;
对于dbdemo2_new中存在而dbdemo2_old中不存在的表,仍然存在内容不变。
不同主机上的数据库备份与恢复
通过backup 和restore 执行备份和恢复操作时,在B主机上备份的数据库能在A主机上恢复,但是在A主机上备份的数据库不能在B主机上执行恢复,即低版本到高版本数据库可恢复,反之则不行。
下面这条命令是将B主机上的数据库dbdemo2备份到C 盘的dbdata文件夹目录中 db2 backup db dbdemo2 to C:\\dbdata
将备份文件拷贝到A主机上的D:\\dbdata目录中 执行如下命令
db2 restore db dbdemo2 from D:\\dbdata taken at 20120109171220(为dbdemo2的备份文件时间戳)
即可在A主机上恢复dbdemo2数据库(dbdemo2数据库如果存在会被覆盖,如果不存在会重新创建一个数据库)
通过db2move export/import导入导出数据库进行备份和恢复时,对数据库版本没有限制,两边都能执行
在A主机上执行:
通过命令行进入E:\\db2data目录
然后在该目录下执行如下命令 db2move dbdemo2 export
将在E:\\db2data文件夹中生成的dbdemo2数据库的导出文件复制到B主机的C:\\dbdata目录中;
在B主机中执行:
通过命令进入C:\\dbdata目录
然后在该目录下执行db2move dbdemo2 import,执行结果与在同一主机上执行结果一样。
因篇幅问题不能全部显示,请点此查看更多更全内容