今天小麦苗给大家分享的是数据泵导出导入物化视图(ORA-39083)。
数据泵导出导入物化视图(ORA-39083)
有网友问,物化视图是否能单独进行导出和导入呢?因为导出不报错,但是导入的时候报错了,报错信息如下所示:
网友给出的导出和导入的SQL语句如下所示:
expdp system/oracle dumpfile=dumpdir:mview.dmp schemas=scott include=materialized_view
impdp system/oracle dumpfile=dumpdir:mview.dmp
导出和导入语句没毛病,小麦苗自己也测试了一下,的确如此,会报错的。
1.4 故障处理总结
1、使用数据泵进行导出和导入时,基于schema和数据库级别可以导出和导入物化视图。
2、使用数据泵单独导出和导入物化视图(include=materialized_view)时,会报ORA-39083和ORA-00942错误。
3、在新建一个物化视图时,会同步新建一个同名的表。所以,使用数据泵单独导出和导入物化视图(include=materialized_view)时,需要加上这些同名的表。
4、INCLUDE进行导出和导入时只会导出和导入显式指定的数据库对象,而其依赖的对象并不会进行导出和导入。
5、若只导出物化视图的创建语句,则可以使用如下SQL:
expdp system/lhr dumpfile=mview4.dmp schemas=lhr include=TABLE:\"IN \(\'TEST_MV_LHR\'\)\",materialized_view:\"IN \(\'TEST_MV_LHR\'\)\"
impdp system/lhr dumpfile=mview4.dmp
若需要同步导出物化视图的创建语句及其存储的数据,则可以使用如下SQL:
expdp system/lhr dumpfile=mview5.dmp schemas=lhr include=TABLE:\"IN \(\'TEST_MV_LHR\',\'TEST_MV\'\)\",materialized_view:\"IN \(\'TEST_MV_LHR\'\)\"
impdp system/lhr dumpfile=mview4.dmp
exec dbms_mview.refresh('TEST_MV_LHR','C');
6、同步数据可以使用如下的SQL语句:
exec dbms_mview.refresh('TEST_MV_LHR','C');
parfile的使用:
[oracle@OCPLHR ~]$ cat par_lhr.par
include=TABLE:"IN ('TEST_MV_LHR','TEST_MV')",materialized_view:"IN ('TEST_MV_LHR')"
[oracle@OCPLHR ~]$ expdp system/lhr dumpfile=mview6.dmp schemas=lhr parfile=par_lhr.par
注意:本文内容太多,公众号有字数限制,全文可以参考http://blog.itpub.net/26736162/viewspace-2155381