温馨提示×

Oracle在Ubuntu上的资源限制如何设置

小樊
55
2025-10-06 06:15:48
栏目: 云计算

Oracle在Ubuntu上的资源限制设置步骤

1. 修改系统内核参数(/etc/sysctl.conf)

内核参数决定了系统对内存、进程、网络等资源的管理策略,需根据Oracle数据库的需求调整。使用sudo vim /etc/sysctl.conf编辑文件,添加或修改以下关键参数:

  • 共享内存设置kernel.shmmax(单个共享内存段的最大大小,建议设为物理内存的80%,如4GB内存设为3147483648)、kernel.shmmni(系统共享内存段的最大数量,设为4096)、kernel.shmall(系统共享内存总页数,设为2097152,即kernel.shmmax/4096)。
  • 信号量设置kernel.sem(信号量参数,格式为SEMMSL SEMMNS SEMOPM SEMMNI,建议设为250 32000 100 128,分别表示每个信号量集合的最大信号量数、系统最大信号量总数、每次semop调用最多操作的信号量数、系统最大信号量集合数)。
  • 文件描述符设置fs.file-max(系统最大文件描述符数,设为65536,满足Oracle大量文件操作需求)。
  • 端口范围设置net.ipv4.ip_local_port_range(本地端口范围,设为9000 65500,避免与系统或其他应用冲突)。
  • TCP参数优化net.ipv4.tcp_tw_reuse(允许快速回收TIME-WAIT状态的TCP连接,设为1)、net.core.somaxconn(系统允许的最大连接队列长度,设为4096)。

修改完成后,执行sudo sysctl -p使参数立即生效。

2. 设置Oracle用户资源限制(/etc/security/limits.conf)

该文件用于限制Oracle用户的进程、文件描述符等资源使用,避免单个用户过度消耗系统资源。使用sudo vim /etc/security/limits.conf编辑文件,添加以下针对oracle用户的限制:

  • 进程数限制oracle soft nproc 2048(软限制,用户可临时突破的最大进程数)、oracle hard nproc 16384(硬限制,系统允许的最大进程数,需root权限修改)。
  • 文件描述符限制oracle soft nofile 1024(软限制,用户可打开的最大文件数)、oracle hard nofile 65536(硬限制,系统允许的最大文件数)。

这些限制需与/etc/sysctl.conf中的fs.file-max参数配合,确保系统整体资源充足。

3. 配置Oracle用户环境变量(/etc/profile.d/oracle.sh)

通过用户环境变量进一步规范Oracle运行时的资源分配,使用sudo vim /etc/profile.d/oracle.sh创建或编辑脚本,添加以下内容:

export ORACLE_BASE=/u01/app/oracle  # Oracle基目录(需根据实际安装路径调整)
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1  # Oracle Home目录(根据版本调整)
export ORACLE_SID=orcl  # 数据库实例名(默认orcl,可根据需求修改)
export DB_MEMORY=2G  # 数据库SGA/PGA总内存(根据服务器内存调整,如4GB内存设为3G)
export DB_CPU_TARGET=2  # 数据库CPU目标(单位:CPU核心数,根据服务器核心数调整)

保存后,执行source /etc/profile.d/oracle.sh使环境变量立即生效,或让用户重新登录自动加载。

4. 验证资源限制是否生效

  • 验证内核参数:执行sysctl -a | grep shmmax(检查共享内存大小)、sysctl -a | grep file-max(检查最大文件描述符数),确认参数已修改为预期值。
  • 验证用户限制:切换到oracle用户(su - oracle),执行ulimit -u(查看进程数软限制)、ulimit -n(查看文件描述符软限制),确认数值与/etc/security/limits.conf中设置一致。
  • 验证Oracle进程:执行ps -ef | grep ora_pmon(查看Oracle进程状态),确认数据库实例正常运行,无资源耗尽导致的进程崩溃。

5. 可选:Docker环境下的资源限制(–shm-size参数)

若通过Docker安装Oracle(如zerda/oracle-database镜像),可通过--shm-size参数设置共享内存大小(如--shm-size 1g),避免容器内共享内存不足导致数据库启动失败。示例命令:

docker run -d --name exeed-db -p 1521:1521 -p 8080:8080 --shm-size 1g --restart always -e ORACLE_PWD=yourpassword -v exeed-db:/u01/app/oracle/oradata zerda/oracle-database:11.2.0.2-xe

该参数需根据容器内Oracle实例的内存需求调整,确保共享内存足够支持数据库运行。

以上步骤覆盖了Oracle在Ubuntu上的主要资源限制设置,需根据实际服务器配置(内存、CPU核心数)和Oracle版本(如10g、11g、19c)调整参数值,确保数据库稳定运行。

0