首页 > 代码库 > CentOS上oracle 11g R2数据库安装折腾记

CentOS上oracle 11g R2数据库安装折腾记

1.虚拟机上centos镜像的获取。这里推荐网易镜像站中的CentOS7版本(其他开源镜像站亦可)。这里给出链接:

http://mirrors.163.com/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso

ps:这是64位的,现在也很少人使用32位系统了吧。安装CentOS系统(网上教程很多,这里不再赘述)

ps:最好留着10G左右的空留空间(安装包就有2G,再加上最后安装的体积,多留点,笔者安装时就不够用了,到时候虚拟机中扩空间也是十分麻烦的事情)

ps:内存最好2G及2G以上

2.oracle安装包获取。百度贴吧中的Oracle安装包大多是Windows系统版本的。我们需要的是Linux版本的,这里推荐直接从官网获取:

http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_database_1of2.zip

http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_database_2of2.zip

这里有两个包,但是直接单击链接的话,会提示需要登录oracle账户才能下载。因此这里笔者推荐使用下载软件(笔者使用的迅雷9)直接添加下载链接,进行下载

3.下载完成后,解压到当前文件夹。会出现一个database的文件夹。安装包的准备工作就此完成。重头戏和麻烦事来了。

在CentOS的终端中切换到root用户,我们需要更新一些包。切换命令:

su

之后输入root用户密码(r如果是初次使用root用户,这里会提示设置密码)

之后我们需要更新下面这些包(版本比下述高即可,有些已有最新版的,系统不会更新,这时候直接下一个就可以):

binutils-2.17.50.0.6 
compat-libstdc++-33-3.2.3   (33表示3.3版,296表示2.96版)  
elfutils-libelf-0.125  
elfutils-libelf-devel-0.125  
elfutils-libelf-devel-static-0.125  
gcc-4.1.2  
gcc-c++-4.1.2  
glibc-2.5-24  
glibc-common-2.5  
glibc-devel-2.5  
glibc-headers-2.5  
kernel-headers-2.6.18  
ksh-20060214  
libaio-0.3.106  
libaio-devel-0.3.106  
libgcc-4.1.2  
libgomp-4.1.2  
libstdc++-4.1.2  
libstdc++-devel-4.1.2  
make-3.81  
numactl-devel-0.9.8.i386  
sysstat-7.0.2  
unixODBC-2.2.11             (官方文档里面没有写)
unixODBC-devel-2.2.11 

安装命令示例:

yum install gcc

包后无需跟版本号,其他的包类似。

4.开始安装前我们首先要配置内核参数,保证Oracle的正常运行(Oracle启动需要较多的资源)。配置如下:

修改文件/etc/sysctl.conf,这里笔者使用

gedit /etc/sysctl.conf

打开文件修改一下内容,有责略过,没有责添加

修改如下:

kernel.shmall=4294967296
kernel.shmmax=68719476736
fs.file-max=6815744
fs.aio-max-nr=1048576
kernel.shmmni=4096
kernel.sem=800 113600 800 142
net.ipv4.ip_local_port_range=1024 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576

  各参数意义如下:      

(1)shmmax:该参数定义了共享内存段的最大尺寸(以字节为单位),通常将其设置为2G或更大。 

