C:\Users\Administrator>imp whjkx/whjkx@WHJ file=e:oneday.dmp full=y buffer=10240
00Import: Release 11.2.0.1.0 - Production on 星期四 3月 21 14:58:03 2013Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options经由常规路径由 EXPORT:V10.02.01 创建的导出文件警告: 这些对象由 DBU 导出, 而不是当前用户已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 DBU 的对象导入到 WHJKX
IMP-00032: SQL 语句超过缓冲区长度
IMP-00008: 导出文件中出现无法识别的语句:
R_POOL DEFAULT) TABLESPACE "DFHIS" LOGGING NOCOMPRESS, PARTITION "T0401_DATA_201
70822" VALUES LESS THAN (1503446400)  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS
255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TAB
LESPACE "DFHI...
. 正在将 DBU 的对象导入到 WHJKX
IMP-00017: 由于 ORACLE 错误 942, 以下语句失败:
 "CREATE TRIGGER "WHJKX".T0401_UPDATE"
 "AFTER UPDATE"
 "ON DBU.T0401_DATA"
 "REFERENCING OLD AS OLD NEW AS NEW"
 "FOR EACH ROW"
 "  DECLARE"
 "  p_dir       varchar2(100);"
 "  p_filename  varchar2(100);"
 "  p_cur_seq       number(10);"
 "  p_seq         number(10);"
 "  p_time      varchar2(100);"
 "  v_now_daydate  number(10);"
 "  v_last_daydate number(10);"
 "  v_period       number(10);"
 "  v_nums         number(10);"
 "  v_num_limit    number(10);"
 "  v_new_flag     boolean;"
 "  v_file_length  NUMBER(10);"
 "  v_blocksize    NUMBER(10);"
 "  v_exist     boolean;"
 "  v_old_exist boolean;"
 "  output_file utl_file.file_type;"
 "  v_content       varchar2(1024);"
 "begin"
 "  p_dir       := 'UTL_DATA';"
 "  v_now_daydate := floor(( sysdate - to_date('19700101','YYYYMMDD'))*86400)"
 ";"
 "   select c0801_last_time,c0801_period, c0801_nums,c0801_num_limit,c0801_cu"
 "r_seq into v_last_daydate,v_period,v_nums,v_num_limit,p_cur_seq from  T0801"
 "_file_trigger where c0801_table_name='T0401_DATA' and c0801_operate_name='U"
 "PDATE';"
 "  if ( v_num_limit <= 1) then"
 "      p_seq := p_cur_seq + 1 ;"
 "      update T0801_file_trigger set c0801_nums = 1,c0801_cur_seq = p_seq , c"
 "0801_last_time = v_now_daydate where c0801_table_name = 'T0401_DATA' and c0"
 "801_operate_name = 'UPDATE';"
 "      p_filename  := 'T0401U_' ||  p_seq || '.txt';"
 "      output_file := utl_file.fopen(p_dir, p_filename, 'w');"
 "      v_content := 'update t0401_data set c0401_value=' || :new.C0401_value ||
 "
 "',c0401_status=' || :new.C0401_STATUS  || ' where C0007_POINT_ID=' || :new."
 "C0007_POINT_ID  || ' and C0401_FLAG=' || :new.C0401_FLAG  || ' and C0401_da"
 "te=' || :new.C0401_date || ';';"
 "      utl_file.put_line(output_file,v_content);"
 "      utl_file.put_line(output_file,'--EOF');"
 "      utl_file.fflush(output_file);"
 "      utl_file.fclose(output_file);"
 "  else"
 "      p_filename  := 'T0401U_' ||  p_cur_seq || '.txt';"
 "  /*UTL_FILE.fgetattr(p_dir, p_filename, v_exist, v_file_length, v_blocksiz"
 "e);"
 "    8i 中没有fgetatt函数,用存储过程判断文件是否存在*/"
 "    file_is_exist(p_filename,v_exist);"
 "      if v_exist THEN"
 "              v_old_exist := TRUE;"
 "      else"
 "              v_old_exist := FALSE;"
 "      end if;"
 "      v_new_flag := FALSE;"
 "      if (v_now_daydate-v_last_daydate >= v_period) then"
 "              v_new_flag := TRUE;"
 "      else"
 "              if v_old_exist THEN"
 "                      if ( ( v_nums + 1 ) >=  v_num_limit ) then"
 "                              v_new_flag := TRUE;"
 "                      else"
 "                              v_new_flag := FALSE;"
 "                      end if;"
 "              else"
 "                      v_new_flag := TRUE;"
 "              end if;"
 "      end if;"
 "      if v_new_flag then"
 "               p_seq := p_cur_seq+1;"
 "              if v_old_exist THEN"
 "                      p_filename  := 'T0401U_' ||  p_cur_seq || '.txt';"
 "                      output_file := utl_file.fopen(p_dir, p_filename, 'a');"
 "                      utl_file.put_line(output_file,'--EOF');"
 "                      utl_file.fflush(output_file);"
 "                      utl_file.fclose(output_file);"
 "              end if;"
 "      else"
 "               p_seq  := p_cur_seq;"
 "      end if;"
 "      p_filename  := 'T0401U_' ||  p_seq || '.txt';"
 "      if v_new_flag then"
 "              output_file := utl_file.fopen(p_dir, p_filename, 'w');"
 "      else"
 "              output_file := utl_file.fopen(p_dir, p_filename, 'a');"
 "      end if;"
 "      if v_new_flag then"
 "              update T0801_file_trigger set c0801_nums = 1,c0801_cur_seq = p_s
