1、创建oracle用户与相关用户组
为什么要把这部分作为第一步呢,主要是为了避免后面创建文件以及解压缩等一系列步骤中,要将文件所有者修改为oracle才能在安装过程中有足够的权限创建文件或子目录(Linux的权限既带来了安全,也带来了各种不便,稍一走神就忘了赋权限)。
[root@Holmofy ~]# groupadd oinstall
[root@Holmofy ~]# groupadd dba
[root@Holmofy ~]# useradd -g oinstall -G dba oracle
注意上面 -g 和 -G 大小写有区分,-g表示主组,-G表示附属组
创建用户之后,可以使用
passwd oracle
命令对oracle用户的密码进行设置或修改。
2、配置内核参数
以下命令都需要root用户权限执行
如果安装Oracle用于生产的话,内核参数是一个很重要的优化系统性能的配置项,比如配置信号量,I/O,共享内存等参数配置,这个建议参考官方文档进行详细配置,官方文档对这方面有很详细的说明。如果你和我一样只是安装个Oracle用来学习那只需要使用官方文档中建议的最低配置就行。具体可以在/etc/sysctl.conf
文件中,添加以下内核参数:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.shmall = 2097152
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 = 1048586
为使上述配置生效而不重启系统,执行如下命令
# /sbin/sysctl -p
本例中我只增加了fs.aio-max-nr = 1048576 和 fs.file-max = 6815744 两个参数。
SHMMAX参数:Linux进程可以分配的单独共享内存段的最大值。一般设置为内存总大小的一半。这个值的设置应该大于SGA_MAX_TARGET或MEMORY_MAX_TARGET的值,因此对于安装Oracle数据库的系统,shmmax的值应该比内存的二分之一大一些。
# grep MemTotal /proc/meminfo
# cat /proc/sys/kernel/shmmax
上面的命令是检查系统内存的大小,以及当前shmmax的设置。
# echo 21474836480 > /proc/sys/kernetbl/shmmax
# sysctl -w kernel.shmmax=21474836480
# echo "kernel.shmmax=21474836480" >> /etc/sysctl.conf
这是设置shmmax参数的几种方法,这三种方式都可以将shmmax设置为20G。这个参数的修改可以不重启数据库。个人推荐使用第二种sysctl命令的方式。采用第三种方式需要执行sysctl –t操作或重启,但是为了确保下次重启后设置值仍然生效,第三种方式是必不可少的。前两种方式类似alter system set scope = memory,而第三种方式则类似alter system set scope = spfile。
SHMMNI参数:设置系统级最大共享内存段数量。Oracle10g推荐最小值为4096,可以适当比4096增加一些。
# cat /proc/sys/kernel/shmmni
# echo 4096 > /proc/sys/kernel/shmmni
# sysctl -w kernel.shmmni=4096
# echo "kernel.shmmni=4096" >> /etc/sysctl.conf
检查和设置方法如上,这和shmmax的修改方式没有区别,不在赘述。
SHMALL参数:设置共享内存总页数。这个值太小有可能导致数据库启动报错。很多人调整系统内核参数的时候只关注SHMMAX参数,而忽略了SHMALL参数的设置。这个值推荐设置为物理内存大小除以分页大小。
# getconf PAGE_SIZE
通过getconf获取分页的大小,用来计算SHMALL的合理设置值:
SQL> select 32*1024*1024*1024/4096 from dual;
32*1024*1024*1024/4096
----------------------
8388608对于32G的内存,4K分页大小的系统而言,SHMALL的值应该设置为8388608。
# cat /proc/sys/kernel/shmall
# echo 8388608 > /proc/sys/kernel/shmall
# sysctl -w kernel.shmall=8388608
# echo " kernel.shmall=8388608" >> /etc/sysctl.conf
查询和设置方法如上。
3、为oracle用户添加shell配置
为了提高Oracle软件性能,需要为Oracle用户添加以下shell配置:
Shell Limit | 在limits.conf中的项 | 硬限制 |
---|---|---|
打开文件描述符的最大数量 | nofile |
65536 |
单个用户可用的最大进程数 | nproc |
16384 |
进程堆栈段的最大大小 | stack |
10240 |
步骤如下:
- 在
/etc/security/limits.conf
文件,添加以下参数:oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
- 在
/etc/pam.d/login
文件中添加一行:session required pam_limits.so
- 在
/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
4、开始正式安装
先用root用户修改安装包database的所有者和权限:
chown -R oracle:oinstall database
chmod -R 755 database
然后切换到oracle用户,使用图形界面登陆,进入到之前解压的安装包,运行runInstaller
脚本开始安装
注意:一定要使用oracle用户登录图形界面,否则运行runInstaller
会报错显示错误(因为后面使用图形化界面安装的,需要权限去运行图形界面程序)。