MySQL转换成Oracle后,导入oracle数据库报错ORA-00955: 名称已由现有对象使用?

在网上查了下报错信息,原因是表名重复。
我新建了一个Oracle数据库,只执行此表名的建表sql语句,还是报错,说明不是SQL语句中重复建表,应该是跟Oracle数据库中某个名重复。
使用 select * from tab; 查看所有表,发现没有与表重名的表。
因为我这个SQL文件是从MySQL数据库转换过来的(使用的是SQLdeveloper 4.2),所有数据已经设置好,无法通过改动表名来解决报错。
将转换好的SQL文件导入到Oracle数据库后,所有表均已导入,没有缺失。
后改为使用 CREATE TABLE or replace +表名 报错 ORA-00903: 表名无效
附上建表的SQL语句片段。

CREATE TABLE   "SYSTEM"."AQ$_INTERNET_AGENTS" 
   (    "AGENT_NAME" VARCHAR2(30 BYTE), 
    "PROTOCOL" NUMBER(*,0), 
    "SPARE1" VARCHAR2(128 BYTE)
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;
  

顺便还想问一下,CREATE TABLE "SYSTEM"."AQ$_INTERNET_AGENTS" 中 "SYSTEM"."AQ$_INTERNET_AGENTS"的具体含义

阅读 5.4k
1 个回答

问题已解决。

错误原因:我在将MySQL的sql文件转换到Oracle数据库时,Oracle数据库的ower是system用户,此用户自带AQ$_INTERNET_AGENTS表,此表与创建的表明重复。

解决办法:在转换到Oracle数据库时,应使用新创建的用户,并赋予系统权限。这样新用户下没有AQ$_INTERNET_AGENTS表,就不会产生重复报错了。

反思:谨记,在转换数据库文件时,不能轻易使用数据库自带的系统账户,需自己新创建用户,否则会很麻烦。

另: CREATE TABLE "SYSTEM"."AQ$_INTERNET_AGENTS" 的意思是创建SYSTEM用户下的AQ$_INTERNET_AGENTS表

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题