(2)shmmni:用于设置系统范围内共享内存段的最大数量。默认值是 4096 ,通常不需要更改。
(3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,如系统自动生成则不需要修改。 
(4)sem:该参数表示设置的信号量,当oracle DB初始化参数文件中PROCESSES参数设置较大时,需要调整SEM设置如:kernel.sem = 250 32000 100 128各数据段含义如下。 SEMMSL SEMMNSSEMOPM SEMMNI 

SEMMSL应该设置为服务器中各个实例中最大的PROCESSES参数+10,如当最大的PROCESSES参数为5000时,SEMMSL应设置为5010。 
SEMMNS参数应设置为SEMMSL*SEMMNI,如例SEMMSL为5010,SEMMNS参数应为(5010*128)=641280。 SEMOPM参数应设置与SEMMSL参数相同,接上例此处应设置为5010 
(5)file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。 

(6)rmem_default — 默认的TCP/IP接收缓冲大小 
(7)rmem_max — 最大的TCP/IP接收窗口的大小 
(8)wmem_default — 默认的TCP/IP发送窗口大小 
(9)wmem_max — 最大的TCP/IP发送窗口的大小
如果要使 /etc/sysctl.conf 更改立即生效,执行以下命令:
 
sysctl  -p
 
     可能出现如下错误:
     error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
     error: "net.bridge.bridge-nf-call-iptables" is an unknown key
     error: "net.bridge.bridge-nf-call-arptables" is an unknown key
     解决方法:
     
lsmod | grep bridge
modprobe  bridge
lsmod | grep bridge
 
5.修改用户的用户的SHELL的限制,修改/etc/security/limits.conf文件 输入命令:
gedit /etc/security/limits.conf 
加入内容下面内容:并保存退出
oracle   soft     nproc    4096                
oracle   hard    nproc    16384 
oracle   soft     nofile    4096 
oracle   hard    nofile    65536
oracle   soft     stack    10240

 

6.修改/etc/pam.d/login 文件,输入命令:gedit  /etc/pam.d/login,将下列内容加入该文件。 

session   required    /lib64/security/pam_limits.so    
session   required    pam_limits.so      

 

7.编辑 /etc/profile ,输入命令:gedit  /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

 

8.创建oracle用户和安装目录

ps:安装目录可以之后用oracle账户登录系统后通过图形化界面创建

创建用户和用户组,输入命令:

groupadd  oinstall                                //创建Oracle Inventory 组
groupadd  dba                                     //创建组群DBA 组
useradd -g oinstall -G dba oracle         //创建Oracle软件拥有者(-g表示辅助组,-G表示主组)(还可以在后面接-d dir,表示用户的家目录的位置,默认普通用户的家目录在/home下)
passwd oracle                                      //修改oracle用户的密码

之后设置密码(Linux中密码不会显示,也不会显示“*“,这里不要怀疑自己键盘坏了)

之后我们创健安装目录(可之后登录后用图形化界面创健)

mkdir -p  /home/oracle/app                        #基目录
mkdir /home/oracle/app/oraInventory        #该目录就像Windows下的注册表文件,每当有软件安装,就会向里面写一些注册表
mkdir /home/oracle/app/oracle                   #oracle数据库目录
mkdir /home/oracle/app/oracle/product    #oracle实例目录

更改目录属主为Oracle用户所有(防止安装过程中发生权限不够的问题),输入命令:

chown -R oracle:oinstall  /home/oracle/app
chmod -R 775  /home/oracle/app/

9.配置oracle用户的环境变量,要在oracle用户下进行操作,输入:

su oracle

之后输入上一步自己设置的密码登录,输入vim  /home/oracle/.bash_profile,按I键进入插入模式,在里面输入回车后,先按ESC键,再按:wq退出

之后我们再输入gedit  /home/oracle/.bash_profile进入编辑,添加:

export  EDITOR=vi  
export  ORACLE_SID=orcl         #实例名 
export  ORACLE_BASE=/home/oracle/app 
export  ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1 
export  INVENTORY_LOCATION=/home/oracle/app/oraInventory 
export  LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib 
export  NLS_LANG="American_america.zhs16gbk" 
export  NLS_DATE_FORMAT=‘yyyy-mm-dd hh24:mi:ss‘ 
export  PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin 
umask 022 
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64 
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export erase ^h     #用于消除换车键产生的乱码

10.安装前准备

重启CentOS系统,用Oracle账户登录

将第3步中的database文件夹拷贝进入home文件夹中。

(之前没有新建文件夹的此时可以新建)

11.开始安装。

输入命令切换到database中,再输入安装命令

cd /database
./runInstaller

12.安装过程

技术分享

技术分享

技术分享

技术分享

技术分享

这一步之后或者之前都可能出现一个问题(笔者出现很多次,折腾了几天),问题如下图:

 

 

技术分享

这时候安装界面突然暗下来,然后正中间出现一条竖线。这时候就会卡死不动。其实这是一个窗口,但是Linux的图形界面你懂得,没有显示出来。这时候按下Enter键可能会进入下一步。如果没有,就将密码改成8位以上包括大写字母,小写字母,数字,检车下上面的安装路径是否正确。之后点next,按enter键。后面出现这个问题同样卡死的时候,可以试试按下右移键,再按回车。

技术分享

技术分享

技术分享

技术分享

安装快完成时,系统会提示你需要用root权限执行2个shell脚本。 按照其提示的路径 执 行/home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh  和 /home/oracle/ oraInventory/orainstRoot.sh,安装完成会有提示信息。 执行命令:

 

cd  /home/oracle/app/oracle/product/11.2.0/dbhome_1     
sh  root.sh         #当中有个敲回车的点
cd /home/oracle/app/oraInventory 
sh  orainstRoot.sh 

技术分享

技术分享

至此安装完成!

 

CentOS上oracle 11g R2数据库安装折腾记