• 删除oracle数据库用户


      手工删除ORACLE数据库用户时常会出现会话进程仍在使用导致删除失败的情况。需要查询会话并将会话删除才能成功将数据库用户删除,比较不方便。

    适用场景

      自动删除oracle数据库用户

    基本知识

      oracle字符串拼接符(||)及单引号使用的2种方式。

      1、select 'lion'||','||'tester' from dual; #output: lion,tester

      2、SELECT 'ALTER SYSTEM KILL SESSION '''||t.sid ||','||t.SERIAL#||''' IMMEDIATE;' FROM V$SESSION t; # 使用两个连续的单引号表示字符串中一个单引号

      3、SELECT 'ALTER SYSTEM KILL SESSION '||chr(39)||t.sid ||','||t.SERIAL#||chr(39)||' IMMEDIATE;' FROM V$SESSION; #chr(39)表示单引号

      shell组合语句执行(左大括号右边有空格,最后一条命令结束需要带分号;)

      1、[ -f /etc/passwd ] && { printf "File exist. ";exit;}

    设计思路

      1、判断传入待删除的用户是否存在于数据库中,如果不存在,退出脚本。如果存在,执行下一步。

      2、锁定待删除用户,拒绝新的外部连接的访问。

      3、循环查找当前用户中是否有未断开的会话,如果有,获取SID,SERIAL#,然后kill掉。

      4、删除数据库用户。根据成功或者失败返回相应提示。

    使用方法

      1、下载代码:drop_db.sh,上传到ORACLE用户任意目录下。

      2、执行chmod + x drop_db.sh赋予脚本可执行权限。

      3、执行drop_user.sh [dbname1] [dbname2] .. [dbnameN],删除数据库用户。

  • 相关阅读:
    JDBC五数据源和数据池(web基础学习笔记十一)
    JDBC四(web基础学习笔记十)
    JDBC三(web基础学习笔记九)
    JDBC二查询(web基础学习笔记八)
    JDBC一(web基础学习笔记七)
    HTML二(基本标签)
    Java从零开始学八(循环结构)
    如何合理地估算线程池大小?(转载)
    Java 8 Documentation Download
    Redis集群
  • 原文地址:https://www.cnblogs.com/linyfeng/p/7538339.html
Copyright © 2020-2023  润新知