暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle Expdb views_as_tables在重新创建视图、错误或功能后失败?

ASKTOM 2019-02-13
587

问题描述

这让我很合适。

我正在运行12.2.0.1,没有维护。


在下面的测试用例中,我创建了一个视图TEST_VIEW,其中三列a,B,C返回一行。从视图中选择和导出视图都按预期工作。

然后,我使用相同的名称重新创建视图,但只有两列A,B (删除C。)Select按预期工作,返回两列,但导出失败,抱怨从视图中删除的列C!


(我真正的导出问题在我无权访问的主机上运行,因此我无法查看数据库日志,只是让我挠头了为什么事情不起作用!)

(请注意expdp的views_as_tables parm。)




SQL> 连接john/ Connected。
SQL> 创建视图test_view as从dual中选择1 a,1 b,1 c;
视图创建。
SQL> 从test_view中选择 *;
A B C
----------
1
SQL> 退出
断开与Oracle数据库12c企业版版本12.2.0.1.0-64位生产


C:\ 用户 \ 约翰洛> expdp约翰/目录 = 数据 _ 泵 _ dir转储文件 = x视图 _ as _ 表 = 测试 _ 视图重复使用 _ 转储文件 = y
出口: 发布12.2.0.1.0-周三生产2月13日10:44:23 2019
版权所有 (c) 1982、2017、Oracle和/或其附属公司。保留所有权利。
连接到: 甲骨文数据库12c企业版12.2.0.1.0-64位生产
开始 “约翰”。“系统 _ 导出 _ 表 _ 01”: 约翰/******** 目录 = 数据 _ 泵 _ dir转储文件 = x视图 _ 表 = 测试 _ 视图重复使用 _ 转储文件 = y
处理对象类型TABLE_EXPORT/VIEWS_AS_TABLES/TABLE_DATA
处理对象类型TABLE_EXPORT/VIEWS_AS_TABLES/TABLE
。。导出 "JOHN"."TEST_VIEW" 5.898 KB 1行
主表 “约翰”。“SYS_EXPORT_TABLE_01” 成功加载/卸载
*
为JOHN.SYS_EXPORT_TABLE_01设置的转储文件是:
D:\ ORACLE \ ADMIN \ ORCL \ DPDUMP \ X.DMP
作业 “约翰”。“系统导出表 _ 01” 在星期三成功完成,2月13日10:44:28 2019经过0 00:00:04


C:\ 用户 \ 约翰洛> sqlplus约翰/
SQL * Plus: 发布12.2.0.1.0星期三生产2月13日10:44:51 2019
版权所有 (c) 1982,2016,Oracle.保留所有权利。
上次成功登录时间: 周三2019年2月13日10:44:23 -05:00
连接到:
甲骨文数据库12c企业版版本12.2.0.1.0-64位生产
SQL> 创建或替换视图test_view,因为从dual中选择1 a,1 b;
视图创建。
SQL> 从test_view中选择 *;
A B
---------- ----------
1 1
SQL> 退出
断开与Oracle数据库12c企业版版本12.2.0.1.0-64位生产
C:\ 用户 \ 约翰洛> expdp约翰/目录 = 数据 _ 泵 _ dir转储文件 = x视图 _ as _ 表 = 测试 _ 视图重复使用 _ 转储文件 = y
出口: 发布12.2.0.1.0-周三生产2月13日10:45:53 2019
版权所有 (c) 1982、2017、Oracle和/或其附属公司。保留所有权利。
连接到: 甲骨文数据库12c企业版12.2.0.1.0-64位生产
开始 “约翰”。“系统 _ 导出 _ 表 _ 01”: 约翰/******** 目录 = 数据 _ 泵 _ dir转储文件 = x视图 _ 表 = 测试 _ 视图重复使用 _ 转储文件 = y
处理对象类型TABLE_EXPORT/VIEWS_AS_TABLES/TABLE_DATA
处理对象类型TABLE_EXPORT/VIEWS_AS_TABLES/TABLE
ORA-31693: 表数据对象 “JOHN”。“TEST_VIEW” 加载/卸载失败,由于错误而被跳过:
ORA-00904: "C": 无效标识符
主表 “约翰”。“SYS_EXPORT_TABLE_01” 成功加载/卸载
*
为JOHN.SYS_EXPORT_TABLE_01设置的转储文件是:
D:\ ORACLE \ ADMIN \ ORCL \ DPDUMP \ X.DMP
作业 “约翰”。“SYS_EXPORT_TABLE_01” 在星期三完成,2月13日1个错误,10:45:58 2019个经过0个00:00:04

专家解答

是的,对我来说,这看起来像一只虫子。

我们要留下一个物体

SQL> select object_name , object_id from obj
  2  where created > sysdate - 1;

OBJECT_NAME                               OBJECT_ID
---------------------------------------- ----------
TEST_VIEW                                    159666 <====
KU$VAT_159666 <===                           159769


放下那张表,你的第二次出口就可以了。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论