使用数据泵迁移遇到的问题

来源:这里教程网 时间:2026-03-03 15:39:59 作者:

天做一个Oracle迁移的测试,使用expdp和impdp。导出文件大小为24G。版本为10.2.0.4。 在导入的过程中,遇到几个问题。 impdp USERNAME/PASSWORD directory=test dumpfile=test.dmp logfile=import.log parallel=20 第一个问题,因为目标的Oracle数据库是新建的,并且启动了归档模式。 但是db_recovery_file_dest_size参数没有修改,默认2G。因为不能归档,导致导入失败。 告警日志如下所示:

  1. ARCH: Archival stopped, error occurred. Will continue retrying
  2. Thu Apr 17 17:30:17 2014
  3. ORACLE Instance orcl - Archival Error
  4. Thu Apr 17 17:30:17 2014
  5. ORA-16038: log 2 sequence# 47 cannot be archived
  6. ORA-19809: limit exceeded for recovery files
  7. ORA-00312: online log 2 thread 1: '/data/dblog/redo02.log'

第二个问题,在导入索引的时候,有如下报错

  1. Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
  2. ORA-39083: Object type INDEX failed to create with error:
  3. ORA-01652: unable to extend temp segment by 8192 in tablespace USERS
  4. Failing sql is:
  5. CREATE UNIQUE INDEX \"XXX\".\"XXXX_PK\" ON \"XXX\".\"XXXX\"
网上一个大牛给了一个解释,因为导入索引,导致排序操作,在PGA里面空间不足,所以使用了临时表空间。   进行如下操作,增加临时表空间的大小并设置用户表空间自动扩展。
  1. alter  database  tempfile  '/dbdata/oracledata/mvbox/temp01.dbf'  resize 20G ;
  2. alter  database  tempfile  '/dbdata/oracledata/mvbox/temp01.dbf'  autoextend  on  next 100M ;
  3. alter  database  datafile  '/dbdata/oracledata/mvbox/users01.dbf'  autoextend  on  next 100M maxsize unlimited ;
但还是报这个错误。 后来发现, Oracle 8k的数据块单个数据文件的上限是32G,所以需要增加数据文件。
  1. alter  tablespace  users  add  datafile  '/dbdata/oracledata/mvbox/users02.dbf'  size  20G autoextend  on  next 100M maxsize unlimited ;
导入完成之后的操作 1.查看并编译失效对象     exec dbms_utility.compile_schema('MVBOX_DB'); 2.分析模式     exec dbms_stats.gather_schema_stats('MVBOX_DB'); 这种长时间的操作,还是应该使用at调度的。 因为使用ssh或者vpn连接,一旦连接断了,导入也就终止了。 另外Oracle 10G 创建用户如果没有指定临时表空间,他会使用System作为临时表空间。 在以后的版本,默认都是temp临时表空间。 创建用户 查看默认的临时表空间 使用System作为临时表空间问题很多。 经常出现如下报错
  1. ORA-03212: Temporary Segment cannot be created in locally-managed tablespace
修改用户临时表空间
  1. alter user test temporary tablespace temp;

相关推荐