最近发现云服务器上的Oracle 11g在导出时报错,如下: ... . 正在导出后期表活动 从网上搜了半天,有很多种说法: Direct=y 不管是单独还是联合使用,都无效还是报错。 3、数据问题,我干脆不导出数据,只导出数据库结构,仍然报错,看来与数据无关。 静下来考虑了半天,看到是快照日志出错,但是我的数据库中没有建立快照啊?后来反应过来了,虽然没有快照,但是建立有物化视图(MATERIALIZED VIEW),会不会是物化视图的问题? 删除物化视图后导出,一切正常,说明还是物化视图导出导致的错误,真是个大坑啊,这些导出文件在重新导入时都要报错,备份工作算是白做了。幸好发现得早!
2015.3.18 今天某用户的数据导出又开始报上述错误了,检查了一下,发现某个物化视图采用了提交更新模式: CREATE MATERIALIZED VIEW V_INBED_BILL_CHECK_TOTAL REFRESH COMPLETE ON COMMIT AS ... 由于必须开启日志: --建立物化视图日志,将涉及的字段序列化 今天重新建立物化视图,全部采用手工更新模式,所以重建物化视图为: CREATE MATERIALIZED VIEW V_INBED_BILL_CHECK_TOTAL REFRESH ON DEMAND 在导出数据时,删除物化视图后导出仍然报错,发现没有执行原来的删除命令:
DROP MATERIALIZED VIEW LOG ON T_CHECK_BILL; 执行该命令后,报错消失。 所以正确的理解应该是: 建立物化视图过程中,如果开启了物化视图日志,导出时将会报”ORA-01455”的错误,导致导出失败。删除物化视图日志可以解决该问题。
|
|