Oracle 会话超时设置3:在用户profile文件中设置

简介: Oracle会话超时设置系列的第三篇文章,介绍在用户profile文件中设置会话的超时设置。

      Oracle数据库第三种会话超时管理的办法是在用户的profile文件中设置超时管理,这种方法有一个其它两种办法没有的好处是可以针对每个用户设置单独的超时参数,具有更好的灵活性。

1 用户profile文件

      创建用户时可以为用户指定一个profile文件,在profile文件里可以设置用户的密码策略和资源限制等,其中就包括会话的空闲超时和会话的连接时间限制。通常我们在创建用户时不会指定profile文件,这是用户适用的就是数据库默认的profile文件,名字就叫做DEFAULT。

     profile的资源限制是否生效由一个实例参数决定,这个实例参数的名字是resource_limit,这个参数的默认值如下:

SQL>select NAME,VALUE,DEFAULT_VALUE,ISSYS_MODIFIABLE, DESCRIPTION from v$parameter where name='resource_limit';NAME             VALUE DEFAULT_VALUE  ISSYS_MOD DESCRIPTION
---------------- ----- -------------- --------- ----------------------------------------resource_limit   TRUETRUE           IMMEDIATE master switch for resource limit

      可以看到这个参数的默认值是true,更改后可以立即生效。这个参数的设置对用户的资源限制和会话管理有影响,对用户的密码策略则没有影响,无论这个参数的值是什么,用户的密码策略总是生效的。

      需要考虑的另一点时,在启用用户的profile资源限制时,会对数据库的性能造成轻微的影响,这是因为在每一次连接数据库时,Oracle都要载入profile文件,执行资源策略。

2 在profile文件中执行会话空闲和连接时间限制

      在用户的profile文件中,可以设置会话的空闲超时时间。如果会话跳用之间的空闲时间超过设置时间,会话当前的事务会被回滚,会话被终结,会话占用的资源也会被释放。会话的下一个调用会收到指示它不再连接到实例的错误。这里面要注意的是,在会话空闲超时之后,Oracle的pmon后台进程会执行会话清除工作,在pmon进程完成会话清除之前,进程任然会被显示为活跃进程,并且仍然被计算到会话和用户资源限制之内。

      在用户的profile文件中,也可以设置会话的连接时间限制,如果会话的连接时间超过了限制时间,会话的当前事务被回滚,会话被丢弃,资源占用资源被释放。

      上面的这两个参数的单位都是分钟,有一点需要注意的是,这两个时间都不是精确的,Oracle不会持续监测会话的空闲时间或者是连接时间,不这么做的原因是为了节省资源,以免对性能造成过大的影响。Oracle的做法是每个几分钟进行检查,因此,会话可能会稍微超过一点设置的时间才会被判为超时,这个超过的时间有可能是几分钟。看一下数据库中这两个参数的默认设置:

SQL>select PROFILE,RESOURCE_NAME,LIMITfrom dba_profiles where PROFILE='DEFAULT'and RESOURCE_NAME in('IDLE_TIME','CONNECT_TIME')PROFILE                          RESOURCE_NAME                    LIMIT-------------------------------- -------------------------------- --------------------------------DEFAULT                          IDLE_TIME                        UNLIMITED
DEFAULT                          CONNECT_TIME                     UNLIMITED

     在数据库默认的DEFAULT profile文件中,这两个参数的默认值都是unlimited,即没有限制。

3 实验验证

     先验证一下空闲超时设置,直接更改DEFAULT profile文件中的这个参数值,在profile文件里更改的值只对更改之后的新建的会话有效,对已经登录的会话是无效的。

   

SQL>alter profile DEFAULT limit IDLE_TIME 3;Profile altered.

     更改之后新建一个会话,不执行任何操作,大约3分钟后会话,会话被终结,数据库告警日志里出现了下面的信息。

2023-02-17T15:00:12.939943+08:00KILL SESSION for sid=(110,33842):  Reason = profile limit idle_time
  Mode = KILL SOFT -/-/NO_REPLAY
  Requestor = PMON (orapid =2, ospid =1672, inst =1)  Owner = Process: USER (orapid =47, ospid =3895)  Result = ORA-0

     告警日志里显示被终结会话的sid和serial#,会话被kill的原因,请求kill这个会话的进程是pmon。

     验证完之后恢复DEFAULT profile 中这个文件的默认设置

