如果你的用户下表不多的话,在sqlplus下先运行select * from tab;
然后记下每一个表名;
desc your_tb1;
把字段长度及类型定义贴(Ctrl+c)出来,
加入到create table your_tb1 ... (Ctrl+v) 主键等;
可把多个表的create语句写入此文本文件中(用*.sql保存后直接用);如果表很多的话,用exp,imp算了。

解决方案 »

  1.   

    exp移植很容易出字符集不兼容的问题
      

  2.   

    1 set nls_lang=simplified chinese_china.zhs16gbk (windows)
      export nls_lang=simplified chinese_china.zhs16gbk (linux)2 exp userid=username/password file=filename.dmp
    或 exp userid=username/password file=filename.dmp rows=no indexs=no (不导出数据和索引)
    3 set nls_lang=simplified chinese_china.zhs16gbk (windows)
      export nls_lang=simplified chinese_china.zhs16gbk (linux)4 imp  userid=username/password file=filename.dmp (先建立用户)
    或 imp userid=username/password file=filename.dmp rows=no indexs=no (不倒入数据和索引)字符集不对(1-852) 错误 可用set nls_lang=simplified chinese_china.zhs16gbk (windows)来解决,如还报错,用set nls_lang=simplified chinese_china.zhs16cgb231280 (windows)
    以上操作,全取决于你的数据库字符集是zhs16gbk 或zhs16cgb231280
    如是其他字符集,需查资料,并且数据可能会有丢失,但表结构应该没问题,除非你用中文表名
      

  3.   

    可以跨实例来访问,
    create table aaa as 
    (select * from bbb@"访问remote实例的连接名" where 1=2)
    即可。
      

  4.   

    字符集在注册表中HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0的NLS_LANG中,
    比如为AMERICAN_AMERICA.WE8ISO8859P1,zhs16gbk 等好几十种。
    把原来要导出的字符集记下,再在新系统中设置相同就不可能出现乱码现象。
      

  5.   

    我win2000上的NLS_LANG已经是chinese_china.zhs16gbk 是不是我linux上的oracle字符集不对?
      

  6.   

    看字符集
    linux上用 echo $NLS_LANG
    window上用 set NLS_LANG  或 echo '%NLS_LANG%'