Skip to content

管理策略

数据库会话会消耗数据库相应的资源,对于会话的申请、使用、释放,都需要相应的管理策略,以便有效的管理数据库会话资源。数据库会话的管理包括配置参数管理、会话变量的管理以及相应的资源清除策略,可灵活管理数据库会话资源,实现数据库会话的安全使用。

配置内容配置参数默认值限定范围配置说明
侦听端口listen_port5138操作系统未占用的TCP端口用于控制数据库会话端口,结合操作系统防火墙进行安全控制
最大闲置时间(单位:秒)max_idle_time3600[0, 86400]用于控制会话连接空闲时长,超过空闲时长时,连接断开
会话建立最大失败次数conn_fail_cnt3[2, 100]建立数据库会话,密钥验证最大失败次数,超过配置阈值时,登录账户锁定5分钟
用户默认可用连接数session_per_user1000[1, 10000]单一用户默认可以创建的数据库会话连接最大值
系统最大连接数max_conn_num1000[1, 10000]数据库内整个系统默认可以创建的数据库会话连接最大值
最大活动事务连接数max_act_conn_num0[0, 1024]数据库内同时允许的最大活动事务连接数,用于限制活动事务量,防止资源被占满

查看/设置数据库会话变量命令

  • 查看数据库连接会话属性命令

    sql
    SQL> SHOW {会话变量};
  • 修改数据库连接会话属性命令

    sql
    SQL> SET {会话变量} TO {值};

相关系统包

数据库会话操作管理依赖系统管理员操作包DBMS_DBA,此系统包主要用于辅助管理员进行系统维护操作,如:数据库会话、数据库事务的维护。通过管理员操作包可以针对一些导致系统资源消耗较大的操作、存在安全风险的SQL操作行为进行系统维护或终止。DBMS_DBA系统包的介绍与使用请参见《系统包参考》的DBMS_DBA章节。

接口/方法参数名称参数类型参数解释接口功能
KILL_TRANS
  • NODEID
  • TRANID
  • INTEGER
  • 事务所在的节点编号
  • 全局唯一的事务号
  • 终止事务的运行
    KILL_SESSION
  • NODEID
  • SESSID
  • INTEGER
  • 会话所在的节点编号
  • 节点内唯一的数据库连接会话号
  • 终止数据库连接会话
    KILL_SESSION_TRANS
  • NODEID
  • SESSID
  • INTEGER
  • 会话所在的节点编号
  • 节点内唯一的数据库连接会话号
  • 终止会话上的事务

    说明:

    终止数据库会话会导致会话上正在执行的所有操作都一并中断,属于较为重的操作。一般情况建议用户尽量采用小而轻的维护操作,仅针对单一事务或SQL操作进行维护。

    示例

    • 查看当前数据库连接会话时区
      sql
      SQL> SHOW DEF_TIMEZONE;
      DEF_TIMEZONE |
      ------------------------------------------------------------------------------
      GMT+08:00|
    • 查看当前数据库连接会话自动提交属性
      sql
      SQL> SHOW AUTO_COMMIT
      
      AUTO_COMMIT |
      ------------------------------------------------------------------------------
      T |
    • 设置当前数据库连接会话默认时区属性为GMT+00:00
      sql
      SQL> SET DEF_TIMEZONE TO 'GMT+00:00';
      
      Execute successful.Use time:1 ms.
      
      SQL> SHOW DEF_TIMEZONE
      
      DEF_TIMEZONE |
      ------------------------------------------------------------------------------
      GMT+00:00|
    • 查看数据库连接会话信息
      sql
      SQL> SELECT nodeid,session_id,ip,user_name,db_name,start_t,status,curr_tid,auto_commit,trans_start_t FROM sys_sessions;
      
      NODEID | SESSION_ID | IP | USER_NAME | DB_NAME | START_T | STATUS | CURR_TID | AUTO_COMMIT | TRANS_START_T |
      ------------------------------------------------------------------------------
      1 | 230493 | 127.0.0.1| SYSDBA| SYSTEM| 2015-05-13 17:26:52.000 AD | 114 | 717722 | T | 2022-05-13 17:46:23.000 AD |
      1 | 230494 | 127.0.0.1| SYSDBA| SYSTEM| 2015-05-13 17:44:29.000 AD | 112 | 717719 | F | 2022-05-13 17:45:35.000 AD |
      1 | 230495 | 127.0.0.1| SYSDBA| SYSTEM| 2015-05-13 17:44:47.000 AD | 112 | 717720 | F | 2022-05-13 17:45:46.000 AD |
      
      Total 3 records.
      
      Use time:0 ms.
    • 使用DBMS_DBA.KILL_TRANS接口终止数据库连接会话正在执行的事务
      sql
      SQL> EXEC DBMS_DBA.KILL_TRANS(1,717720);