Home  >  Article  >  Database  >  CentOS5.5安装Oracle11g第二版

CentOS5.5安装Oracle11g第二版

WBOY
WBOYOriginal
2016-06-07 15:36:571056browse

C entOS5.5 安装 oracle 11G 首先在 oracle 官方上下载一个 oracle 11g( 说明一下在安装 CentOS 5.5 时尽量是把开发包装全一些,这样您在安装包检测的时候就会少装一些包,这个可以在安装 CentOS 时选择开发工具一览选项。其次,安装 CentOS 的 SWAP 要大约

C entOS5.5 安装 oracle 11G

首先在oracle 官方上下载一个oracle 11g( 说明一下在安装CentOS 5.5 时尽量是把开发包装全一些,这样您在安装包检测的时候就会少装一些包,这个可以在安装CentOS 时选择开发工具一览选项。其次,安装CentOSSWAP 要大约1.5 倍的物理内存大小。最后,要禁用linux 防火墙以及SElinux ,这两个可以在安装CentOS 时选择禁用)

 


1
、下载 Oracle 11g 文件

下载oracle http://www.oracle.com/cn/index.html

2 、安装包检测及安装

在终端中执行: rpm -q gcc make binutils setarch compat-db compat-gcc compat-gcc-c++ compat-libstdc++ compat-libstdc++-devel unixODBC unixODBC-devel libaio-devel sysstat
显示结果如下:

vel sysstat

gcc-4.1.2-42.el5

make-3.81-3.el5

binutils-2.17.50.0.6-6.el5

setarch-2.0-1.1

package compat-db is not installed

package compat-gcc is not installed

package compat-gcc-c++ is not installed

package compat-libstdc++ is not installed

package compat-libstdc++-devel is not installed

unixODBC-2.2.11-7.1

package unixODBC-devel is not installed

package libaio-devel is not installed

package sysstat is not installed

分析:

上面package 软件包 is not installed 部分说明此软件包没有安装,您可以再光盘里面找,再用rpm -ivh 安装就行,这些包在centos 安装盘中都用;或者直接用yum install 软件包 来安装,具体操作如下:

yum install compat-db

安装成功Installed: compat-db.i386 0:4.2.52-5.1 Complete!

yum install compat* ( 这个包比较多,要稍等一会,不急先抽根烟吧。)

安装成功 Installed: compat*......... Complete!

yum install unixODBC-devel

安装成功 Installed: unixODBC-devel.i386 0:2.2.11-7.1 Complete!

yum install libaio-devel

安装成功 Installed: libaio-devel.i386 0:0.3.106-3.2 Complete!

yum install sysstat

安装成功 Installed: sysstat.i386 0:7.0.2-1.el5 Complete!

说明:您可以再执行一次rpm -q 软件包组合 具体如下:

gcc-4.1.2-42.el5

make-3.81-3.el5

binutils-2.17.50.0.6-6.el5

setarch-2.0-1.1

compat-db-4.2.52-5.1

package compat-gcc is not installed

package compat-gcc-c++ is not installed

package compat-libstdc++ is not installed

package compat-libstdc++-devel is not installed

unixODBC-2.2.11-7.1

unixODBC-devel-2.2.11-7.1

libaio-devel-0.3.106-3.2

sysstat-7.0.2-1.el5

如上所述:还是有4 个软件包没有安装,这个不用理会,其实我们刚才安装的compat 包已经包含了

 

注意,除了上面的软件需要安装外,安装最新的Oracle Database 11 g 2

还需要安装:

pdksh

 

所以需要运行:

yum install pdksh

 

 

这里解释一段话:

 

为什么要安装那么多软件包?可以看官网

http://download.oracle.com/docs/cd/E11882_01/install.112/e10857/toc.htm#BABFGGIE

 

说一下 ORACLE 内部安装过程:

Oracle 公司提供了一个管理工具OUI Oracle Universal Installer ),OUI 就是用来安装Oracle 产品的,而OUI 的中心是

产品清单。产品清单用于存储在计算机上安装的所有Oracle 产品的详细信息,包括版本、位置,有时还包括已应用的补丁信息。

当每次运行OUI 时,都将在清单中检查不兼容性,然后才允许继续将现有产品安装到Oracle 主目录,才使用已经安装和已经升级产品的详细信息更新产品清单。而产品清单的位置是由oraInst.loc 来指定的。

DBA 可以在第一次运行OUI 时,选择Linux 产品清单的位置。Linux 下是这个文件

/etc/oraInst.loc

 

