安全地删除数据库用户

SET SERVEROUT ON

成都创新互联公司专业为企业提供四方台网站建设、四方台做网站、四方台网站设计、四方台网站制作等企业网站建设、网页设计与制作、四方台企业网站模板建站服务,十多年四方台做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

CREATE OR REPLACE PROCEDURE gracefullyDropUser(v_username IN VARCHAR2) IS
l_cnt integer;
sqlStmt VARCHAR2(1000);
BEGIN
sqlStmt := 'alter user ' || v_username || ' account lock'; --锁住用户,防止其他新会话的连接
EXECUTE IMMEDIATE sqlStmt;
dbms_output.put_line(sqlStmt);
FOR x IN (SELECT * FROM v$session WHERE username = v_username) LOOP
sqlStmt := 'alter system disconnect session ''' || x.sid || ',' ||
x.serial# || ''' IMMEDIATE'; --循环disconnect每一个已存的session连接,并等待所有session被删除
EXECUTE IMMEDIATE sqlStmt;
dbms_output.put_line(sqlStmt);
END LOOP;

-- Wait until all sessions are disconnected forcely, check every 2 seconds
LOOP
SELECT COUNT(*) INTO l_cnt FROM v$session WHERE username = v_username;
EXIT WHEN l_cnt = 0;
dbms_lock.sleep(2);
dbms_output.put_line('hold on ...');
END LOOP;
sqlStmt := 'drop user ' || v_username || ' cascade'; --安全地删除数据库用户
EXECUTE IMMEDIATE sqlStmt;
dbms_output.put_line(sqlStmt);
END gracefullyDropUser;
/

execute gracefullyDropUser('AGILE');
alter user AGILE account lock
alter system disconnect session '12,97' IMMEDIATE
alter system disconnect session '20,11' IMMEDIATE
alter system disconnect session '141,118' IMMEDIATE
hold on ...
hold on ...
drop user AGILE cascade

PL/SQL procedure successfully completed.


网站栏目:安全地删除数据库用户
转载注明:http://bzwzjz.com/article/pejgpo.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 温江网站设计 成都网站制作 手机网站制作 成都企业网站设计 四川成都网站建设 成都网站制作 成都网站建设 成都网站建设 专业网站设计 网站建设推广 成都网站设计 成都网站建设流程 商城网站建设 成都品牌网站设计 广安网站设计 成都网站设计 上市集团网站建设 企业网站建设公司 营销型网站建设 品牌网站建设 成都网站制作 企业网站设计