代码之家  ›  专栏  ›  技术社区  ›  Ran Biron

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

  •  3
  • Ran Biron  · 技术社区  · 15 年前

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

    如何删除此用户?我想尽一切办法来逃避,但没有任何帮助。

    编辑:澄清-我知道如何删除用户。我很难克服这个特殊人物的问题。

    4 回复  |  直到 11 年前
        1
  •  2
  •   Alex Poole    13 年前

    似乎您可以使用动态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
    
        2
  •  4
  •   Tony Andrews    15 年前

    你试过用双引号括起来吗?例如

    drop user ":my_schema";
    

    当你这样做的时候,这个案子很重要-是“:myschema”还是“:myschema”或者介于两者之间的东西?

        3
  •  1
  •   Ran Biron    13 年前

    我没能做到这一点,只能从备份中恢复。

        4
  •  0
  •   Justin Gregoire    15 年前

    您可以使用:

    drop user :my_schema;
    

    drop user :my_schema cascade;
    

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

    drop table x cascade constraints; etc. 
    

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