删除用户名中带单引号的oracle用户

时间:2009-07-22 14:49:05

标签: oracle oracle9i

通过一个错误的脚本,我在Oracle 9i系统上创建了一个用户名围绕用户名(即他的用户名是'用户名',而不是用户名)的用户。现在我想删除该用户。既不是“DROP USER'用户名'”也不是“DROP USER \'username \'”,也不是“DROP USER(SELECT username from all_users where user_id = 123)”。我该如何摆脱那个用户?

7 个答案:

答案 0 :(得分:4)

create user "'bla'" identified by bla;

drop user "'bla'";

答案 1 :(得分:2)

根据Oracle's Documentation ...

  

“引用的标识符开始和结束   用双引号(“)。如果   使用a命名模式对象   引用标识符,然后你必须使用   每当双引号   你指的是那个对象。“

所以这......

DROP USER "username" CASCADE;

答案 2 :(得分:2)

我知道这是一篇旧帖子,但是对于因此问题搜索而遇到困扰的任何人 - 问题似乎是数据库触发器在drop用户上触发。 我发布了我为Oracle XE找到的解决方案(对于其他10g版本可能也是如此) here

希望有人觉得这很有用,

麦克

答案 3 :(得分:1)

尝试DROP USER "'username'"DROP USER ''username''。 (注意那些最后的引号都是单引号)

答案 4 :(得分:0)

我不知道甲骨文,但你可以尝试用双引号括起来吗?

(如果错误,我会删除这个答案)

答案 5 :(得分:0)

以下代码可能会对您有所帮助:

declare 

   sel_username varchar2(30); 
   r_user_id    varchar2(30); 
   r_username   varchar2(30); 
   user_cmd     varchar2(200); 

BEGIN
/* 
   This procedure will delete a single user_id and can be used to delete a user 
   with none displayable characters in the name 

   **Replace** the user_id  in this script to that you want to delete !! 

   Author: Ulrich Henkenjohann  -  March 2010 / tested on ORACLE 10.2.0.4 

*/      
-- select the username for a special user_id. Ther username may contain none displayed characters

   select username into sel_username from dba_users where user_id = 34; 
   select user_id, username into r_user_id , r_username from dba_users where username = sel_username ; 
   DBMS_OUTPUT.PUT_LINE('Selected user: ' || r_user_id || ' ' || r_username); 

-- If a test is needed, an alter passwort command may be usefull 
-- user_cmd := 'ALTER USER "' || r_username || '" IDENTIFIED BY PASSWORDX '; 

-- Drop the selected user 

   user_cmd := 'DROP USER "' || r_username || '" CASCADE '; 
   DBMS_OUTPUT.PUT_LINE('Executing user_cmd: ' || user_cmd ); 
   execute immediate user_cmd ; 

END;
/

答案 6 :(得分:0)

再次提供更好的格式:

declare 

   sel_username varchar2(30); 

   r_user_id    varchar2(30); 

   r_username   varchar2(30); 

   user_cmd     varchar2(200); 

BEGIN

/* 

   This procedure will delete a single userid and can be used to delete a user 
   with none displayable characters in the name 

   **Replace the user_id  in this script !!** 

   Author: Ulrich Henkenjohann  -  March 2010 / tested on ORACLE 10.2.0.4 

*/      
-- select the username for a special user_id. Ther username may contain none displayed characters

   select username into sel_username from dba_users where user_id = 34; 

   select user_id, username into r_user_id , r_username from dba_users where username = sel_username ; 

   DBMS_OUTPUT.PUT_LINE('Selected user: ' || r_user_id || ' ' || r_username); 

-- If a test is needed, an alter passwort command may be usefull 

-- user_cmd := 'ALTER USER "' || r_username || '" IDENTIFIED BY PASSWORDX '; 

-- Drop the selected user 

   user_cmd := 'DROP USER "' || r_username || '" CASCADE '; 

   DBMS_OUTPUT.PUT_LINE('Executing user_cmd: ' || user_cmd ); 

   execute immediate user_cmd ; 

END;
/