[root@localhost 桌面]# groupaddoinstall
[root@localhost 桌面]# groupadddba
[root@localhost 桌面]# useradd-g oinstall -G dba -d /home/oracle oracle
[root@localhost 桌面]# idoracle
uid=501(oracle) gid=501(oinstall) 组=501(oinstall),502(dba)
[root@localhost 桌面]# passwdoracle
[root@localhost 桌面]# idnobody 创建nobody用户之前先看一下该用户是否已经存在
uid=99(nobody) gid=99(nobody) 组=99(nobody)
向/etc/security/limits文件中,添加如下参数
[root@localhost 桌面]# vi/etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
PS:limits.conf 配置 limits.conf文件实际是 Linux PAM(插入式认证模块)中 pam_limits.so 的配置文件,而且只针对于单个会话
第一行规则(软)定义用户oracle的最大进程数为2047
第二行规则(硬)定义用户oracle的最大进程数为16384
第三行规则(软)定义用户oracle打开文件的最大数目为1024
第四行规则(硬)定义用户oracle打开文件的最大数目为65536
soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高
向/etc/pam.d/login文件中,添加如下参数
[root@localhost 桌面]# vi/etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so
PS:这个涉及到linux高级安全部分
[root@localhost 桌面]# vi /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
PS:
/etc/profile这个文件是每个用户登录时都会运行的环境变量设置
即:如果oracle用户的shell环境是/bin/ksh,那么限制管道缓冲区的大小为16384K,可以打开的最大文件数是65536个
反之,限制oracle用户最多可以使用16384个进程,最多可以打开65536个文件
修改内核参数及相关配置文件
[root@localhost 桌面]# vi/etc/sysctl.conf 添加下列行
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
参数说明:
kernel.shmall
Totalamount of shared memory available (bytes or pages)
kernel.shmmax
Maximumsize of shared memory segment (bytes)
建议大于等于SGA
kernel.shmmni
Maximumnumber of shared memory segments system-wide
kernel.shmall*kernel.shmmni = 能够分配的内存大小
kernel.sem = SEMMSL SEMMNS SEMOPMSEMMNI
SEMMSLMaximum number of semaphores per set
每个信号对象集的最大信号对象数;
SEMMNSMaximum number of semaphores system-wide
系统范围内最大信号对象数;
SEMOPM
每个信号对象支持的最大操作数;
SEMMNIMaximum number of semaphore identifiers
系统范围内最大信号对象集数。
其中 SEMMNS的值等于 SEMMSL*SEMMNI
fs.file-max
系统中所允许的文件句柄最大数目。
net.ipv4.ip_local_port_range
应用程序可使用的IPv4端口范围。
net.core.rmem_default
套接字接收缓冲区大小的缺省值
net.core.rmem_max
套接字接收缓冲区大小的最大值
net.core.wmem_default
套接字发送缓冲区大小的缺省值
net.core.wmem_max
套接字发送缓冲区大小的最大值
部分详解:
shmmax该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降
kernel.shmall该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,如果要调整SGA大于8G,就要调大该参数。Linux 共享内存页大小为4KB, 共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是 16GB/4KB=16777216KB/4KB=4194304 (页),也就是64Bit 系统下16GB 物理内存,设置kernel.shmall = 4194304 才符合要求
kernel.shmmni这个内核参数用于设置系统范围内共享内存段的最大数量(注意这个参数不是 shmmin,是shmmni, shmmin 表示内存段最小大小) 。shmmni 缺省值 4096 ,一般肯定是够用了
sem:该参数表示设置的信号量
使上述参数生效
[root@localhost 桌面]# sysctl-p
[root@localhost 桌面]# vi/etc/hosts
192.168.181.132 Oracle11gR2
127.0.0.1 Oracle11gR2 localhost
oracle@localhost ~]$ vi .bash_profile
umask=022
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/11gR2
export ORACLE_CRS_HOME=$ORACLE_BASE/crs
exportORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_SID=aniya
export ORACLE_TERM=xterm
exportPATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:${PATH}:$HOME/bin
exportPATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
exportPATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
exportLD_LIBRATY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib:$ORACLE_HOME/oracm/lib:$oracle_home/lib
exportLIBPATH=$LIBPATH:$ORA_CRS_HOME/lib:$ORACLE_HOME/lib
exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/jlib:$ORACLE_HOME/network/jlib:$ORACLE_HOME/JRE
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
exportNLS_LANG=american_american.WE8ISO8859P1
export DISPLAY=192.168.181.132:0.0
export EDITOR=vi
加载上述配置
oracle用户注销重新登录 或 source.bash_profile
关闭SeLinux
[root@localhost 桌面]# vi/etc/selinux/config
SELINUX=disabled