数据泵导出导入物化视图ORA-39083和ORA-00942

0    125    1

Tags:

👉 本文共约1764个字,系统预计阅读时间或需7分钟。

前言部分

导读和注意事项

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:

① 如何使用数据泵导出和导入物化视图(重点)

② ORA-39083和ORA-00942错误解决

③ 数据泵的简单使用

④ parfile的使用

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

⑤ 数据泵生成dmp文件中的DDL语句

故障分析及解决过程

有网友问,物化视图是否能单独进行导出和导入呢?因为导出不报错,但是导入的时候报错了,报错信息如下所示:

数据泵导出导入物化视图ORA-39083和ORA-00942

网友给出的导出和导入的SQL语句如下所示:

导出和导入语句没毛病,小麦苗自己也测试了一下,的确如此,会报错的。

故障环境介绍

项目source db
db 类型
db version11.2.0.3.0
db 存储
OS版本及kernel版本

故障发生现象及报错信息

导入操作:

查看其DDL语句:

单独拿出来执行,也报错:

故障分析

非常奇怪。但是,基于SCHEMA模式导出和导入没有问题,那么可以尝试一下,然后查看其DDL语句,估计能找到一些蛛丝马迹:

基于schema进行导入:

没有问题,那么查看一下它的DDL语句呢:

果然找到一点蛛丝马迹,在创建物化视图之前,竟然创建了一张和物化视图同名的表。于是乎,测试一下:

果然如此。

由此可知,在使用数据泵导出和导入物化视图时,以下SQL并不能创建和原物化视图一样的表,因此执行时会报错:

所以解决办法就很简单了,在导出的时候,需要导出和原物化视图同名的表即可。

故障解决

导出:

导入:

可以看到,导入不报错了,但是,物化视图并没有数据。所以,还需要将物化视图的基本加上,这样才能将数据导出:

导出:

导入:

完美导出。

最后查询MOS,在MOS中搜到一篇文章,如下:

Impdp of Materialized View Results in ORA-39083 and ORA-942 (文档 ID 549843.1)

其解决方案和我的一致。

最后,再说一个内容,如果命令中的转义字符看不懂(其实:单引号、双引号、小括号 都需要进行转义),或不会写,那么可以使用parfile参数来修改

故障处理总结

  1. 使用数据泵进行导出和导入时,基于schema和数据库级别可以导出和导入物化视图。

  2. 使用数据泵单独导出和导入物化视图(include=materialized_view)时,会报ORA-39083和ORA-00942错误。

  3. 在新建一个物化视图时,会同步新建一个同名的表。所以,使用数据泵单独导出和导入物化视图(include=materialized_view)时,需要加上这些同名的表。

  4. INCLUDE进行导出和导入时只会导出和导入显式指定的数据库对象,而其依赖的对象并不会进行导出和导入。

  5. 若只导出物化视图的创建语句,则可以使用如下SQL:

若需要同步导出物化视图的创建语句及其存储的数据,则可以使用如下SQL:

  1. 同步数据可以使用如下的SQL语句:

用到的SQL集合

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部