在linux下安装oracle最麻烦的就是一些准备工作了,下面开始一步步教你们装
1、检查oracle 12c所需包
下面是关于Oracle 12c所需包,从官方文档看,不同版本的操作系统似乎有所不同, Red Hat Enterprise Linux需要安装下面一些包,很多很变态,大概看下就行,后面的数字都是版本号,别的版本基本上都可以,不用紧张。
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-58
glibc-2.5-58 (32 bit)
glibc-devel-2.5-58
glibc-devel-2.5-58 (32 bit)
ksh
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc++-4.1.2
libstdc++-4.1.2 (32 bit)
libstdc++-devel 4.1.2
libXext-1.0.1
libXext-1.0.1 (32 bit)
libXtst-1.0.1
libXtst-1.0.1 (32 bit)
libX11-1.0.3
libX11-1.0.3 (32 bit)
libXau-1.0.1
libXau-1.0.1 (32 bit)
libXi-1.0.1
libXi-1.0.1 (32 bit)
make-3.81
sysstat-7.0.2
给你们一条命令,直接复制执行查看你缺少了什么包
[root@localhost /]# rpm -q binutils compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXext libXtst libX11 libXau libXi make sysstat
binutils-2.20.51.0.2-5.36.el6.x86_64
package compat-libstdc++-33 is not installed
package gcc is not installed
package gcc-c++ is not installed
glibc-2.12-1.132.el6.x86_64
glibc-devel-2.12-1.132.el6.x86_64
package ksh is not installed
libaio-0.3.107-10.el6.x86_64
package libaio-devel is not installed
libgcc-4.4.7-4.el6.x86_64
libstdc++-4.4.7-4.el6.x86_64
package libstdc++-devel is not installed
libXext-1.3.1-2.el6.x86_64
libXtst-1.2.1-2.el6.x86_64
libX11-1.5.0-4.el6.x86_64
libXau-1.0.6-4.el6.x86_64
libXi-1.6.1-3.el6.x86_64
make-3.81-20.el6.x86_64
sysstat-9.0.4-22.el6.x86_64
这么多“not installed”太恶心了
试一下安装罗
[root@localhost /]# yum install compat-libstdc++-33
-----y,让它安装下去
Installed:
compat-libstdc++-33.x86_64 0:3.2.3-69.el6
Complete!
----我查看一下
[root@localhost /]# rpm -q compat-libstdc
package compat-libstdc is not installed
-----奇怪了,没有安装。。。。。你不要搞错。记住
-----注意:compat-libstdc包不等于compat-libstdc++-33
-----用下面语句查查,比较难懂。
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' compat-libstdc++-33
或者下面简单点
[root@localhost /]# rpm -qcompat-libstdc++-33
compat-libstdc++-33-3.2.3-69.el6.x86_64
-----有了。
-----接下来把“not installed”的所有包都装上吧
[root@localhost /]# yum install gcc
[root@localhost /]# yum install gcc-c++
[root@localhost /]# yum install ksh
[root@localhost /]# yum installlibaio-devel
[root@localhost /]# yum installlibstdc++-devel
像这样再查看一遍。完美!
2、创建Oracle用户和用户组
[root@localhost /]# groupadd dba
[root@localhost /]# groupadd oinstall
[root@localhost /]# useradd -g oinstall -Gdba oracle
[root@localhost /]# id oracle
uid=501(oracle) gid=502(oinstall)组=502(oinstall),501(dba)
[root@localhost /]# passwd oracle
-------这里自行输入oracle用户的密码
更改用户oracle的密码。
新的密码:
无效的密码:它基于字典单词
无效的密码:过于简单
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost /]# mkdir -p /u01/app/oracle
[root@localhost /]# chown -R oracle:oinstall /u01/app/oracle
[root@localhost /]# chmod -R 775/u01/app/oracle
[root@localhost ~]# mkdir -p /u01/app/oraInventory
[root@localhost ~]# chown -R oracle:oinstall /u01/app/oraInventory
[root@localhost ~]# chmod -R 775 /u01/app/oraInventory
----创建oraInventory目录,所以必须先创建该用户并授权
4、关闭selinux防火墙
[root@localhost /]# /usr/sbin/sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
----可以看到SELinux status:enabled
[root@localhost /]# vi /etc/sysconfig/selinux
# This file controls the state of SELinuxon the system.
# SELINUX= can take one of these threevalues:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these twovalues:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
-----把SELINUX=enforcing 改为SELINUX=disabled
[root@localhost /]#reboot
----让修改后生效,需重启
[root@localhost ~]# /usr/sbin/sestatus
SELinux status: disabled
[root@localhost ~]# /usr/sbin/getenforce
Disabled
[root@localhost ~]#
----查看一下,确实都disabled了5、修改系统内核参数
这部分很关键,很复杂,但是安装oracle网上的资料,修改的也不多。
首先备份
[root@localhost ~]# cp /etc/sysctl.conf /etc/sysctl.conf.bak
---备份完了再来看看
[root@localhost ~]# vi /etc/sysctl.conf
#add by test
kernel.shmmni = 4096
kernel.sem =250 32000 100 128
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
net.ipv4.ip_local_port_range =9000 65500
fs.file-max=65536
fs.aio-max-nr=1048576
修改完成后保存,然后运行
[root@localhost ~]#sysctl -p
-----使之生效
加上这段,我对了一下,内存4G的加上面这些就够了
内核参数的一些设置建议,可以参考下面资料:很长,很难懂,可以忽略不看
kernel.shmmax 关于内核参数kernel.shmmax,oracle 建议,kernel.shmmax的值不能少于物理内存的一半,而且要大于Oracle中sga-max-size的值,否则会造成oracle性能下降
一般32bit操作系统,直接设置为系统支持的最大内存即可,64bit操作系统设置大于sga-max-size的值即可 如:当前内存为2G 则kernel.shmmax= 2*1024*1024=2097152 当前内存为8G则kernel.shmmax = 7*1024*1024=7340032 Kernel.shmall Shmall指系统一次可以使用的共享内存段的最大数量,以页为单位。Oracle默认设置为 kernel.shmall = 2097152 即最大8G(2097152*4/1024/1024),(在调整SGA时需要注意,SGA大小设置不可超过该值),根据系统内存大小和使用的不同可以参考如下:设置的一般规律 kernel.shmall= 8G/4k=8388608k/4k=2097152 ---内存8G kernel.shmall= 16G/4k=16777216k/4k=4194304 ---内存16G kernel.shmall= 32G/4k=33554432k/4k=8388608 ---内存32G (RedHat linux系统中页大小为4096即4K,实际环境以getconfPAGE_SIZE结果为准) kernel.shmmni shmmni 指系统共享内存段的最大数量 oracle设置默认值为4096,一般是足够用了,不需要调整 文件句柄数的相关内核参数设置 fs.file-max fs.file-max指系统能够打开最大的文件句柄数 oracle建议设置为65536,一般不用修改 信号的相关内核参数设置 kernel.sem kernel.sem是指 semmsl,semmns,semopm,semmni这4个参数 semmsl 指每个线号集的最大信号数,Oracle建议是设置为oracle的最大进程数+10 semmni 指整个系统的信号集的最大数量 semmns 指整个系统的信号总数,也就是semmni*semmsl的结果 semopm 指每个semop系统调用可以执行的信号操作的最大数量 oracle默认设置 semmsl=250 semmns=3200 semopm=100 semmni=128 即kernel.sem= 250 3200100 128 例:在oracle ora.init文件参数中设置PROCESSES参数为5000 则semmsl=5010,semmni=128,semmns=semmsl*semmni=641280 另外semopm建议设置等于semmsl值即5010 那么kernel.sem=5010641280 5010 128 网络相关的内核参数设置 net.core.rmem_default net.core.rmem_default指网络套接字的默认接收缓冲区的大小,oracle建议设置为265K即262144 net.core.rmem_max net.core.rmem_max指网络套接字的最大接收缓冲区的大小,oracle10g及以前版本建议设置为256k即262144 oracle11g建议设置为4M 即4194304 net.core.wmem_default net.core.wmem_default指网络套接字的默认发送缓冲区的大小,oracle建议设置为265K即262144 net.core.wmem_max net.core.wmem_max 指网络套接字的最大发送缓冲区的大小,oracle10g及以前版本建议设置为256k即262144 oracle11g建议设置为1M即1048576 net.ipv4.ip_local_port_range net.ipv4.ip_local_port_range,指本地的允许打开随机端口范围 oracle10g前建议端口范围为102465000,oracle11g建议端口范围为: 900065500 并忽略oracle安装程序任何关于这个参数的警告 AsynchronousI/O相关的内核参数设置 fs.aio-max-nr fs.aio-max-nr指系统允许的最大的异步IO请求大小 oracle默认设置为1M即1048576,一般不用更改 |
6、设置用户限制
在/etc/security/limits.conf中添加如下配置。原来的里面是空的,行前面是#号都是注释
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240
Add the following line to the"/etc/pam.d/login" file,
if it does not already exist.
session required/lib/security/pam_limits.so
session required pam_limits.so
Add the following to
/etc/profile if Oracle user will use thebash shell.
if [ $USER = "oracle" ]; then
ulimit -u 16384
ulimit -n 65536
fi
首先切换到oracle账户 ,编辑修改主目录下 .bash_profile
[root@localhost ~]# su - oracle
[oracle@localhost ~]$
------注意符号的改变
[oracle@localhost ~]$ vi /home/oracle/.bash_profile
-----隐藏文件,直接vi吧,替换成下面这段
#add testtest TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR ORACLE_BASE=/u01/app/oracle; exportORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1;export ORACLE_HOME ORACLE_SID= testtest; export ORACLE_SID ORACLE_TERM=xterm; export ORACLE_TERM PATH=/usr/sbin:$PATH; export PATH PATH=$ORACLE_HOME/bin:$PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;export CLASSPATH if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi |
[oracle@localhost ~]$ source .bash_profile
------使配置生效
-bash: testtest: command not found 是因为我上面的文本中testtest前面多了空格!删掉空格就可以了。
有以下不爽的东西,改掉它
[root@localhost ~]# su - oracle
-bash-4.1$
vi /home/oracle/.bash_profile
加入export PS1='[\u@\h \W]\$'
[root@localhost ~]# su - oracle
[oracle@localhost ~]$