alter profile DEFAULT limit IDLE_TIME unlimited;

     验证连接超时设置使用单独的profile,为用户创建一个单独的profile,设置会话连接超时时间,先创建一个profile文件

SQL>create profile test_connect limit CONNECT_TIME 3;   Profile created.

    创建用户profile时至少要指定一个参数,其它的参数会采用默认值,如下面看到的

SQL>select PROFILE,RESOURCE_NAME,LIMITfrom dba_profiles where PROFILE='TEST_CONNECT';PROFILE              RESOURCE_NAME                    LIMIT-------------------- -------------------------------- --------------------TEST_CONNECT         COMPOSITE_LIMIT                  DEFAULT
TEST_CONNECT         SESSIONS_PER_USER                DEFAULT
TEST_CONNECT         CPU_PER_SESSION                  DEFAULT
TEST_CONNECT         CPU_PER_CALL                     DEFAULT
TEST_CONNECT         LOGICAL_READS_PER_SESSION        DEFAULT
TEST_CONNECT         LOGICAL_READS_PER_CALL           DEFAULT
TEST_CONNECT         IDLE_TIME                        DEFAULT
TEST_CONNECT         CONNECT_TIME                     3TEST_CONNECT         PRIVATE_SGA                      DEFAULT
TEST_CONNECT         FAILED_LOGIN_ATTEMPTS            DEFAULT
TEST_CONNECT         PASSWORD_LIFE_TIME               DEFAULT
TEST_CONNECT         PASSWORD_REUSE_TIME              DEFAULT
TEST_CONNECT         PASSWORD_REUSE_MAX               DEFAULT
TEST_CONNECT         PASSWORD_VERIFY_FUNCTION         DEFAULT
TEST_CONNECT         PASSWORD_LOCK_TIME               DEFAULT
TEST_CONNECT         PASSWORD_GRACE_TIME              DEFAULT
TEST_CONNECT         INACTIVE_ACCOUNT_TIME            DEFAULT

设置测试用户的profile为这个文件

SQL>alter user test profile test_connect;User altered.

     开启一个会话

SQL>/SYSDATE
-------------------2023-02-1715:13:02SQL>/SYSDATE
-------------------2023-02-1715:13:04SQL>/select sysdate from dual
*ERROR at line 1:ORA-02399: exceeded maximum connect time, you are being logged off

 会话超时后,显示的是超过最大连接时间,会话被注销。



相关文章
|
7天前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
|
8天前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
【赵渝强老师】Oracle的控制文件与归档日志文件
|
8天前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
|
8天前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
|
8天前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的数据文件
在Oracle数据库中,数据库由多个表空间组成,每个表空间包含多个数据文件。数据文件存储实际的数据库数据。查询时,如果内存中没有所需数据,Oracle会从数据文件中读取并加载到内存。可通过SQL语句查看和管理数据文件。附有视频讲解及示例。
|
2月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
1月前
|
Oracle 关系型数据库 数据库
oracle数据恢复—Oracle数据库文件损坏导致数据库打不开的数据恢复案例
打开oracle数据库时报错,报错信息:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。急需恢复zxfg用户下的数据。 出现上述报错的原因有:控制文件损坏、数据文件损坏、数据文件与控制文件的SCN不一致等。数据恢复工程师对数据库文件做进一步检测分析后发现sysaux01.dbf文件有坏块。修复sysaux01.dbf文件,启动数据库依然有许多查询报错。export和data pump工具无法使用,查询告警日志并分析报错,确认发生上述错误的原因就是sysaux01.dbf文件损坏。由于该文件损坏,从数据库层面无法修复数据库。由于system和用户表空间的数据文件是正常的,
|
4月前
|
SQL Oracle 关系型数据库
关系型数据库Oracle设置 RMAN 环境:
【7月更文挑战第25天】
69 2
|
4月前
|
Oracle 关系型数据库 Unix
关系型数据库Oracle设置环境变量:
【7月更文挑战第22天】
544 4
|
4月前
|
SQL Oracle 关系型数据库
关系型数据库Oracle结束 RMAN 会话:
【7月更文挑战第25天】
83 1