打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
db2move详解
db2move   命令    
   
  db2move   <database-name>   <action>   [<option>   <value>]  
   
  首先,您必须指定数据库名(想要移动的表所在的数据库)和要执行的操作(export   和   import   或   load)。然后指定一个选项来定义操作的范围。例如,可以将一个操作限制在特定的表(-tn)、表空间(-ts)、表创建者(-tc)或模式名(-sn)范围内。指定表、表空间或表的创建者的一个子集只对   export   操作有效。如果指定多个值,就必须使用逗号将其分隔开;在值列表项之间不允许有空格。可以指定的项最多为   10   个。  
   
  另外,也可以指定   -tf   选项,此时要使用一个文件名作为参数,其中列出了要导出的表名;在该文件中,每行只能列出一个完整的表名。您还可以指定以下内容:  
   
  -io   import-option    
  指定   DB2   的   import   工具可以运行的一种模式。有效的选项有:   CREATE、   INSERT、   INSERT_UPDATE、   REPLACE   和   REPLACE_CREATE。缺省值为   REPLACE_CREATE。有关这些模式的更多内容,请参阅   DB2   的产品文档,可以从   DB2   技术支持获得这些文档。    
   
  -lo   load-option    
  指定   DB2   的   load   工具可以运行的一种模式。有效的选项有:INSERT   和   REPLACE。缺省值为   INSERT。   有关这些模式的更多内容,请参阅   DB2   的产品文档,可以从   DB2   技术支持获得这些文档。    
   
  -l   lobpaths    
  指定要创建或查找的   LOB   文件的位置。必须指定一个或多个绝对路径名。如果指定了多个绝对路径,就必须使用逗号将其分隔开;值之间不允许有空格。缺省值是当前目录。    
   
  -u   userid    
  指定一个用户   ID,该工具可以使用这个用户   ID   登录到远程系统上。    
   
  -p   password    
  指定对该用户进行认证的密码;该工具需要使用一个有效的用户   ID   和密码登录到远程系统上。
例子:
关于DB2MOVE的使用
主要是想修改表的SCHEMA和TABLESPACE
以前用DB2MOVE到过数据,不过觉得使用时有些限制。所以有时候还是自己写脚本来倒数。
这几天因为BI项目升级,测试的时候想重构数据库。主要是想修改表的SCHEMA和TABLESPACE
比较烦琐的方法是
1>在源系统上运行db2look生成DDL脚本。或者使用db2cc用图形界面生成脚本
2>修改script中关于schema和tablespace的信息
3>在目标系统上运行修改后的脚本
4>用sql生成export,import或load的批量脚本,进行数据迁移
5>实际操作中,使用load的时候可能会发生破坏表完整性约束的情况,需要执行set integrity for <tablename> immediate checked消除表check pending的状态。
现在再说说使用db2move实现的步骤,通常db2move的操作是在same schema情况下使用的。我以前一直这么理解。数据库这东西博大精深,平时工作中更多的上讲实现,能达到目的就行。很少去关注一些细节的问题,所以时常也因此走冤枉路。
1> db2move tkdw_rep export -sn tkpm62,批量导出
2>观察生成的文件,其中有个db2move.lst文件,内容如下:
!"TKPM62  "."OPB_ANALYZE_DEP"!tab1.ixf!tab1.msg!
我试着把内容改成
!"TKPM  "."OPB_ANALYZE_DEP"!tab1.ixf!tab1.msg!
“TKPM”是我在目标系统中的schema名称,我想看看这样能不能间接实现schema名称的转换
3> db2move rep7 import -u tkpm -p tkpm
成功了,跟我预想的一样。
不过有些不理想的地方,db2move时系统虽然会自动建表,但是也仅限于表,表上的视图和索引还需要自行创建)
所以需要在导完数据后,用脚本创建索引和视图,以及授权等操作。这样可以防止破坏表的完整性
 
还有中方式就是事先在目标库上建好对象,然后再导入数据
提示:不过测试中发现目标系统也会导入原系统关于索引的授权信息。虽然这些索引并没有在目标系统上创建,但是授权信息却被带到了目标库,比较疑惑!
TKPM有INDEX  TKPM62.OPB_ANAL_DEP_IDX的control权限,所以可能仅仅修改db2move.lst,只能简单的改变数据移植的某些属性,像源表上索引的授权信息好像没有像改schema这么简单。
为了安全期间,建议将那些垃圾权限清理掉。
DB2 windows版本,现在数据库表空间userspace1的容器所在的分区已满,无法向DB2中写数据;在另外一个较大的分区上建立一新的表空间,实现步骤
将当前数据库进行db2move,再将数据库进行删除,再重新建立同名的数据库,将container加大,再将数据导入
例子:
db2move gxkdb export -sn gxkdba -u gxkdba -p 123456 >gxk.log
db2move gxkdb import -io replace -u gxkdba -p 123456 >gxk.log
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
远程导出库表结构
数据库备份和还原
Linux 下的 DB2数据库的迁移
金蝶K3系统崩溃的几种数据恢复方法
RESTORE DATABASE命令还原SQLServer 2005 数据库
!!!!!镜像会话中主服务器的扩容
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服