oracle导入TYPE对象报错ORA-02304

Type是我们经常使用的数据库对象结构。我们在实际中,可以单独定义type类型,之后在PL/SQL代码或者数据表中使用。

在一个偶然的机会让笔者发现使用Type类型在数据exp/imp中的麻烦。当我们使用exp/imp工具进行同数据库实例(Instance)不同Schema之间数据拷贝时,如果Schema中有type类型,就会出现问题错误。

如下:

IMP-00003: 遇到 ORACLE 错误 2304

ORA-02304: 无效的对象标识符文字
IMP-00017: 由于 ORACLE 错误 2304, 以下语句失败:

 "CREATE TYPE "T_REC_TABLE" TIMESTAMP ‘2010-12-21:18:17:33‘ OID ‘D9AFD3FAE0A5"

 "4964B1684CA28C69CEED‘   as table of t_rec_test;"

 ""

 ""

IMP-00003: 遇到 ORACLE 错误 2304

ORA-02304: 无效的对象标识符文字
IMP-00017: 由于 ORACLE 错误 2304, 以下语句失败:

 "CREATE TYPE "T_TYP" TIMESTAMP ‘2012-03-07:10:47:03‘ OID ‘8E294AB7CC28493A94"

 "FF82791A376379‘   as object (id number);"

 ""

 ""

对于create type失败,可在导入命令中末尾加上 transform=OID:N

可以参考下面的说明。

大意就是说如果TRANSFORM参数设置成OID=N,表示在imp的时候,新创建的表或这个类型会赋予新的OID,而不是dmp文件中包含的OID的值。但是这个参数的默认值是OID=Y,因此在进行Imp的时候,新创建的表或者type会赋予同样的OID,如果是位于同一个数据库上的不同schema,那就会造成OID冲突的问题,因此解决这个问题也很简单,只需要在impdp的时候,显示设置transform 参数为OID=N既可以了。如下所示,

(cmd> impdp test/test directory=dump_dir dumpfile=dump.dmp logfile=dump.log remap_schema=frank:test  transform=OID:N

参考地址:http://www.shangxueba.com/jingyan/View.aspx?id=52990

http://blog.itpub.net/17203031/viewspace-732089/

感谢

时间: 2024-08-25 22:25:37

oracle导入TYPE对象报错ORA-02304的相关文章

expdp报错ora 39126

11.2.0.2,expdp报错: ORA-39126: Worker unexpected fatal error in KUPW$WORKER.GET_TABLE_DATA_OBJECTS []ORA-31642: the following SQL statement fails:BEGIN "SYS"."DBMS_CUBE_EXP".SCHEMA_CALLOUT(:1,0,1,'11.02.00.00.00'); END;ORA-06512: at &quo

Oracle启动监听报错:The listener supports no services解决

Oracle启动监听报错:The listener supports no services解决 及ora-12514 未注册上服务问题. Oracle11g服务器重启系统之后,出现了几个莫名的报错,下面是其中一个,已解决. $ lsnrctl start 报错提示: The listener supports no servicesThe command completed successfully 这样启动后远程连接会报错:oracle ORA-12514:TNS:listener does

Loadrunner参数化连接oracle、mysql数据源报错及解决办法

Loadrunner参数化连接oracle.mysql数据源报错及解决办法 (本人系统是Win7 64,  两位小伙伴因为是默认安装lr,安装在 最终参数化的时候,出现连接字符串无法自动加载出来: 最后通过安装在,问题到此解决 1.通过数据库连接参数化大量数据,电脑本地已经成功安装了数据库驱动,且本地可以配置数据源成功,在loadrunner 中配置数据源却找不到对应的数据库驱动. ----A:检查当前loadrunner工具的版本,是32位还是64位(目前还没有64位的),32位是不能安装64

eclipse 导入项目js报错问题

eclipse 导入项目js报错问题 eclipse 导入项目后会出现项目中的js文件报错(红叉),如下图所示,有时候报错的文件很多,需要集中处理. 解决办法:右键项目名称>Properties>JavaScript>Include Path,在右侧选择"Source"选项卡, 然后选择项目中的"Excluded"分支,在右侧点击"Edit",如下图所示: 在弹出的"Inclusion and Exclusion Pa

关于RN中导入第三方图片库报错:Unrecognized font family 'FontAwesome'

废话不多说,上解决方案: 1.找到Fonts文件,把它拖到Images.xcassets目录下,下面是截图- 2.设置plist文件,别犹豫,手动修改 3clean-build-run,你会发现问题消失了,因为修改了xcode里面的东西,所以一定要重启项目. 关于RN中导入第三方图片库报错:Unrecognized font family 'FontAwesome'

PyCharm导入tensorflow包报错的问题

[注]PyCharm导入tensorflow包报错的问题 若是你也遇到这个问题,说明你也没有理解tensorflow到底在哪里. 当安装了anaconda3.6后,在PyCharm中设置interpreter,这个解释器决定了你在PyCharm环境中写的代码采用什么方式去执行. 若是你的设置是anaconda下的python.exe.就会发现在PyCharm中写入import tensorflow as tf 时,就会报错,提示没有tensorflow模块,这是因为anaconda文件下的pyt

AndroidStudio导入Eclipse项目报错Error:Could not determine the class-path for interface com.android.builder.model.AndroidProject

AndroidStudio导入Eclipse项目报错 Error:Could not determine the class-path for interface com.android.builder.model.AndroidProject 错误原因: Gradle插件版本不一致导致,问题多出现在:eclipse项目转studio 解决步骤: https://blog.csdn.net/qq_21397217/article/details/65630730 原文地址:https://www

Oracle数据库导入dmp文件报错处理方法

在向oracle数据库执行导入命令的时候报错,错误如下,大概意思是TNS中找不到服务名 下面说一下解决步骤 1:进入oracle用户,使用cat查看.bash_profile文件,找到ORACLE_HOME变量 2:进入ORACLE_HOME/network/admin目录 3:查看tnsnames.ora监听文件,找到对应的监听名称,比如下面的导入语句,即可执行成功 [[email protected] admin]$ impdp efoas/[email protected]ENFOCOG

在cmd下使用imp命令导入oracle的dmp文件报错ORA-02304

报错信息如下: IMP-00017: 由于 ORACLE 错误 2304, 以下语句失败: "CREATE TYPE "EN_CONCAT_IM" TIMESTAMP '2018-04-09:16:01:30' OID '27A29B9B634" "1AD1EE050FD0AD4021A7C' " " " " " " AUTHID CURRENT_USER AS OBJECT" &quo