eq , c0"
 "801_last_time = v_now_daydate where c0801_table_name = 'T0401_DATA' and c08"
 "01_operate_name = 'UPDATE';"
 "              /*"
 "              utl_file.put_line(output_file, '--BEGIN time: ' || to_char(sysda
te, 'yy"
 "yy-mm-dd HH24:MI:SS'));"
 "              */"
 "      else"
 "              update T0801_file_trigger set c0801_nums = c0801_nums + 1 ,c0801
_last_t"
 "ime = v_now_daydate  where c0801_table_name = 'T0401_DATA' and c0801_operat"
 "e_name = 'UPDATE';"
 "      end if;"
 "       v_content := 'update t0401_data set c0401_value=' || :new.C0401_value |
| "
 "',c0401_status=' || :new.C0401_STATUS  || ' where C0007_POINT_ID=' || :new."
 "C0007_POINT_ID  || ' and C0401_FLAG=' || :new.C0401_FLAG  || ' and C0401_da"
 "te=' || :new.C0401_date || ';';"
 "      utl_file.put_line(output_file,v_content);"
 "      /*"
 "      utl_file.fflush(output_file);"
 "      */"
 "      utl_file.fclose(output_file);"
 "end if;"
 "EXCEPTION"
 "  WHEN OTHERS THEN"
 "      utl_file.put_line(output_file, '--error: ' || to_char(sysdate, 'yyyy-"
 "mm-dd HH24:MI:SS'));"
 "      utl_file.fclose(output_file);"
 "    end;"
IMP-00003: 遇到 ORACLE 错误 942
ORA-00942: 表或视图不存在
成功终止导入, 但出现警告。oracle

