Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1570306
  • 博文数量: 201
  • 博客积分: 2812
  • 博客等级: 少校
  • 技术积分: 3029
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-18 18:28
个人简介

从事数据库工作多年,目前看好分布式NeSQL/HTAP数据库在企业客户市场的发展。未来的主要方向是——致力于 NewSQL/HTAP 数据库的推广普及。

文章存档

2016年(1)

2015年(8)

2014年(23)

2013年(50)

2012年(32)

2011年(87)

分类: Sybase

2013-01-15 10:23:59

     从IQ 15开始,IQ_SYSTEM_MAIN dbspace做为系统保留使用,SAP Sybase建议用户不要在这个dbsapce上创建用户数据库对象(表、索引等)。有时用户虽然知道这个建议,但是在实践中由于疏忽原因忘记进行相关设置导致应用表创建在IQ_SYSTEM_MAIN上,在后续运行时发现IQ_SYSTEM_MAIN空间使用率较高时才发现。
    本文将向大家介绍建立在IQ_SYSTEM_MAIN dbspace上的用户表迁移到其它dbspace的方法。

    1. 迁移方法介绍

    可以使用如下语句进行表的迁移:
        ALTER TABLE username.tablename MOVE TO new_dbspacename; 
        注意:在执行这样的语句时会占用较大的机器资源(比如I/O和CPUs)并且对移动的表加表锁,最好在系统不忙的时 
    候进行。
 

    2. 如果表较多是,可以生成脚本
    如果在IQ_SYSTEM_MAIN有比较多的用户表,那么使用手工输入命令的方式很繁琐。下面介绍一种方法可以生成相应的sql脚本完成这一工作:

    (1)  编写生成alter table move语句的shell脚本

#gen_tab_move.sh
echo "select 'alter table ' || creator||'.'||tname || ' move to $1 ' || ';' from syscatalog where dbspacename='IQ_SYSTEM_MAIN' and
tabletype in ('TABLE');" > work.sql
echo "output to table_move_$1.sql format ascii delimited by '\t' quote '';" >>work.sql

dbisql -c "uid=DBA;pwd=sql" -nogui work.sql  

   

    (2)  执行执行上面的gen_tab_move.sh

    执行gen_tab_move.sh,成功后将生成包含多个表alter table move语句的sql脚本,脚本的名称为table_move_destdbspacename.sql 。例如:

     sh gen_tab_move.sh IQ_USER_MAIN    #IQ_USER_MAN为目标dbspace名称

  

   (3) 执行生成的sql脚本

 

阅读(2869) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~