Oracle使用imp命令导入.dmp文件遇到的几个问题

命令语句为 imp 用户名/密码@实例名  file=d:\data\x.dmp log=d:\data\x.log full=y ignore=y;
其中:file 表示待导入的dmp文件位置;
      log 指定导入过程log的记录文件位置,注意,即使指定了将记录保存到log文件里,屏幕打印也不会关闭;
      full 表示将dmp全部内容导入;
      ignore 表示忽略表创建过程中的错误,比如表名已存在时将直接覆盖原来表的内容;
其余的参数,如指定buffer等,这里不再赘述,以下主要讲我导入时遇到的两个非参数问题。

问题一:屏幕不停打印  ORA-12899: value too large for column MER_ADDR_NAME (actual: 54, maximum: 40),
        其原因是字符集差异,中文在UTF-8里占3个字节,ZHS16GBK里占2个字节,此处的解决方法为修改oracle字符编码方式:
        
  1. SQL>conn / as sysdba  
  2. SQL>shutdown immediate  
  3. SQL>STARTUP MOUNT  
  4. SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION  
  5. SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0  
  6. SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0  
  7. SQL>ALTER DATABASE OPEN  
  8. SQL>ALTER DATABASE CHARACTER SET ZHS16GBK  
  9. SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK  
  10. SQL>SHUTDOWN IMMEDIATE  
  11. SQL>STARTUP  

问题二:屏幕打印“IMP-00003: 遇到 ORACLE 错误 959 ORA-00959: 表空间 'TS-S' 不存在”,说明新的数据库中不存在源数据库的表空间,这里可以根据屏幕打印的log中大串的SQL语句中找到TABLESPACE名,然后手动创建这些表空间。

你可能感兴趣的:(oracle数据库)