CentOS:Oracle数据库安装

来自WHY42

准备工作

  • 安装JDK

在CentOS6下安装Oracle,首先确保已经安装JDK

  • 系统版本名称

Oracle不识别CentOS,因此改为RH

vi /etc/redhat-release

将CentOS release 6.3 (Final)这行注释掉,加上下面的

Red Hat Enterprise Linux 6
  • 安装依赖项
yum install \
binutils \
compat-libcap1  \
compat-libstdc++-33 \
compat-libstdc++-33*.i686 \
elfutils-libelf-devel \
gcc \
gcc-c++ \
glibc*.i686 \
glibc \
glibc-devel \
glibc-devel*.i686 \
ksh \
libgcc*.i686 \
libgcc \
libstdc++ \
libstdc++*.i686 \
libstdc++-devel \
libstdc++-devel*.i686 \
libaio \
libaio*.i686 \
libaio-devel \
libaio-devel*.i686 \
make \
sysstat \
unixODBC \
unixODBC*.i686 \
unixODBC-devel \
unixODBC-devel*.i686\
libXp

用户及目录

  • 建立用户和组
groupadd oinstall
groupadd dba
groupadd oper
useradd -g oinstall -G dba,oper oracle
echo "oracle" | passwd --stdin oracle

查看一下

id oracle

大致这样子:

uid=501(oracle) gid=501(oinstall) 组=501(oinstall),502(dba),503(oper)
  • 建立安装目录(OFA结构)
mkdir -p /u01/app/oracle/product/11.2.0/db_1
cd /u01/app
mkdir oraInventory
chown -R oracle:oinstall /u01/app/oracle(oraInventory)
chmod -R 775 /u01/app/oracle(oraInventory)

修改内核参数

vi /etc/sysctl.conf

改为以下值

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 8388608
kernel.shmmax = 17179869184
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

其中计算公式如下: Shmall(全部共享内存)=32*1024*1024/4=8388608(页)
Shmmax(最大共享内存)=32/2*1024*1024*1024=17179869184
最需要注意的是shmmax 这个参数,最小500M,最大比内存少一个字节就可以了,推荐比内存的一半大一点点
还有特别注意sysctl.conf中shmmax ,shmall 已经有了,要注释掉
改好后,使之生效

sysctl -p

修改用户配置

vim /etc/security/limits.conf

增加以下内容

oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536
oracle              soft    stack   10240

编辑/etc/pam.d/login

vi /etc/pam.d/login

将以下内容加到最后(注意64位系统为lib64)

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

修改/etc/profile

vi /etc/profile

将以下代码新增到profile档案中。在 pathmunge() {…}之后即可。

if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi

修改oracle用户环境变量

vi ~oracle/.bash_profile

修改以下内容

ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
ORACLE_SID=ORCL
export ORACLE_BASE ORACLE_HOME ORACLE_SID

PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export PATH

安装Oracle

下载的oracle文件(已下载至附件/4-oracle)到/u01/app/oracle

xhost + 
su - oracle
cd /u01/app/oracle
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
unset LANG LANGUAGE 
cd /u01/app/oracle/databse
./runInstaller

后面的安装过程基本简单,按照向导即可,检测失败全部忽略掉
安装完成后,需要执行两个脚本(安装完后有提示)

/u01/app/Oracle/oraInventory/orainstRoot.sh
/u01/app/oracle/product/10.2.0/db_1/root.sh

注意需要以root身份执行
以上步骤后,以下命令启动数据库

lsnrctl start
sqlplus /nolog
conn / as sysdba
startup

以上步骤启动通常会失败,大意是找不到initORCL.ora ,可以将默认的备份文件拷贝到提示目录即可。
备份文件位置:

/u01/app/oracle/admin/orcl/pfile

其他错误解决办法

ORA-00845