oraInst.loc 这个文件存储的是产品清单的位置。oraInst.loc 的内容如下:

[oracle@localhost etc]$ cat oraInst.loc

 

inventory_loc=/u01/app/oraInventory

 

inst_group=dba

 

 

注意:上面的/u01/app/oraInventory 就是产品清单的位置

 

启动OUI 时,它将查找此文件(oraInst.loc )。如果找不到,OUI 将认为相应的计算机上没有安装任何ORACLE 软件,这时,他会创建文件,在其中写入要创建的新产品清单的位置。以后每次运行任何版本的OUI 时,都能找到此产品清单。

涉及到创建,需要有写入权限。所以通常只有root 用户才可以写入/etc 或者/var

由于安全原因,不允许用root 用户身份运行OUI ,所以OUI 会生成一个orainstRoot.sh 脚本,这个脚本的属主是root, 而这个脚本用于创建oraInst.loc ,也就是说在oracle 的安装过程中,会需要用户以root 的身份运行orainstRoot.sh 这个脚本,而这个脚本的目的之一是创建oraInst.loc 。这个在你一会安装oracle 的时候等到最后的 “安装产品”这一步后,

系统会自动提示你运行两个脚本,第一个就是orainstRoot.sh 。这里我先给出他的内容,

以便大家分析:

[root@localhost Desktop]# cat /u01/app/oraInventory/orainstRoot.sh

 

看看第19 行就是复制oraInst.loc ,就是创建他的。

#!/bin/sh

 

AWK=/bin/awk

 

CHMOD=/bin/chmod

 

CHGRP=/bin/chgrp

 

CP=/bin/cp

 

ECHO=/bin/echo

 

MKDIR=/bin/mkdir

 

RUID=`/usr/bin/id|$AWK -F/( '{print $2}'|$AWK -F/) '{print $1}'`

 

if [ ${RUID} != "root" ];then

 

$ECHO " 必须以 root 身份执行此脚本"

 

exit 1

 

fi

 

if [ -d "/etc" ]; then

 

$CHMOD 755 /etc;

 

else

 

$MKDIR -p /etc;

 

fi

 

if [ -f "/u01/app/oraInventory/oraInst.loc" ]; then

 

$CP /u01/app/oraInventory/oraInst.loc /etc/oraInst.loc;

 

$CHMOD 644 /etc/oraInst.loc

 

else

 

INVPTR=/etc/oraInst.loc

 

INVLOC=/u01/app/oraInventory

 

GRP=dba

 

PTRDIR="`dirname $INVPTR`";

 

# 创建软件产品清单位置指针文件

 

if [ ! -d "$PTRDIR" ]; then

 

$MKDIR -p $PTRDIR;

 

fi

 

$ECHO " 创建 Oracle 产品清单指针文件($INVPTR)";

 

$ECHO inventory_loc=$INVLOC > $INVPTR

 

$ECHO inst_group=$GRP >> $INVPTR

 

chmod 644 $INVPTR

 

# 如果产品清单目录不存在, 则创建它

 

if [ ! -d "$INVLOC" ];then

 

$ECHO " 创建 Oracle 产品清单目录($INVLOC)";

 

$MKDIR -p $INVLOC;

 

fi

 

fi

 

$ECHO " 更改权限/u01/app/oraInventory.

 

添加组的读取和写入权限。

 

删除全局的读取, 写入和执行权限。

 

";

 

$CHMOD -R g+rw,o-rwx /u01/app/oraInventory;

 

if [ $? != 0 ]; then

 

$ECHO "OUI-35086: 警告: chmod/u01/app/oraInventory

 

添加组的读取和写入权限。

 

, 删除全局的读取, 写入和执行权限。

 

失败!";

 

fi

 

$ECHO " 更改组名/u01/app/oraInventory dba.";

 

$CHGRP -R dba /u01/app/oraInventory;

 

if [ $? != 0 ]; then

 

$ECHO "OUI-10057: 警告: chgrp/u01/app/oraInventory dba 失败!";

 

fi

 

$ECHO " 脚本的执行已完成。"

 

 

 

OUI 在运行之前要先检查服务器计算机上的某些需求。这些需求在oracle 安装软件(比如说现在oracle 软件在DVD 上)的

/install/oraparam.ini 给出

 

3 、系统参数和用户及目录设置
//
系统参数设置

注意 每一次修改完内核参数后,需要用下面命令使修改生效

/sbin/sysctl -p

如果内核参数与我的不一样,可以根据实际安装过程中的条件检测部分的提示来修改即可。

