安全地删除数据库用户

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号
友情链接: 企业网站建设公司 网站制作报价 企业网站建设 营销型网站建设 手机网站建设套餐 成都网站建设 LED网站设计方案 成都网站建设公司 企业网站设计 重庆企业网站建设 定制网站制作 成都商城网站建设 商城网站建设 营销网站建设 宜宾网站设计 高端网站设计 成都定制网站建设 定制级高端网站建设 成都网站建设公司 网站建设公司 温江网站设计 成都网站制作