解决方案 »

  1.   

    后面的buffer=10240啥意思  我导入的时候从不写
      

  2.   

    imp whjkx/whjkx@WHJ file=e:oneday.dmp full=y buffer=1024000
    改成 imp whjkx/whjkx@WHJ file=e:oneday.dmp full=y ignore=y  试试
      

  3.   

    把导入语句改为imp whjki/whjki@whj fromuser=dbu touser=whjki file=e:oneday.dmp buffer=640000 ignore=y;
    归其原因:是在数据导入时没有指明数据是谁导出的,也没说导到那个方案下。
      

  4.   

    1、将full=y改成formuser=xxx,touser=xxx。明确用户
    2、增加tables参数,单独导入T0401_UPDATE表,测试表创建是否成功
    3、IMP-00008: 导出文件中出现无法识别的语句。检查导出的dmp文件是否有损坏,可以的话,从新导出一份
      

  5.   

    楼上正解
    你也可以新建个DBU用户进行文件导入,这样应该没有问题
      

  6.   

    ignore=y  加个这个 忽略错误
      

  7.   

    对于不同用户之间的导入导出,首先导入的用户必须有导出的用户权限才行。另外在导入时 ,需要增加'formuser=导出用户,touser=导入用户',这是必须增加的。
      

  8.   

    楼上正解,按照schema导出的,如果导入到另外一个schema,需要显式指定
      

  9.   

    这样改了下还是不行··还有PLSQL 里面的导入功能我变成灰色的了怎么回事?不可用饿··?Microsoft C:\Users\Administrator>imp whjkx/whjkx@WHJ fromuser=dbu touser=whjkx file=e:oned
    ay.dmp buffer=640000 ignore=y;Import: Release 11.2.0.1.0 - Production on 星期四 3月 28 14:06:53 2013Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options经由常规路径由 EXPORT:V10.02.01 创建的导出文件警告: 这些对象由 DBU 导出, 而不是当前用户已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
    IMP-00032: SQL 语句超过缓冲区长度
    IMP-00008: 导出文件中出现无法识别的语句:
    ITRANS 1 MAXTRANS 255 STORAGE(INITIAL 184549376 FREELISTS 1 FREELIST GROUPS 1 BU
    FFER_POOL DEFAULT) TABLESPACE "DFHIS" LOGGING NOCOMPRESS, PARTITION "T0401_DATA_
    20121119" VALUES LESS THAN (1353369600)  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRA
    NS 255 STORAG...
    IMP-00032: SQL 语句超过缓冲区长度
    IMP-00008: 导出文件中出现无法识别的语句:
    G, PARTITION "T0401_DATA_20150310"  PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(I
    NITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "DFIN
    DEX" LOGGING, PARTITION "T0401_DATA_20150311"  PCTFREE 10 INITRANS 2 MAXTRANS 25
    5 STORAGE(INI...
    . 正在将 DBU 的对象导入到 WHJKX
    IMP-00017: 由于 ORACLE 错误 942, 以下语句失败:
     "CREATE TRIGGER "WHJKX".T0401_UPDATE"
     "AFTER UPDATE"
     "ON DBU.T0401_DATA"
     "REFERENCING OLD AS OLD NEW AS NEW"
     "FOR EACH ROW"
     "  DECLARE"
     "  p_dir       varchar2(100);"
     "  p_filename  varchar2(100);"
     "  p_cur_seq       number(10);"
     "  p_seq         number(10);"
     "  p_time      varchar2(100);"
     "  v_now_daydate  number(10);"
     "  v_last_daydate number(10);"
     "  v_period       number(10);"
     "  v_nums         number(10);"
     "  v_num_limit    number(10);"
     "  v_new_flag     boolean;"
     "  v_file_length  NUMBER(10);"
     "  v_blocksize    NUMBER(10);"
     "  v_exist     boolean;"
     "  v_old_exist boolean;"
     "  output_file utl_file.file_type;"
     "  v_content       varchar2(1024);"
     "begin"
     "  p_dir       := 'UTL_DATA';"
     "  v_now_daydate := floor(( sysdate - to_date('19700101','YYYYMMDD'))*86400)"
     ";"
     "   select c0801_last_time,c0801_period, c0801_nums,c0801_num_limit,c0801_cu"
     "r_seq into v_last_daydate,v_period,v_nums,v_num_limit,p_cur_seq from  T0801"
     "_file_trigger where c0801_table_name='T0401_DATA' and c0801_operate_name='U"
     "PDATE';"
     "  if ( v_num_limit <= 1) then"
     "      p_seq := p_cur_seq + 1 ;"
     "      update T0801_file_trigger set c0801_nums = 1,c0801_cur_seq = p_seq , c"
     "0801_last_time = v_now_daydate where c0801_table_name = 'T0401_DATA' and c0"
     "801_operate_name = 'UPDATE';"
     "      p_filename  := 'T0401U_' ||  p_seq || '.txt';"
     "      output_file := utl_file.fopen(p_dir, p_filename, 'w');"
     "      v_content := 'update t0401_data set c0401_value=' || :new.C0401_value ||
     "
     "',c0401_status=' || :new.C0401_STATUS  || ' where C0007_POINT_ID=' || :new."
     "C0007_POINT_ID  || ' and C0401_FLAG=' || :new.C0401_FLAG  || ' and C0401_da"
     "te=' || :new.C0401_date || ';';"
     "      utl_file.put_line(output_file,v_content);"
     "      utl_file.put_line(output_file,'--EOF');"
     "      utl_file.fflush(output_file);"
     "      utl_file.fclose(output_file);"
     "  else"
     "      p_filename  := 'T0401U_' ||  p_cur_seq || '.txt';"
     "  /*UTL_FILE.fgetattr(p_dir, p_filename, v_exist, v_file_length, v_blocksiz"
     "e);"
     "    8i 中没有fgetatt函数,用存储过程判断文件是否存在*/"
     "    file_is_exist(p_filename,v_exist);"
     "      if v_exist THEN"
     "              v_old_exist := TRUE;"
     "      else"
     "              v_old_exist := FALSE;"
     "      end if;"
     "      v_new_flag := FALSE;"
     "      if (v_now_daydate-v_last_daydate >= v_period) then"
     "              v_new_flag := TRUE;"
     "      else"
     "              if v_old_exist THEN"
     "                      if ( ( v_nums + 1 ) >=  v_num_limit ) then"
     "                              v_new_flag := TRUE;"
     "                      else"
     "                              v_new_flag := FALSE;"
     "                      end if;"
     "              else"
     "                      v_new_flag := TRUE;"
     "              end if;"
     "      end if;"
     "      if v_new_flag then"
     "               p_seq := p_cur_seq+1;"
     "              if v_old_exist THEN"
     "                      p_filename  := 'T0401U_' ||  p_cur_seq || '.txt';"
     "                      output_file := utl_file.fopen(p_dir, p_filename, 'a');"
     "                      utl_file.put_line(output_file,'--EOF');"
     "                      utl_file.fflush(output_file);"
     "                      utl_file.fclose(output_file);"
     "              end if;"
     "      else"
     "               p_seq  := p_cur_seq;"
     "      end if;"
     "      p_filename  := 'T0401U_' ||  p_seq || '.txt';"
     "      if v_new_flag then"
     "              output_file := utl_file.fopen(p_dir, p_filename, 'w');"
     "      else"
     "              output_file := utl_file.fopen(p_dir, p_filename, 'a');"
     "      end if;"
     "      if v_new_flag then"
     "              update T0801_file_trigger set c0801_nums = 1,c0801_cur_seq = p_s
    eq , c0"
     "801_last_time = v_now_daydate where c0801_table_name = 'T0401_DATA' and c08"
     "01_operate_name = 'UPDATE';"
     "              /*"
     "              utl_file.put_line(output_file, '--BEGIN time: ' || to_char(sysda
    te, 'yy"
     "yy-mm-dd HH24:MI:SS'));"
     "              */"
     "      else"
     "              update T0801_file_trigger set c0801_nums = c0801_nums + 1 ,c0801
    _last_t"
     "ime = v_now_daydate  where c0801_table_name = 'T0401_DATA' and c0801_operat"
     "e_name = 'UPDATE';"
     "      end if;"
     "       v_content := 'update t0401_data set c0401_value=' || :new.C0401_value |
    | "
     "',c0401_status=' || :new.C0401_STATUS  || ' where C0007_POINT_ID=' || :new."
     "C0007_POINT_ID  || ' and C0401_FLAG=' || :new.C0401_FLAG  || ' and C0401_da"
     "te=' || :new.C0401_date || ';';"
     "      utl_file.put_line(output_file,v_content);"
     "      /*"
     "      utl_file.fflush(output_file);"
     "      */"
     "      utl_file.fclose(output_file);"
     "end if;"
     "EXCEPTION"
     "  WHEN OTHERS THEN"
     "      utl_file.put_line(output_file, '--error: ' || to_char(sysdate, 'yyyy-"
     "mm-dd HH24:MI:SS'));"
     "      utl_file.fclose(output_file);"
     "    end;"
    IMP-00003: 遇到 ORACLE 错误 942
    ORA-00942: 表或视图不存在
    成功终止导入, 但出现警告。C:\Users\Administrator>
      

  10.   

    而且我的whjkx用户里面一张表都看不到····
      

  11.   

    imp whjkx/whjkx@WHJ fromuser=dbu touser=whjkx file=e:\oneday.dmp buffer=640000 ignore=y;
    不好意识那个 file=e:\oneday.dmp这里的斜杠忘加了,还不行的话增加buffer值得大小。顺便问一下你那个备份数据是几个文件(即在备份时一次性生成几个文件了)
      

  12.   

    那个文件时一个数据中性采集一天文件,并没有透入类容大小表面上110MB我刚试了用这个Microsoft Windows [版本 6.1.7601]
    版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>impdp help=yImport: Release 11.2.0.1.0 - Production on 星期四 3月 28 14:26:27 2013Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    数据泵导入实用程序提供了一种用于在 Oracle 数据库之间传输
    数据对象的机制。该实用程序可以使用以下命令进行调用:     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp您可以控制导入的运行方式。具体方法是: 在 'impdp' 命令后输入
    各种参数。要指定各参数, 请使用关键字:     格式:  impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
         示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmpUSERID 必须是命令行中的第一个参数。------------------------------------------------------------------------------以下是可用关键字和它们的说明。方括号中列出的是默认值。ATTACH
    连接到现有作业。
    例如, ATTACH=job_name。CONTENT
    指定要加载的数据。
    有效的关键字为: [ALL], DATA_ONLY 和 METADATA_ONLY。DATA_OPTIONS
    数据层选项标记。
    有效的关键字为: SKIP_CONSTRAINT_ERRORS。DIRECTORY
    用于转储文件, 日志文件和 SQL 文件的目录对象。DUMPFILE
    要从中导入的转储文件的列表 [expdat.dmp]。
    例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。ENCRYPTION_PASSWORD
    用于访问转储文件中的加密数据的口令密钥。
    对于网络导入作业无效。ESTIMATE
    计算作业估计值。
    有效的关键字为: [BLOCKS] 和 STATISTICS。EXCLUDE
    排除特定对象类型。
    例如, EXCLUDE=SCHEMA:"='HR'"。FLASHBACK_SCN
    用于重置会话快照的 SCN。FLASHBACK_TIME
    用于查找最接近的相应 SCN 值的时间。FULL
    导入源中的所有对象 [Y]。HELP
    显示帮助消息 [N]。INCLUDE
    包括特定对象类型。
    例如, INCLUDE=TABLE_DATA。JOB_NAME
    要创建的导入作业的名称。LOGFILE
    日志文件名 [import.log]。NETWORK_LINK
    源系统的远程数据库链接的名称。NOLOGFILE
    不写入日志文件 [N]。PARALLEL
    更改当前作业的活动 worker 的数量。PARFILE
    指定参数文件。PARTITION_OPTIONS
    指定应如何转换分区。
    有效的关键字为: DEPARTITION, MERGE 和 [NONE]。QUERY
    用于导入表的子集的谓词子句。
    例如, QUERY=employees:"WHERE department_id > 10"。REMAP_DATA
    指定数据转换函数。
    例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。REMAP_DATAFILE
    在所有 DDL 语句中重新定义数据文件引用。REMAP_SCHEMA
    将一个方案中的对象加载到另一个方案。REMAP_TABLE
    将表名重新映射到另一个表。
    例如, REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。REMAP_TABLESPACE
    将表空间对象重新映射到另一个表空间。REUSE_DATAFILES
    如果表空间已存在, 则将其初始化 [N]。SCHEMAS
    要导入的方案的列表。SKIP_UNUSABLE_INDEXES
    跳过设置为“索引不可用”状态的索引。SOURCE_EDITION
    用于提取元数据的版本。SQLFILE
    将所有的 SQL DDL 写入指定的文件。STATUS
    监视作业状态的频率, 其中
    默认值 [0] 表示只要有新状态可用, 就立即显示新状态。STREAMS_CONFIGURATION
    启用流元数据的加载TABLE_EXISTS_ACTION
    导入对象已存在时执行的操作。
    有效的关键字为: APPEND, REPLACE, [SKIP] 和 TRUNCATE。TABLES
    标识要导入的表的列表。
    例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。TABLESPACES
    标识要导入的表空间的列表。TARGET_EDITION
    用于加载元数据的版本。TRANSFORM
    要应用于适用对象的元数据转换。
    有效的关键字为: OID, PCTSPACE, SEGMENT_ATTRIBUTES 和 STORAGE。TRANSPORTABLE
    用于选择可传输数据移动的选项。
    有效的关键字为: ALWAYS 和 [NEVER]。
    仅在 NETWORK_LINK 模式导入操作中有效。TRANSPORT_DATAFILES
    按可传输模式导入的数据文件的列表。TRANSPORT_FULL_CHECK
    验证所有表的存储段 [N]。TRANSPORT_TABLESPACES
    要从中加载元数据的表空间的列表。
    仅在 NETWORK_LINK 模式导入操作中有效。VERSION
    要导入的对象的版本。
    有效的关键字为: [COMPATIBLE], LATEST 或任何有效的数据库版本。
    仅对 NETWORK_LINK 和 SQLFILE 有效。------------------------------------------------------------------------------下列命令在交互模式下有效。
    注: 允许使用缩写。CONTINUE_CLIENT
    返回到事件记录模式。如果处于空闲状态, 将重新启动作业。EXIT_CLIENT
    退出客户机会话并使作业保持运行状态。HELP
    汇总交互命令。KILL_JOB
    分离并删除作业。PARALLEL
    更改当前作业的活动 worker 的数量。START_JOB
    启动或恢复当前作业。
    有效的关键字为: SKIP_CURRENT。STATUS
    监视作业状态的频率, 其中
    默认值 [0] 表示只要有新状态可用, 就立即显示新状态。STOP_JOB
    按顺序关闭作业执行并退出客户机。
    有效的关键字为: IMMEDIATE。C:\Users\Administrator>impdp whjkx/whjkx directory=dump_dir dumpfile=oneday.dmp
    tablespaces=dfhisImport: Release 11.2.0.1.0 - Production on 星期四 3月 28 15:11:00 2013Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    ORA-39001: 参数值无效
    ORA-39000: 转储文件说明错误
    ORA-39143: 转储文件 "d:\dump\oneday.dmp" 可能是原始的导出转储文件C:\Users\Administrator>也不行··求大神!啊