一定要具体情况具体看待。

为什么要设置系统参数,以及参数为什么这样设置可以参看oracle 官方文档

http://download.oracle.com/docs/cd/E11882_01/install.112/e10857/toc.htm#BABFGGIE

 

 


vi /etc/sysctl.conf

以下为此文件更改后的内容:

# Kernel sysctl configuration file for Red Hat Linux

 

#

 

# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and

 

# sysctl.conf(5) for more details.

 

 

 

# Controls IP packet forwarding

 

net.ipv4.ip_forward = 0

 

 

 

# Controls source route verification

 

net.ipv4.conf.default.rp_filter = 1

 

 

 

# Do not accept source routing

 

net.ipv4.conf.default.accept_source_route = 0

 

 

 

# Controls the System Request debugging functionality of the kernel

 

kernel.sysrq = 0

 

 

 

# Controls whether core dumps will append the PID to the core filename

 

# Useful for debugging multi-threaded applications

 

kernel.core_uses_pid = 1

 

 

 

# Controls the use of TCP syncookies

 

net.ipv4.tcp_syncookies = 1

 

 

 

# Controls the maximum size of a message, in bytes

 

#kernel.msgmnb = 65536

 

 

 

# Controls the default maxmimum size of a mesage queue

 

#kernel.msgmax = 65536

 

 

 

# Controls the maximum shared segment size, in bytes

 

#kernel.shmmax = 4294967295

 

 

 

# Controls the maximum number of shared memory segments, in pages

 

#kernel.shmall = 268435456

 

 

 

#Below for oracle11g

 

fs.aio-max-nr=1048576

 

kernel.core_uses_pid = 1

 

kernel.shmmax = 536870912

 

kernel.shmmni = 4096

 

kernel.shmall = 2097152

 

kernel.sem = 250 32000 100 128

 

net.core.rmem_default = 4194304

 

net.core.rmem_max = 4194304

 

net.core.wmem_default = 262144

 

net.core.wmem_max = 1048576

 

fs.file-max = 6815744

 

net.ipv4.ip_local_port_range = 9000 65500

 

 

// 添加用户组及用户

执行如下命令:
#groupadd dba
创建用户组dba
#groupadd oinstall
创建用户组oinstall
#useradd oracle -g oinstall -G dba
添加用户oracle 使其属于组oinstall 和附加组dba
#passwd oracle
设置用户oracle 的秘密
//
新建目录权限

执行如下命令:
#mkdir -p /u01
新建目录 /u01
#chown -R oracle:dba /u01
将目录/u01 (递归)属主和属组分别更改为oracle dba
#chmod -R 755 /u01
/u01 权限赋值为755

 

// 用户环境变量

先切换用户到oracle:
su – oracle

修改.bash_profile 文件:
vi .bash_profile

以下是此文件的内容:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:HOME/bin
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.1.0.6
export ORACLE_SID=sales
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:ORACLE_HOME/lib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORA_NLS10=$ORACLE_HOME/nls/data
unset USERNAME
umask 022

 

 

上面的

LD_LIBRARY_PATH 变量包含可能需要的动态连接库

如果要远程安装到其他服务器上,需要设置DISPLAY

这里介绍一下 OFA (Optimal Flexible Architecture )

Oracle 公司设计了 OFA 作为简化多个 Oracle 产品版本维护的文件系统目录结构。

实际上就是一个目录结构。 OFA 的核心是两个环境变量:

ORACLE_BASE ORACLE_HOME ORACLE_BASE 目录是服务器上的一个目录,

其中安装所有 Oracle 软件。每个产品的每个版本都有自己的 ORACLE_HOME (此文件夹在 ORACLE_BASE 目录下),此结构确保在最终将文件放在适当的位置的情况下,创建和升级多个数据库。

ORACLE_BASE Linux Unix OFA 标准是:它应是一个模板格式为 /pm/h/u 的目录,

