在数据库管理中,会出现限制某个IP访问数据库的连接数或某个用户访问数据库的连接数的需求。
对于用户访问数据库的连接数限制,我们可以从数据库的profile上着手,使用profile的特性实现该需求。
对于IP访问数据库的连接数限制,从数据库上可以使用logon on database触发器来实现。
每一次新会话登录,都将IP记录在vrsession的client_info中,然后count出所有符合条件的会话数目,如果超过了,就直接断开会话连接。
但这个会话连接数据库如果限制了,也只能对非dba角色的用户生效。dba用户只会在alert.log中写一个警告信息而已。
(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1705838
)
实现该功能的触发器代码如下:
create or replace trigger logon_audit
after logon on database
declare
/**********************************************************************************
NAME: logon_audit
PURPOSE: 限制某个IP到数据库实例的连接数。如果超过限制会出错或报警
NOTES: 1、使用sys提交到数据库
2、使用logon on database触发器实现
**********************************************************************************/
/*按照规划,定义number,string,date三种类型变量名称*/
i_sessions number;
i_sessions_limited number := 30;
str_userip varchar2(15) := '192.168.15.148';
except_ip_limited exception;
begin
dbms_application_info.set_client_info(sys_context('userenv',
'ip_address'));
select count(*)
into i_sessions
from v$session
where client_info = str_userip;
if (i_sessions > i_sessions_limited) then
raise except_ip_limited;
end if;
exception
when except_ip_limited then
raise_application_error(-20003, 'ip:' || str_userip || ' 连接数受限!');
end logon_audit;
分享到:
相关推荐
同时,根据系统负载和网络环境,调整监听器的资源使用,如最大连接数,以优化性能。 以上是配置Oracle监听器的基本流程。实际操作中,可能会涉及更多复杂的配置,如SSL加密、负载均衡、多实例配置等。了解并熟练...
2. **用户限制调整**:在 `/etc/security/limits.conf` 文件中,针对Oracle用户(这里是`oracle`)调整了`nproc`(最大进程数)和`nofile`(最大文件描述符数)的限制,这是为了满足Oracle数据库运行时对资源的需求...
6. **设置系统参数**:调整操作系统参数,如内存限制、最大文件句柄数等,以适应 Oracle 的运行需求。 **四、Oracle Grid Infrastructure 安装** Oracle Grid Infrastructure (GI) 是 RAC 的基础,包含 OCR、...
### arcsde修改连接数及配置知识点 #### 一、arcsde简介 ArcSDE是ESRI公司开发的一款用于管理空间数据的企业级解决方案。...通过以上步骤可以有效地解决因连接数限制引起的问题,并提高系统的可用性和稳定性。
- **配置HOSTS**:在`/etc/hosts`文件中添加所有网络节点的主机名和IP映射,以便于网络通信和数据库连接。 4. **编辑.bash_profile文件** 编辑`oracle`用户的`~/.bash_profile`文件,添加必要的环境变量,如`...
为了防止由于连接数达到上限而导致的ora-12520错误,可以通过调整`processes`和`sessions`参数来提高并发连接能力。这通常需要在每个实例的`spfile`文件中进行修改: - **增加processes参数**:根据实际需求适当...
- 设置用户级别的资源限制,如最大文件大小、打开文件的最大数量等,这对于Oracle数据库的稳定运行至关重要。 **1.9 配置用户环境变量** - 配置必要的环境变量,如`ORACLE_HOME`、`PATH`等,以确保Oracle软件能够在...
编辑`/etc/sysctl.conf`文件,设置与Oracle数据库性能密切相关的内核参数,如`file-max`(系统最大文件数)、`aio-max-nr`(异步I/O请求的最大数量)、`shm*`(共享内存相关参数)和`net.ipv4.ip_local_port_range`...
5. **系统资源限制**:如系统内存不足、文件句柄数限制等也可能导致监听器无法正常启动。 #### 二、解决步骤详解 针对以上问题原因,我们可以采取以下步骤逐一排查并解决问题: ### 1. 检查`listener.ora`配置...
例如,增加`nproc`(最大进程数)和`nofile`(最大打开文件数),这将允许Oracle数据库运行时使用更多的系统资源。此外,还需要在`/etc/pam.d/login`文件中添加设置以应用这些限制。 4. **调整内核参数**: 修改`/etc/...
3. 配置/etc/sysctl.conf文件:调整内核参数,如TCP/IP连接数、内存限制等,以优化Oracle性能。 4. 创建用户及目录:创建专门的Oracle用户和组,为Oracle软件和数据创建适当的目录结构。 5. 配置/etc/security/...
在`/etc/security/limits.conf`文件中,增加关于进程和打开文件数的限制,以适应Oracle的运行环境。 完成上述步骤后,您可以开始下载并运行Oracle的安装程序。在安装过程中,按照提示进行配置,包括数据库类型选择...
在`/etc/security/limits.conf`文件中,增加对Oracle用户的软硬限制,如nproc(进程数)和nofile(文件描述符数)。这将确保Oracle能够处理大量并发连接和文件操作。添加如下内容: ``` oracle soft nproc 2047 ...
编辑`/etc/security/limits.conf`文件,为Oracle用户设置资源限制,比如最大进程数和打开文件数: ``` oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 ...
1. **TCP/IP参数**:调整最大连接数等参数,通过编辑`/etc/inet/inetd.conf`和`/etc/inet/tcpip`文件。 2. **DNS解析配置**:确保/etc/hosts文件中包含所有节点的正确解析记录。 ### 创建文件系统和目录 1. **创建/...
- 目前为止,Oracle SQL Plus本身不直接支持查询服务器的IP地址。但是可以通过查询操作系统级别的信息来间接获取。 - 如果需要查询服务器的IP地址,可以考虑在SQL Plus外部使用操作系统命令(如Linux下的`ifconfig`...
在/etc/profile文件中,为Oracle用户设置适当的限制,如最大进程数和打开文件数。这有助于防止因资源不足导致的错误。 在安装Oracle数据库之前,需要创建特定的用户和组。这里创建了"dba"和"oinstall"两个组,然后...
此外,还需要修改`/etc/security/limits.conf`以限制Oracle用户可以打开的文件描述符数量和进程数,以及`/etc/pam.d/login`以应用这些限制。 创建Oracle特定的用户和组,如`oinstall`、`dba`和`oper`,然后创建一个...
修改/etc/security/limits.conf,设置内存限制、文件打开数限制等,以满足Oracle的需求。 三、安装Grid Infrastructure 首先,要在所有节点上安装Grid Infrastructure,包括Clusterware和ASM。这一步涉及配置OCR和...