当前位置: 首页 > 编程笔记 >

如何在Oracle中限制每个会话的数据库资源?

童冠玉
2023-03-14
本文向大家介绍如何在Oracle中限制每个会话的数据库资源?,包括了如何在Oracle中限制每个会话的数据库资源?的使用技巧和注意事项,需要的朋友参考一下

问题:

您想限制用户可以在数据库中使用的资源量。

为了限制资源,我们可以按照以下步骤操作。

我们可以使用下面的SQL语句在数据库中查看RESOURCE_LIMIT的当前设置。

选择名称,从v $parameter中的值,其中name ='resource_limit';

创建配置文件以限制资源并将其分配给用户。它不会限制CPU使用率。

示例

CREATE PROFILE test_profile LIMIT
   SESSIONS_PER_USER          2 
   CPU_PER_SESSION            UNLIMITED 
   CPU_PER_CALL               300000
   CONNECT_TIME               45 
   IDLE_TIME                  15 
   LOGICAL_READS_PER_SESSION  DEFAULT 
   LOGICAL_READS_PER_CALL     1000
   PRIVATE_SGA                15K 
   FAILED_LOGIN_ATTEMPTS      5 
   PASSWORD_LIFE_TIME         60 
   PASSWORD_GRACE_TIME        10 
   PASSWORD_LOCK_TIME         1
   PASSWORD_REUSE_TIME        10
   PASSWORD_REUSE_MAX         1 ;

输出结果

SESSIONS_PER_USER   -- Specify the number of concurrent sessions to which you want to limit the user.
CPU_PER_SESSION     -- Specify the CPU time limit for a session, expressed in hundredth of seconds.
CPU_PER_CALL        -- Specify the CPU time limit for a call (a parse, execute, or fetch), expressed in hundredths of seconds. Need to increase this or not required to mention
CONNECT_TIME        -- Specify the total elapsed time limit for a session, expressed in minutes.
IDLE_TIME           -- Specify the permitted periods of continuous inactive time during a session, expressed in minutes. Long-running queries and other operations are not subject to this limit.
LOGICAL_READS_PER_SESSION   -- Specify the permitted number of data blocks read in a session, including blocks read from memory and disk.
PRIVATE_SGA                 -- Specify the amount of private space a session can allocate in the shared pool of the system global area (SGA). Please refer to size_clause for information on that clause.
FAILED_LOGIN_ATTEMPTS       -- Specify the number of failed attempts to log in to the user account before the account is locked
PASSWORD_LIFE_TIME          -- Specify the number of days the same password can be used for authentication.
PASSWORD_GRACE_TIME         -- Specify the number of days after the grace period begins during which a warning is issued and login is allowed. If the password is not changed during the grace period, the password expires.  
PASSWORD_LOCK_TIME          -- Specify the number of days an account will be locked after the specified number of consecutive failed login attempts.  
PASSWORD_REUSE_TIME         --specifies the number of days before which a password cannot be reused.
PASSWORD_REUSE_MAX          --specifies the number of password changes required before the current password can be reused

执行时将创建test_profile。

创建配置文件后,我们现在可以将其分配给用户。在下一个示例中,为用户测试分配了test_profile:

alter user test profile test_profile;

使用Oracle数据库概要文件有两个原因,即设置资源限制和实施密码安全性设置。

创建用户时,如果未指定配置文件,则将默认配置文件分配给新创建的用户。我们可以使用ALTER PROFILE语句修改配置文件。我们可以覆盖DEFAULT配置文件以将CPU_PER_SESSION限制为360000(以百分之一秒为单位)。

alter profile default limit cpu_per_session 360000;

配置文件还用于强制执行密码安全设置,例如,说您想更改DEFAULT配置文件,以使密码使用的最大天数没有上限。下一行代码将DEFAULT配置文件的PASSWORD_LIFE_TIME设置为90天。

alter profile default limit password_life_time 90;

PASSWORD_REUSE_TIME和PASSWORD_REUSE_MAX设置必须结合使用。如果您为一个参数指定一个整数,然后为另一个参数指定UNLIMITED,则永远不能重用当前密码。

如果要指定默认配置文件密码必须在100天之内进行10次更改才能重新使用,请使用类似于以下代码的一行:

alter profile default limit password_reuse_time 100 password_reuse_max 10;
 类似资料:
  • 问题内容: 我正在使用新版本(3.0.0)。CodeIgniter的问题,我遇到了一个新问题,我的会话无法正常工作。我的意思是,控制器中的代码是正确的,因为没有错误,但是,当我尝试在视图中打印PHP变量时,什么也没有。 我在MySQL服务器中检查了我的表,什么也没有,我现在不出什么问题了。我把我的代码config.php。(我不太了解这个新版本中的很多内容) 我必须在“ make”会话中添加第一行

  • 问题内容: 如何在php和mysql中使用数据库表中的会话? 问题答案: 您将需要创建一个像这样的对象: 然后,在session_start之前,初始化此类! http://php.net/manual/zh/function.session-set-save- handler.php http://php.net/manual/zh/function.serialize.php

  • 问题内容: 我想为Eclipselink中的每个会话设置一个数据库会话变量。我要执行的SQL是这样的: 如果我尝试创建一个将执行命令的SessionEvent侦听器,我似乎会陷入无限递归中。 我是用事件侦听器以错误的方式处理问题还是需要以特殊方式执行SQL命令? 问题答案: 您正在会话上执行查询,而会话仍在为其他进程获取连接。在事件结束之前,会话将无法使用触发postConnect事件的连接,这意

  • 我正在使用PHP作为我的webservice的后端,我需要webservice能够设置一个速率限制,在过去24小时内,基于用户的PHP会话,最多1000个请求。这是不是可以做到这一点,而不使用数据库和只是速率限制,只使用PHP。我目前已经为每个会话每秒1个请求设置了速率限制器,但我希望在过去24小时内为每个会话设置1000个请求的速率限制。因为我是PHP的新手,任何帮助都会很好。 这里是我为每秒1

  • 我正在处理一个Flask项目,我正在使用Flask SQLAlchemy。 我需要处理多个已经存在的数据库。 我创建了“app”对象和SQLAlchemy对象: 在配置中,我设置了默认连接和附加绑定: 然后,我使用声明性系统创建了表模型,并在需要时设置参数以指示表位于哪个数据库中。 例如: 通过这种方式,当我在正确的数据库上进行查询时,一切都正常工作。 阅读SQLAlchemy文档和Flask S

  • 问题内容: 应用程式 我需要实现一个可供不同用户使用的Web应用程序。每个用户在各种表上都有不同的特权,例如 用户A可以从表中看到字段“名称”和“地址” 用户B可以在表格中看到字段“名称”和“电话号码”,但看不到“地址” 用户C可以查看和修改上述所有字段 我将在UI级别上进行一些操作以限制某些访问,例如,为无权修改条目的用户隐藏“编辑”按钮。但是,我认为我应该在较低级别上(也许在数据库级别上)来确