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 时选择开发工具一览选项。其次,安装centos 的swap 要大约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 用户的身份执行下列命令:
cat >> /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
eof
cat >> /etc/pam.d/login
session required /lib/security/pam_limits.so
eof
下面参数的意义,可参考 http://tech.ccidnet.com/art/737/20080115/1343369_1.html
修改 bash 和 ksh 的默认配置文件以及 cshell 的默认登录脚本。
cat >> /etc/profile
if [ /$user = oracle ]; then
if [ /$shell = /bin/ksh ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
eof
cat >> /etc/csh.login
if ( /$user == oracle ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
eof
我的安装设置了两次 shell 环境。这里有《精通 shell 编程》第二版的一段话,可以有助于理解:
korn shell (ksh )的初始化过程是这样的:
1.ksh 检查文件 /etc/profile 是否存在
2. 如果存在,ksh 就读取该文件,否则,跳过
3.ksh 检查主目录下的文件.profile 是否存在。
4. 如果存在,ksh 就读取该文件,否则,跳过
5.ksh 检查主目录下的文件.kshrc 是否存在。
6. 如果存在,ksh 就读取该文件,否则,跳过。
这些步骤都执行完后,就出现提示符了,ksh 默认提示符是$.
而 bourne again shell (bash )的初始化过程是这样的:
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