Dropping connected users in Oracle database

后端 未结 12 1774
执念已碎
执念已碎 2020-12-12 21:49

I want to drop some users in Oracle DB using sqlplus but I am getting error:

SQL> DROP USER test CASCADE;
DROP USER test CASCADE
*
ERROR at line 1:
ORA-01         


        
12条回答
  •  情话喂你
    2020-12-12 22:37

    Issue has been fixed using below procedure :

    DECLARE
      v_user_exists NUMBER;
      user_name CONSTANT varchar2(20) := 'SCOTT';
    BEGIN
      LOOP
        FOR c IN (SELECT s.sid, s.serial# FROM v$session s WHERE upper(s.username) = user_name)
        LOOP
          EXECUTE IMMEDIATE
            'alter system kill session ''' || c.sid || ',' || c.serial# || ''' IMMEDIATE';
        END LOOP;
        BEGIN
          EXECUTE IMMEDIATE 'drop user ' || user_name || ' cascade';
          EXCEPTION WHEN OTHERS THEN
          IF (SQLCODE = -1940) THEN
            NULL;
          ELSE
            RAISE;
          END IF;
        END;
        BEGIN
          SELECT COUNT(*) INTO v_user_exists FROM dba_users WHERE username = user_name;
          EXIT WHEN v_user_exists = 0;
        END;
      END LOOP;
    END;
    /
    

提交回复
热议问题