创建表时 ORA-00955: 名称已由现有对象使用
Posted 雪山上的蒲公英
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建表时 ORA-00955: 名称已由现有对象使用相关的知识,希望对你有一定的参考价值。
如下,在执行创建表语句时报错如下:
执行下面sql查询
select a.OBJECT_type,a.* from all_objects a where upper(a.OBJECT_NAME) =\'USER_SF_INFO\';
发现有一个视图和该表重名了,解决方法是修改名称,或删掉重复的对象
附:如果查询对象时没有找到,则在dba账户下执行下面的语句刷新一下共享池(未进行到此步,无法验证准确性)
alter system flush shared_pool;
共享池:
oracle会将用户提交来的SQL语句都缓存在内存中。每次处理新的一条SQL语句时都会先在内存中查看是否有相同的SQL语句,如果相同则可以减少最重要的解析工作(也就是生成执行计划),从而节省了大量的资源;反之如果没有找到相同的SQL语句,则必须重新从头到尾进行完整的解析过程,这部分存放SQL语句的内存就叫做共享池( shared pool)。当然shared pool里不仅仅是SQL语句,还包括管理shared pool的内存结构以及执行计划、控制信息等等。
以上是关于创建表时 ORA-00955: 名称已由现有对象使用的主要内容,如果未能解决你的问题,请参考以下文章
Oracle:ORA-00955: name is already used by an existing object