如何删除以冒号(:)开头的oracle用户

如何删除以冒号(:)开头的oracle用户,oracle,special-characters,Oracle,Special Characters,我使用过impdp,但有一个输入错误-现在我有了一个以冒号(:)开头的用户名-例如:my_schema 如何删除此用户?我想尽一切办法逃避它,但毫无帮助 编辑:澄清-我知道如何删除用户。我很难克服特殊字符问题。您是否尝试用双引号将其括起来?e、 g drop user ":my_schema"; 执行此操作时,案例很重要-是“:myschema”还是“:myschema”或介于两者之间的内容?您可以使用: drop user :my_schema; 或 如果用户在其他表中有约束,则不会删除这

我使用过impdp,但有一个输入错误-现在我有了一个以冒号(:)开头的用户名-例如:my_schema

如何删除此用户?我想尽一切办法逃避它,但毫无帮助


编辑:澄清-我知道如何删除用户。我很难克服特殊字符问题。

您是否尝试用双引号将其括起来?e、 g

drop user ":my_schema";
执行此操作时,案例很重要-是“:myschema”还是“:myschema”或介于两者之间的内容?

您可以使用:

drop user :my_schema;

如果用户在其他表中有约束,则不会删除这些约束

drop table x cascade constraints; etc. 

唯一的问题是你失去了一切,不得不重新开始。如果数据库中有脚本,则只需重新运行脚本即可重新加载。

我从未尝试过这样做,必须从备份中恢复。

似乎您可以使用动态SQL执行此操作:

begin
    execute immediate 'create user ":MY_SCHEMA" identified by xxx';
end;
/

PL/SQL procedure successfully completed.

select username, account_status from dba_users where username = ':MY_SCHEMA';

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
:MY_SCHEMA                     OPEN

begin
    execute immediate 'drop user ":MY_SCHEMA"';
end;
/

PL/SQL procedure successfully completed.

select username, account_status from dba_users where username = ':MY_SCHEMA';

no rows selected

我知道如何删除一个用户——一开始我的冒号有问题——这是一个特殊的问题char@Ran我明白了,我会继续努力找到解决问题的办法。如果我遇到任何问题,我一定会发布它。这对我解决了一个类似的问题,即删除名称中带有特殊字符的过程。@Jeff-在这种情况下,您只需要将名称用双引号括起来(),但用静态SQL;这里的动态部分专门用于用户名。这是可行的,但对于带有引号的标识符的过程或其他对象来说有点过分了。这对我来说也没什么意义,但这种动力起了作用,我很感激能找到一些有用的东西。我的过程有连字符,以问号字符结束。(我用结尾“可以删除”重命名了它,但我不能删除它。讽刺的是!)
begin
    execute immediate 'create user ":MY_SCHEMA" identified by xxx';
end;
/

PL/SQL procedure successfully completed.

select username, account_status from dba_users where username = ':MY_SCHEMA';

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
:MY_SCHEMA                     OPEN

begin
    execute immediate 'drop user ":MY_SCHEMA"';
end;
/

PL/SQL procedure successfully completed.

select username, account_status from dba_users where username = ':MY_SCHEMA';

no rows selected