其中, p 是一个字符串常量(如 u ,m 是一个数字常量(如 01 ,h 是标准目录名(如 app ), u 是拥有所有 Oracle 软件的操作系统帐号(如 Oracle )。

ORACLE_HOME OFA 标准是 $ORACLE_BASE/product/v/db_n 其中, product 是不变的产品,

v 是产品版本号(比如 11.1.0.6 ), db_n 是安装程序基于产品推导的名称,以及每个产品安装的增量编号。

我的 CentOS5.5 系统上, ORACLE_BASE ORACLE_HOME 的典型值如下:

u01/app/oracle

/u01/app/oracle/product/11.1.0.6/db_1

 

 

 

 

oracle 用户设置 Shell 限制

Oracle 建议对每个 Linux 帐户可以使用的进程数和打开的文件数设置限制。

具体参数的意义,可以参考 http://liqulq.blog.163.com/blog/static/779634752009956938670/

 

要进行这些更改,以 root 用户的身份执行下列命令:

<span><span lang="en">cat >> /etc/security/limits.conf 
<br>
</span>
<br>
<br>
<span><span lang="en">oracle soft nproc 2047</span>
<br>
</span>
<br>
<br>
<span><span lang="en">oracle hard nproc 16384</span>
<br>
</span>
<br>
<br>
<span><span lang="en">oracle soft nofile 1024</span>
<br>
</span>
<br>
<br>
<span><span lang="en">oracle hard nofile 65536</span>
<br>
</span>
<br>
<br>
<span><span lang="en">EOF</span>
<br>
</span>
<br>
<br>
<span><span lang="en">cat >> /etc/pam.d/login 
<br>
</span>
<br>
<br>
<span><span lang="en">session required /lib/security/pam_limits.so</span>
<br>
</span>
<br>
<br>
<span><span lang="en">EOF</span>
<br>
</span>
<br>
</span></span>

下面参数的意义,可参考 http://tech.ccidnet.com/art/737/20080115/1343369_1.html

修改 bash ksh 的默认配置文件以及 cshell 的默认登录脚本。

<span><span lang="en">cat >> /etc/profile 
<br>
</span>
<br>
<br>
<span><span lang="en">if [ /$USER = "oracle" ]; then </span>
<br>
</span>
<br>
<br>
 <span><span lang="en">if [ /$SHELL = "/bin/ksh" ]; then</span>
<br>
</span>
<br>
<br>
 <span><span lang="en">ulimit -p 16384</span>
<br>
</span>
<br>
<br>
 <span><span lang="en">ulimit -n 65536</span>
<br>
</span>
<br>
<br>
 <span><span lang="en">else</span>
<br>
</span>
<br>
<br>
 <span><span lang="en">ulimit -u 16384 -n 65536</span>
<br>
</span>
<br>
<br>
 <span><span lang="en">fi</span>
<br>
</span>
<br>
<br>
 <span><span lang="en">umask 022</span>
<br>
</span>
<br>
<br>
<span><span lang="en">fi</span>
<br>
</span>
<br>
<br>
<span><span lang="en">EOF</span>
<br>
</span>
<br>
<br>
<span><span lang="en">cat >> /etc/csh.login 
<br>
</span>
<br>
<br>
<span><span lang="en">if ( /$USER == "oracle" ) then</span>
<br>
</span>
<br>
<br>
 <span><span lang="en">limit maxproc 16384</span>
<br>
</span>
<br>
<br>
 <span><span lang="en">limit descriptors 65536</span>
<br>
</span>
<br>
<br>
 <span><span lang="en">umask 022</span>
<br>
</span>
<br>
<br>
<span><span lang="en">endif</span>
<br>
</span>
<br>
<br>
<span><span lang="en">EOF</span>
<br>
</span>
<br>
</span></span>

我的安装设置了两次 shell 环境。这里有《精通 shell 编程》第二版的一段话,可以有助于理解:

korn shell ksh )的初始化过程是这样的:

1.ksh 检查文件 /etc/profile 是否存在

2. 如果存在,ksh 就读取该文件,否则,跳过

3.ksh 检查主目录下的文件.profile 是否存在。

4. 如果存在,ksh 就读取该文件,否则,跳过

5.ksh 检查主目录下的文件.kshrc 是否存在。

6. 如果存在,ksh 就读取该文件,否则,跳过。

这些步骤都执行完后,就出现提示符了,ksh 默认提示符是$.

 

Bourne Again shellbash )的初始化过程是这样的:

1.bash 检查文件/etc/profile 是否存在

2. 如果存在,bash 就读取该文件,否则,跳过

3.bash 检查主目录下的文件.bash_profile 是否存在。

4. 如果存在,bash 就读取該文件,否则,跳过

5.bash 检查主目录下的.bash_login 是否存在。

6. 如果存在,bash 就读取该文件,否则,跳过

7.bash 检查主目录下的文件.profile 是否存在

8. 如果存在, bash 就读取该文件,否则,跳过。

这些步骤都执行完后,就出现提示符了, ksh 默认提示符是 $.

 

4. 安装进入 oracle 目录安装数据库

