创建表时 ORA-00955: 名称已由现有对象使用

转自:https://www.cnblogs.com/zjfjava/p/9070795.html

如下,在执行创建表语句时报错如下:

执行下面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的内存结构以及执行计划、控制信息等等。

原文地址:https://www.cnblogs.com/sharpest/p/11096457.html