一、服务器基线
1. 环境与软硬件规范
1.1. 运行环境
序号 | 名称 | 规范 | 备注 |
1 | 高可用模式 | 数据库集群 | |
2 | 数据库集群方式 | ORACLE RAC | |
3 | RAC存储管理方式 | ORACLE ASM | |
4 | 操作系统 | Linux | 64bit |
1.2. 软件版本
序号 | 运行环境名称 | 运行环境统一规范 | 备注 |
1 | ORACLE GI初始版本 | GRID 11.2.0.4.0 | 按年度动态更新 |
2 | ORACLE GI PSU | PSU 11.2.0.4.10 | 按年度动态更新 |
3 | ORACLE DATABASE初始版本 | DATABASE 11.2.0.4.0 | 按年度动态更新 |
4 | ORACLE DATABASE PSU | PSU 11.2.0.4.10 | 按年度动态更新 |
5 | 操作系统初始版本 | RHEL 6.8 | 按年度动态更新 |
1.3. ASM磁盘组
序号 | 磁盘组名称 | 用途 | 冗余方式 | RAID类型 | 建议设置 |
1 | +DATA01 | 存放业务数据 | 外部冗余 | RAID 5 | 按资源分配的方式单为依据来划分大小 |
2 | +ARCH | 存放归档日志 | 外部冗余 | RAID 5 | 初始空间1000G,后期根据备份策略动态调整。 |
3 | +OCR_VOTE | 存放VOTING DISK和OCR | 标准冗余 | RAID 1+0 | 配置3块或以上大小相同的磁盘,建议大小为10GB |
4 | +REDO_LOG | 存放在线日志 | 外部冗余 | RAID 1+0 | 建议磁盘大小为10GB,日志分组见6.5小节 |
2. 操作系统安装规范
2.1. 字符集
统一采用英文界面安装,以保证采用英文作为操作系统缺省的语言环境。同时,在安装附加语言支持时,选择简体中文。
2.2. 时区
(1)时区选择东八区:Shanghai,Asia;
(2)系统时钟不使用 UTC(世界协调时间);若有特殊要求,可根据实际需求调整。
3. 操作系统配置规范
3.1. 系统服务
序号 | 服务名称 | 服务说明 | 建议 |
1 | ip6tables | ipv6包过滤软件防火墙服务 | 关闭 |
2 | iptables | 包过滤软件防火墙服务 | 关闭 |
3 | sshd | ssh远程服务 | 开启 |
4 | NTP | 时间服务器 | 开启 |
5 | Bluetooth | 蓝牙服务 | 关闭 |
6 | postfix | 电子邮件服务 | 关闭 |
7 | cups | cups打印机服务 | 关闭 |
8 | cpuspeed | cpu速率调整服务 | 关闭 |
9 | NetworkManager | 网络自动管理服务 | 关闭 |
10 | vsftpd | ftp服务 | 关闭 |
11 | dhcpd | dhcp服务 | 关闭 |
12 | nfs | 网络文件共享服务 | 关闭 |
13 | nfslock | nfs锁机制服务 | 关闭 |
14 | ypbind | nis客户端服务 | 关闭 |
3.2. SELinux
SELinux 全称 Security Enhanced Linux,因当前生产环境采用了硬件防火墙,建议关闭SELinux安全策略,以免降低性能。
3.3. 透明大页
透明大页(Transparent HugePages )在RAC环境下会导致性能问题,ORACLE官方不建议使用。
3.4. NTP配置
配置NTP服务时注意启用-x微调模式选项。
3.5. 多路径软件配置
(1)多路径软件和存储连接要求最少两条链路,设置为负载均衡模式。
(2)建议优先选用存储厂商提供的多路径软件。若使用操作系统自带的multipath配置存储多路径,按下面的规范进行配置:
3.6. 系统内核参数
序号 | 参数名 | 参数说明 | 建议值 |
1 | kernel.shmmni | 共享内存段的最大数量 | 4096 |
2 | kernel.shmall | 控制共享内存页数 | 根据计算公式进行调整,物理内存*0.7*1024*1024KB/4KB |
3 | kernel.shmmax | 单个共享内存段的最大值 | 根据计算公式进行调整,物理内存*0.7*1024*1024*1024 |
4 | kernel.sem | 每个进程通讯需要的信号灯 | 250 32000 100 128 |
5 | fs.file-max | 同时打开的文件数目 | 6815744 |
6 | fs.aio-max-nr | 同时可以拥有的的异步IO请求数目 | 1048576 |
7 | net.core.rmem_default | 接收套接字缓冲区默认大小 | 262144 |
8 | net.core.rmem_max | 接收套接字缓冲区最大值 | 4194304 |
9 | net.core.wmem_default | 发送套接字缓冲区默认大小 | 262144 |
10 | net.core.wmem_max | 发送套接字缓冲区最大值 | 1048576 |
11 | net.ipv4.ip_local_port_range | 端口的范围 | 9000 65500 |
12 | net.ipv4.ipfrag_high_thresh | IP分片汇聚的最大内存用量 | 4194304 |
13 | net.ipv4.ipfrag_low_thresh | 用于IP分片汇聚的最小内存用量 | 3145728 |
14 | vm.min_free_kbytes | 系统虚拟内存最低保留的大小 | 512000 |
15 | vm.vfs_cache_pressure | 内核回收用于directory和inode cache内存的倾向 | 200 |
16 | vm.swappiness | 控制系统将内存交换到SWAP积极性 | 20 |
17 | vm.nr_hugepages | 启用大页管理,该参数指明了内存页数 | DB_SGA+ASM_SGA+1GB/Hugepagesize |
3.7. SHELL配置
编辑limits.conf文件,设置grid和oracle用户的资源限制,并把pam_limits.so加入启动文件中以确保配置生效。
# vi /etc/pam.d/login #编辑login文件,加入以下内容
session required pam_limits.so
4. ORACLE数据库配置规范
4.1. 表空间配置规范
序号 | 名称 | 建议初始大小 | 数据文件存放位置 |
1 | SYSTEM表空间 | 30G | +DATA01 |
2 | SYSAUX表空间 | 60G | +DATA01 |
3 | UNDOTBS1表空间 | 120G | +DATA01 |
4 | UNDOTBS2表空间 | 120G | +DATA01 |
5 | TEMP表空间 | >=60G | +DATA01 |
6 | 业务表空间 | +DATA01 |
4.2. 数据文件管理规范
UNDO、TEMP表空间中的文件,必须关闭自动扩展;业务表空间,建议关闭自动扩展。
4.3. ASM实例参数调整
Oracle11g默认asm实例的SGA大小为272M,在实际生产过程中,经常会由于磁盘组的增加导致ASM实例提示4031错误。因此建议增加ASM实例的SGA大小。
序号 | 参数名称 | 参数说明 | 建议值 |
1 | ASM实例SGA_TARGET | 设置ASM实例SGA目标值 | Oracle11g默认asm实例的SGA大小为272M,修改为4G 两个节点分别操作(+ASM1根据实际名称修改) export ORACLE_SID=+ASM1 sqlplus /as asmdba alter system set sga_max_size = 4096M scope=spfile; |
4.4. 数据库参数调整
序号 | 参数名称 | 参数说明 | 建议值 |
1 | SGA_TARGET | SGA设置目标值 | 初始值建议为:(总物理内存* 0.7) * 0.8,后续需要定期分析系统做适应性调整 |
2 | PGA_AGGREGATE_TARGET | PGA设置目标值 | (总物理内存* 0.7) * 0.2,后续需要定期分析系统做适应性调整 |
3 | SGA_MAX_SIZE | SGA设置最大值 | 初始值建议为:(总物理内存* 0.7) * 0.8,后续需要定期分析系统做适应性调整 |
4 | DB_CACHE_SIZE | 数据库缓存大小 | 建议设置一个最小值,初始为SGA的50%左右,具体值需要根据物理内存大小、SGA大小而确定,后续需要定期分析系统做适应性调整 |
5 | SHARED_POOL_SIZE | 共享池大小 | 建议设置一个最小值,初始为SGA的25%左右,具体值需要根据物理内存大小、SGA大小而确定,后续需要定期分析系统做适应性调整 |
6 | MEMORY_TARGET | AMM管理设置内存大小 | 建议值0(11G及以后版本) |
7 | SESSION_CACHED_CURSOR | 会话缓存游标 | 建议初始300,具体需要根据系统特性而确定,后续需要定期分析系统做适应性调整 |
8 | LOG_BUFFER | 日志缓存 | 建议初始200MB,后续需要定期分析系统做适应性调整 |
9 | AUTO_SPACE_ADVISOR | 自动空间审计维护任务 | 建议停用该自动维护任务 |
10 | _GC_UNDO_AFFINITY | 关闭DRM特性 | 建议值FALSE |
11 | _GC_POLICT_TIME | 关闭DRM特性 | 建议值0 |
12 | PARALLEL_FORCE_LOCAL | 并行跨实例查询 | 建议值TRUE |
13 | OPEN_CURSORS | 每个会话允许最大游标 | 建议初始500,后续需要定期分析系统做适应性调整 |
14 | PROCESSES | 用户进程 | 建议初始5000,具体需要根据系统特性而确定,后续需要定期分析系统做适应性调整 |
15 | DB_FILES | 最大允许数据文件 | 建议2000以上(初始为200) |
16 | UNDO_RETENTION | 保留过期undo段 的时间 | 建议初始10800(3小时),注意undo表空间要足够大(初始最少120GB以上),后续需要定期分析系统做适应性调整 |
17 | _OPTIMIZER_EXTENDED_CURSOR_SHARING | 关闭ACS特性 | 建议值NONE,规避ACS功能可能引起的BUG |
18 | _OPTIMIZER_EXTENDED_CURSOR_SHARING_REL | 关闭ACS特性 | 建议值NONE,规避ACS功能可能引起的BUG |
19 | _SERIAL_DIRECT_READ | 关闭直接路径读 | 建议值NEVER,关闭11G的这个新特性 |
20 | RECYCLEBIN | 回收站 | 建议关闭 |
21 | AWR的SNAP_INTERVAL | 采集快照间隔时间 | 建设值30分钟 |
22 | LOG_ARCHIVE_DEST_1 | 归档路径 | +ARCH |
23 | LARGE_POOL_SIZE | 大池大小 | 建议设置为256M |
24 | AUDIT_TRAIL | 审计痕迹 | 建议值NONE |
4.5. Redo log配置规范
序号 | 指标名称 | 建议值 |
1 | redo日志组个数 | 每个实例12组以上,具体需要根据系统特性而确定,后续需要定期分析系统做适应性调整 |
2 | redo日志成员文件大小 | 每组大小1GB,具体需要根据系统特性而确定,后续需要定期分析系统做适应性调整 |
4.6. 控制文件参数调整
序号 | 指标名称 | 建议值 |
1 | 控制文件个数 | 最少2个,最多3个,一个分布DATA01磁盘组,一个分布于OCR磁盘组。 |
4.7. 监听器端口调整
为安全起见,监听器端口不使用默认端口1521,按国网端口规范要求统一使用非缺省端口11521。
4.8. Oracle用户与密码过期调整
Oracle 11g版本中对用户密码过期等默认参数有了修改,从原来的UNLIMITED修改为有效期180天,考虑到业务系统实际情况,为避免影响业务生产,建议禁用密码过期设置,需要将以下参数进行修改。
alter profile default limit password_life_time unlimited; |
4.9. 密码错误10次锁定调整
用户登录数据库失败次数,默认10次,建议设置unlimited。
alter profile default limit failed_login_attempts unlimited; |
5. 安全基线配置
5.1. SNMP服务配置
检查是否安装snmp服务,如果未安装snmp服务,则认为合规,否则需要修改public默认团体字。
vi /etc/snmp/snmpd.conf com2sec notConfigUser default public 修改为 com2sec notConfigUser default strongpass |
5.2. 禁用ctrl+alt+del组合键
vi /etc/inittab 注释如下行ca::ctrlaltdel:/sbin/shutdown***,之后重启系统。 |
5.3. 锁定用户
使用usermod –L锁定以下用户:
adm,lp,mail,uucp,operator,games,gopher,ftp,nobody,nobody4,noaccess,listen,webservd,rpm,dbus,avahi,mailnull,smmsp,nscd,vcsa,rpc,rpcuser,nfs,sshd,pcap,ntp,haldaemon,distcache,apache,webalizer,squid,xfs,gdm,sabayon,named
vi /etc/shadow bin,daemon,adm,lp,sync,shutdown,halt,mail,uucp,operator,games,gopher,ftp,nobody,nfsnobody密码列的*改为!! |
5.4. 配置账户认证失败次数限制
vi /etc/pam.d/system-auth-ac 修改成以下内容: #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account required pam_permit.so password requisite pam_cracklib.so ucredit=-1 lcredit=-1 dcredit=-1 try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5 password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so auth required pam_tally.so deny=5 unlock_time=600 no_lock_time |
5.5. 配置SSH方式账户认证失败次数限制
vi /etc/pam.d/sshd 修改成以下内容: #%PAM-1.0 auth required pam_sepermit.so auth include password-auth auth required pam_tally.so deny=5 unlock_time=600 no_lock_time account required pam_nologin.so account include password-auth account required pam_tally.so password include password-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open env_params session optional pam_keyinit.so force revoke session include password-auth |
5.6. 配置记录用户对设备的操作(pacct)
chkconfig psacct on service psacct start touch /var/log/pacct accton /var/log/pacct |
5.7. 配置安全事件日志
mkdir /var/adm touch /var/adm/messages chmod 666 /var/adm/messages chmod 755 /var/adm/ /etc/init.d/rsyslog restart |
5.8. 取消重要文件suid和sgid权限
chmod a-s /usr/bin/chage chmod a-s /usr/bin/gpasswd chmod a-s /usr/bin/wall chmod a-s /usr/bin/chfn chmod a-s /usr/bin/chsh chmod a-s /usr/bin/newgrp chmod a-s /usr/bin/write chmod a-s /usr/sbin/usernetctl chmod a-s /bin/mount chmod a-s /bin/umount chmod a-s /sbin/netreport |
5.9. 检查需关闭的服务
kshell、time、ntalk、lpd、sendmail、printer、klogin、nfslock、echo、discard、chargen、bootps、tftp、nfs、ypbind、ident、daytime |
5.10. 配置su权限
mv /etc/pam.d/su /etc/pam.d/su.bak echo "auth sufficient pam_rootok.so">>/etc/pam.d/su echo "auth required pam_wheel.so group=wheel">>/etc/pam.d/su cat /etc/pam.d/su.bak >>/etc/pam.d/su chmod 644 /etc/pam.d/su chmod 644 /etc/pam.d/su.bak |
5.11. 配置数据库用户权限
业务账号不允许DBA权限,仅赋予RESOURCE和connect权限。
grant resource to username; grant connect to username; |