天做一个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。因为不能归档,导致导入失败。
告警日志如下所示:
- ARCH: Archival stopped, error occurred. Will continue retrying
- Thu Apr 17 17:30:17 2014
- ORACLE Instance orcl - Archival Error
- Thu Apr 17 17:30:17 2014
- ORA-16038: log 2 sequence# 47 cannot be archived
- ORA-19809: limit exceeded for recovery files
- ORA-00312: online log 2 thread 1: '/data/dblog/redo02.log'
第二个问题,在导入索引的时候,有如下报错
进行如下操作,增加临时表空间的大小并设置用户表空间自动扩展。
后来发现,
Oracle 8k的数据块单个数据文件的上限是32G,所以需要增加数据文件。
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作为临时表空间问题很多。
经常出现如下报错