如何迁移IQ15中IQ_SYSTEM_MAIN中的用户表

3040阅读 0评论2013-01-15 lion_sybiq_127
分类:Sybase

     从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脚本

 

上一篇:使用dbisql工具连接IQ Server的方法和注意事项
下一篇:SAP HANA数据库安装