首先需要手动解压缩 linux_11gR2_database_1of2.zip linux_11gR2_database_1of2.zip 这两个软件包,然后将解压的内容放到一个文件夹。比如放到 oracle_database11g

注意:两个文件夹中有同名的部分,需要合并在一起而不是覆盖。解压后的子目录 database 也有同民的文件夹 stage ,而 stage 里面的 Components 也需要合并在一起。这个注意一下。

 

然后进入解压并合并的目录比如我的 oracle_database11g

 

[oracle@localhost home]$ cd ~/oracle_database11g/database

 

 

执行 ./runInstaller

[oracle@localhost database]$ ./runInstaller

 

 

就会探出安装步骤,然后按步骤安装即可。

开始的配置安全更新 安装选项 网络安装 产品语言 数据库版本 相应设置就可以了,我给出从安装位置开始的截图

图一:

 

 

 

 

图二:

 

 

图三:

从图中可以看到,缺少程序包 pdksh ,所以需要运行 yum install pdksh 来安装他

如果你安装过程需要什么软件包,那么你安装即可以了。具体情况具体分析。

这里有个问题

从图中可以看到,系统内核参数不对, ip_local_port_range aio-max-nr

都不对。那么需要修改 /etc/sysctl.conf

文件,这个上面已经说过了。

为什么 sysctl.conf 中参数格式是那样,比如

fs.aio-max-nr 是因为 aio-max-nr /proc/sys/fs 目录中

不难理解 kernel.shmmni 是因为 shmmni /proc/sys/kernel 目录中

net.ipv4.ip_local_port_range 是因为 ip_local_port_range

/proc/sys/net 目录中

不过,如果你修改了 /proc/sys 相应子目录下的文件,比如你修改了

/proc/sys/fs/aio-max-nr 但是在重启后由系统通过调用 rc.sysinit ( /etc/rc.d/rc.sysinit 环境 >) 文件,而 rc.sysrq 文件会调用 sysctl 命令,而 sysctl 命令又会把相应的配置文件 /etc/sysctl.conf 中的配置信息传递给内核,

所以,修改 /proc/sys/fs/aio-max-nr 是暂时的,如果彻底修改,还是需要修改 /etc/sysctl.conf

 

有关先决条件的测试,在 oracle 安装软件中给出了

比如我的在 oracle_database11g/install/oraparam.ini

该文件完成类似于检查显示安装程序的图形设备是否至少是 256 种颜色。

 

图四:

 

 

 

图五:

 

图六:

根据上图提示运行上面两个脚本就可以了。如果遇到输入什么直接回车就可以了。

(这张图片是从 oracle 官网拿来的,主要给大家参考看看)

 

至此 oracle11g 安装完成。

 

5 、测试 oracle

 

[oracle@localhost ~]$ sqlplus /nolog

 

 

 

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 23 17:38:53 2010

 

 

 

Copyright (c) 1982, 2009, Oracle. All rights reserved.

 

 

 

SQL> conn / as sysdba

 

Connected to an idle instance.

 

SQL> startup

 

ORA-01078: failure in processing system parameters

 

LRM-00109: could not open parameter file '/u01/app/oracle/product/11.1.0.6/dbs/initsales.ora'

 

这是因为没有创建数据库的原故。大家可以参考其他方法创建

 

从word复制到csdn,不支持图片,不要紧,没有图也没什么,需要文档的给我留言即可。

 

 

 

参考:

http://www.ibm.com/developerworks/cn/linux/l-cn-ulimit/

 

http://download.oracle.com/docs/cd/E11882_01/install.112/e10857/toc.htm#BABFGGIE

 

http://www.blogjava.net/xiangjava/archive/2010/06/23/324091.html

 

http://blog.csdn.net/zhoukunta/archive/2009/12/02/4922250.aspx

 

http://www.groad.net/bbs/read.php?tid-1483-page-e.html

 

http://www.oracle.com/technology/global/cn/pub/articles/smiley-11gr1-install.html( 注意 ,这个有点老了,按他的不一定能安装成功 )

 

http://www.oracle.com/technology/global/cn/obe/11gr1_db/install/dbinst/dbinst.htm (这是官网的最准确,最新,比中文的要新)

 

 

OCA 认证考试指南 (1Z0-052):Oracle Database 11g Administration 1

John Watson 王跃利韩宏志 译 清华大学出版社

 

 

声明:本文档可以随意更改,但必须署名原作者

 

作者:凤凰舞者 qq:578989855

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn