2

在 oracle 11G 中,我想永久删除用户,即不应该保留该用户的任何痕迹,并且我不应该收到这样的“现有对象”错误 - 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
4

2 回答 2

11

你没有说你登录的用户是什么用户,但我会假设它是 SYS 或具有几乎神一样特权的人。

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

CREATE TABLE products.cars(brand varchar2(25), model varchar2(25));

从您之前的尝试来看,汽车表可能仍然存在于当前模式中。您可以通过以下方式判断它是否存在于任何地方:

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

附带说明一下,将所有权限授予普通用户并不是一个好主意,但我认为这是用于测试程序。此外,最好使用VARCHAR2而不是VARCHAR.

于 2012-08-15T02:48:35.937 回答
-1

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

drop user USERNAME cascade;

文档

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

于 2012-08-15T00:28:17.710 回答