Oracle11g ORA-00955:名称已被现有对象使用

Oracle11g ORA-00955:名称已被现有对象使用,oracle11g,Oracle11g,在Oracle11g中,我想永久删除一个用户,即不应保留该用户的任何痕迹,也不应出现类似这样的“现有对象”错误-ORA-00955:当我尝试使用其表重新创建该用户时,现有对象已经使用了名称 请帮我做这个。 谢谢 编辑- 用于创建具有表和列的用户的命令 CREATE USER Products identified by discounted GRANT ALL PRIVILEGES TO Products CREATE TABLE Cars(Brand varchar(25),Model var

在Oracle11g中,我想永久删除一个用户,即不应保留该用户的任何痕迹,也不应出现类似这样的“现有对象”错误-ORA-00955:当我尝试使用其表重新创建该用户时,现有对象已经使用了名称

请帮我做这个。 谢谢

编辑-

用于创建具有表和列的用户的命令

CREATE USER Products identified by discounted
GRANT ALL PRIVILEGES TO Products
CREATE TABLE Cars(Brand varchar(25),Model varchar(25))
然后是,, 用于完全删除用户并完全重新创建用户的命令

DROP USER PRODUCTS CASCADE
CREATE USER Products identified by discounted
GRANT ALL PRIVILEGES TO Products
CREATE TABLE Cars(Brand varchar(25),Model varchar(25))
导致异常-

java.sql.SQLSyntaxErrorException: ORA-00955: name is already used by an existing object

你的问题太笼统了。根据我的理解,如果您使用以下脚本,您可以删除用户创建的所有对象-

drop user USERNAME cascade;


若要成功执行此操作,您不应该为该用户打开连接。

您没有说明您登录的用户,但我假设是SYS或具有类似于上帝的权限的人

在最后一行中,您正在当前模式中创建表
CARS
,而不是在产品模式中。您可能想要的是:

CREATE TABLE products.cars(brand varchar2(25), model varchar2(25));
cars表可能仍然存在于您上次尝试的当前架构中。您可以通过以下内容判断它是否存在:

SELECT owner, object_name, object_type FROM all_objects WHERE object_name = 'CARS';

作为补充说明,将所有权限授予普通用户并不是一个好主意,但我假设这是用于测试过程的。此外,最好使用
VARCHAR2
而不是
VARCHAR

这是一个很难回答的问题吗?到目前为止你试过什么?创建用户或创建表时是否出现错误?@eaolson-我在尝试创建包含列的表时出现此错误。您使用什么命令删除用户、重新创建用户和创建表?执行此操作时,您连接的用户是什么?@eaolson-请参考我现在所做的编辑。这不起作用。我的DB似乎到处都是死物,这让我的生活很痛苦。任何其他数据库都不会发生这种情况:(Oracle看起来很奇怪。谢谢,这解决了问题。然后,又出现了另一个问题。表中没有行。再次,表的完全限定名解决了问题。再次感谢!顺便说一句,为什么varchar2比varchar更受欢迎?它主要是历史性的。varchar2是用于可变长度字符stri的Oracle数据类型VARCHAR目前是VARCHAR2的同义词,但在未来的版本中不能保证这一点。