首页 > 代码库 > Install Oracle 10g on Red Hat Linux 5.3 Step by Step

Install Oracle 10g on Red Hat Linux 5.3 Step by Step

一、虚拟机配置
1、 虚拟机(VBox 4.3.12)
2、 配置虚拟机网卡网络,选择host-only,VirtualBox Host-Only Network网卡IP为设置为192.168.1.100


二、安装RedHat 5.3操作系统(序列号:9f3013459b745c13)
具体过程略,注意在自定义软件包那里选择现在配置,选取“开发工具”、“旧的开发工具”、“X工具”下所有包即可


三、系统环境配置
1.配置网卡
[root@zlm ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0,添加以下内容:
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
HWADDR=08:00:27:DA:1D:E9
IPADDR=192.168.1.199
NETMASK=255.255.255.0
NETWORK=192.168.1.0
DNS1=192.168.1.1
ONBOOT=yes


添加完需重启网卡:
[root@zlm ~]# service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]


2.修改hosts
[root@zlm ~]# vim /etc/hosts,去掉IPV6的内容,保证有127.0.0.1 localhost,在此基础上给主机另外分配一个ip地址,并取名。如,192.168.1.199zlm


3.禁用sendmail服务,加快启动速度
[root@zlm ~]# chkconfig sendmail --list
sendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@zlm ~]# chkconfig sendmail --off
--off: unknown option
[root@zlm ~]# chkconfig sendmail --list
sendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:off


4.修改为默认以命令行方式启动
[root@zlm ~]# vim /etc/inittab
查找“id:3:initdefault:”这一行,将其修改为“id:5:initdefault:”后保存退出


5.验证Oracle需要的包是否已经安装
[root@zlm ~]# rpm -q gcc make binutils setarch glibc libaio libXp openmotif compat-db compat-gcc compat-gcc-c++ compat-libstdc++
gcc-4.1.2-44.el5
make-3.81-3.el5
binutils-2.17.50.0.6-9.el5
setarch-2.0-1.1
glibc-2.5-34
libaio-0.3.106-3.2
package libXp is not installed
package openmotif is not installed
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


这里提示有6个包未安装,其实仅仅只是libXp、openmotif、compat-db没有被安装,显示“is not installed”,只是因为搜索不到而已(少了包名的一部分)
可以用rpm来安装,也可以通过yum方式安装,yum安装需要配置yum源,配置文件在/etc/yum.repos.d/目录下


如果择用rpm的方式来安装,通常可以在安装盘的Server目录中找到所需要的包,如果安装盘找不到需要的包,可以去http://rpm.pbone.net/下载


[root@zlm ~]# mount -t iso9660 /dev/cdrom /mnt/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@zlm ~]# cd  /mnt/Server
[root@zlm Server]# rpm -ivh openmotif-2.3.1-2.el5.i386.rpm 
warning: openmotif-2.3.1-2.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
        libXp.so.6 is needed by openmotif-2.3.1-2.el5.i386


由于包之间存在依赖关系,这里提示需要先装完libXp才能装openmotif


[root@zlm Server]# rpm -ivh libXp-1.0.0-8.1.el5.i386.rpm 
warning: libXp-1.0.0-8.1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:libXp                  ########################################### [100%]
[root@zlm Server]# rpm -ivh openmotif-2.3.1-2.el5.i386.rpm 
warning: openmotif-2.3.1-2.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:openmotif              ########################################### [100%]


配置本地源也很方便,创建一个源配置文件,并添加内容


[root@zlm Server]#touch /etc/yum.repos.d/public-yum-rhel5.repo
[root@zlm Server]#vim /etc/yum.repos.d/public-yum-rhel5.repo
[rhel5]
name = Red Hat Enterprise Linux 5.3 DVD
baseurl=file:///mnt/Server/
gpgcheck=0
enabled=1


配置完以后就可以直接yum install 安装需要的包了,而包之间没有依赖限制,会自动把有依赖性的包安装上


[root@zlm yum.repos.d]# yum install compat-db
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package compat-db.i386 0:4.2.52-5.1 set to be updated
--> Finished Dependency Resolution


Dependencies Resolved


================================================================================
 Package             Arch           Version               Repository       Size
================================================================================
Installing:
 compat-db           i386           4.2.52-5.1            rhel5           1.7 M


Transaction Summary
================================================================================
Install      1 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         


Total download size: 1.7 M
Is this ok [y/N]: n
Exiting on user Command
Complete!
[root@zlm yum.repos.d]#


[root@zlm yum.repos.d]# yum install compat-db compat-gcc-34 compat-gcc-34-c++ compat-libstdc++-33
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Parsing package install arguments
Package compat-db-4.2.52-5.1.i386 already installed and lazlm version
Package compat-gcc-34-3.4.6-4.i386 already installed and lazlm version
Package compat-gcc-34-c++-3.4.6-4.i386 already installed and lazlm version
Package compat-libstdc++-33-3.2.3-61.i386 already installed and lazlm version
Nothing to do
[root@zlm yum.repos.d]# 


提示compat-db、compat-gcc-34、compat-gcc-34-c++、compat-libstdc++-33这3个包已经装完了,这也就是为什么前面会列出并没有安装,因为用rpm -q查询必须完全匹配包的名字


再次确认一下,发现需要的这几个compat包确实已经安装好了


[root@zlm yum.repos.d]# rpm -qa |grep compat
avahi-compat-libdns_sd-0.6.16-1.el5
compat-glibc-headers-2.3.4-2.26
compat-gcc-34-3.4.6-4
compat-gcc-34-g77-3.4.6-4
compat-libstdc++-33-3.2.3-61
compat-libcom_err-1.0-7
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
compat-libf2c-34-3.4.6-4
compat-libstdc++-296-2.96-138
java-1.4.2-gcj-compat-devel-1.4.2.0-40jpp.115
java-1.4.2-gcj-compat-src-1.4.2.0-40jpp.115
compat-libgcc-296-2.96-138
compat-db-4.2.52-5.1
compat-gcc-34-c++-3.4.6-4
compat-glibc-2.3.4-2.26
[root@zlm yum.repos.d]# 


注意,如果缺少libXp-1.0.0-8.1el5包,就提示以下错误:


[root@zlm database]#./runInstaller
...
Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/OraInstall2007-09-25_10-54-49PM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at sun.security.action.LoadLibraryAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.NativeLibLoader.loadLibraries(Unknown Source)
at sun.awt.DebugHelper.<clinit>(Unknown Source)
at java.awt.Component.<clinit>(Unknown Source)
 
四、为Oracle 10g配置Linux
1.检查主机配置(10g要求1G以上内存,11g为1.5G):
--内存
[root@zlm ~]# grep MemTotal /proc/meminfo
MemTotal:      1035244 kB


--磁盘
[root@zlm ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      7.7G  2.7G  4.6G  37% /
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 506M     0  506M   0% /dev/shm
/dev/hdc              2.9G  2.9G     0 100% /mnt


2.创建oracle用户和用户组
[root@zlm ~]# groupadd oinstall
[root@zlm ~]# groupadd dba
[root@zlm ~]# useradd -g oinstall -G dba oracle


3.查看oracle用户信息并创建密码
[root@zlm ~]# id oracle
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)


[root@zlm ~]# passwd oracle
Changing password for user oracle.
New UNIX password: 
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.


4.创建安装目录和数据存放目录
[root@zlm ~]# mkdir -p /u01/app/oracle/product/10.2.0/db_1
[root@zlm ~]# chown -R oracle:oinstall /u01
[root@zlm ~]# chmod -R 775 /u01


5.配置Linux内核
[root@zlm ~]# cat >> /etc/sysctl.conf << EOF
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
EOF


Linux主要内核参数说明:


kernel.shmmax =2147483648 --该参数定义了共享内存段的最大尺寸(以字节为单位)
kernel.shmmax----SHMMAXAvailable physical memory Defines the maximum allowable sizeof one sharedmemory segment. The SHMMAX setting should be largeenoughto hold the entire SGA in one shared memory segment. A low settingcancause creation of multiple shared memory segments which may leadtoperformance degradation.
shmmax是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,shmmax设置应该足够大,能在一个共享内存段下容纳下整个的SGA,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。


shmmax仅仅是在共享内存段被创建的时候用来比较的一个数字,当共享内存段被一个进程(Process)创建,操作系统检查是否被要求的共享内存段的值大于shmmax的值,如果是,那么将会抛出一个错误。这个时候系统会创建另外的一个或多个共享内存段满足进程的需求。一般来说,共享内存段个数和系统性能没有太直接的关系,也不会对性能产生太大的影响。


SteveAdams在他的小册子中说过,在实例启动以及ServerProcess创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。这意味着如果你的程序不是经常Create Processes(以及Destroy Them),性能方面就不是考虑的问题。


当然Oralce的建议是希望一个大的共享内存段能容纳整个SGA,其值应>=sag_max_size初始化参数的大小,还要不小于物理内存的一半,这样在任何时候都不会有甚至轻微的性能下降的隐患。Oracle安装文档建议32Bit Linux系统设置shmmax为32Bit最大的限制值(setting shmmax to the 32-bit number limit),也就是4G 。


所以一般来说,1-4G 的物理内存,可以直接设置shmmax为最大物理内存即可,那么SGA肯定在一个共享内存段中,32Bit Linux系统物理内存大于4G的设置为4G即可。
总之,一般设置shmmax >= SGA(32Bit 系统是否支持到1.7G以上SGA 需要注意),缺省为32M,如果是64Bit的Linux操作系统,shmmax设置为>SGA_MAX_SIZE即可。


ipcs -sa 可以看到共享内存段个数
在11g中,如果SGA_TARGET设置了具体的值,那么共享内存段的个数会比设置SGA_TARGET=0,即采用MEMORY_TARGET参数值来管理SGA时用的共享内存段数要多,理论上讲,更少得内存段对于性能来说是要好一些的,所以11g也推荐设置MEMORY_TARGET参数来自动化管理SGA


kernel.shmmni = 4096 --设置系统范围内共享内存段的最大数量
kernel.shmmni----shmmni 内核参数是共享内存段的最大数量(注意这个参数不是shmmin,是shmmni, shmmin 表示内存段最小大小 )。shmmni 缺省值4096 。
此值也是在系统中可以启动的Oracle实例的最大数量,通常不需要更改,因为显然在生产环境下,一个服务器上同时启动的实例个数达不到这个数量。


kernel.shmall = 2097152 --表示系统任意时刻可以分配的所有共享内存段的总和的最大值(以页为单位)。
kernel.shmall----kernel.shmall 参数是控制共享内存页数。
Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB/4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求(几乎是原来设置2097152的两倍)。这时可以将shmmax参数调整到16G了,同时可以修改SGA_MAX_SIZE 和SGA_TARGET为12G(75%左右,当然也可以是2G~14G 等,还要协调PGA参数及OS等其他内存使用,不能设置太满,比如16G)。
其值应不小于shmmax/page_size.缺省值就是2097152,如果服务器上运行的所有实例的SGA总和不超过8GB(通常系统可分配的共享内存的和最大值为8GB),通常不需要修改。反之,只有SGA用到的实际内存超过8G,才需要调大该参数。


kernel.sem = 250 32000100 128 --表示设置的信号量(共享内存时,内存数据交互时会产生信号量)
fs.file-max =65536 --表示一个进程可以打开的文件句柄的最大数量.
net.ipv4.ip_local_port_range = 1024 65000 --专用服务器模式下与用户进程通信时分配给用户的端口区间
net.core.rmem_default=262144 --默认接收缓冲区大小
net.core.rmem_max=262144 --接收缓冲区最大值
net.core.wmem_default=262144 --默认的发送缓冲区大小
net.core.wmem_max=262144 --发送缓冲区最大值
以上四个值的设置是Oracle安装时推荐的.(应在安装完后把最大值改为524288)

6. 使Linux内核设置生效
[root@zlm ~]# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144


7.设置shell限制
[root@zlm ~]# cat >> /etc/security/limits.conf << EOF
oracle       soft    nproc   2047
oracle       hard    nproc   16384
oracle       soft    nofile  1024
oracle       hard    nofile  65536
EOF


[root@zlm ~]# cat >> /etc/pam.d/login <<EOF
session    required     /lib/security/pam_limits.so
EOF


8.关闭防火墙
[root@zlm ~]# cat >> /etc/selinux/config << EOF
SELINUX=disabled
EOF


9.修改版本号(RHEL5.3可无需做此步骤,经测试不修改也可PASS)
因为Oracle 10g官方只支持到RHEL5为止,所以需要在root用户下运行
[root@zlm ~]# vim /etc/redhat-release
将 Red Hat Enterprise Linux Server release 6 (Tikanga) 改为Red Hat Enterprise Linux Server release 5 (Tikanga) 


10. 配置oracle用户环境变量.bash_profile文件
/home/oracle下的.bash_profile这个文件为隐藏文件;
[root@zlm ~]#vim /home/oracle/.bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=ora10g
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
unset USERNAME
umask 22


umask用于指定在建立文件时预设的权限掩码,权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
设要生成的文件以-rw-r--r--这样的权限字出现,即真实权限用八进制表示为644,则被666基数减得022,022即掩码。使用umask 022。
注意:033效果与022一样,假设使用033掩码进行设置,则真实权限应为633即-rw-r-xr-x,但前提规定文件不生成x位,所以文件的权限最终将以rw-r--r--出现。
设要生成的目录权限以drwxr-xr-x这样的权限字出现,即真实权限用八进制表示为755,则被基数为777的权限字相减后,得掩码022。则使用umask 022进行设置。
总结
1.文件基数为666,目录为777,即文件无设x位,目录可设x位。
2.chmod设哪个位,哪个位就有权限,而umask是设哪个位,则哪个位上就没权限。


12.使环境变量生效
[root@zlm ~]# source /home/oracle/.bash_profile
或者
[root@zlm ~]# . /home/oracle/.bash_profile
或者
[root@zlm ~]# su - oracle
[oracle@zlm ~]# exit


五、安装Oracle 10g数据库(推荐使用Xmanager的Xshell来安装)


1.将软件包copy到/tmp目录下,推荐使用Xmanager的Xftp


2.解压软件包


[root@zlm ~]# cd /tmp
[root@zlm tmp]# tar -zxvf 10201_database_linux32.tar.gz
[root@zlm tmp]# unzip 10201_database_linux32
[root@zlm tmp]# chown –R oracle:oinstall /tmp/database
[root@zlm tmp]# chmod –R 775 /tmp/database
[root@zlm tmp]# export DISPLAY=:0.0
[root@zlm tmp]# xhost +
access control disabled, clients can connect from any host
[root@zlm tmp]# su – oracle
[oracle@zlm ~]# cd /tmp/database
[oracle@zlm ~]# ./runInstaller


3.安装过程(略)


安装完成之后,再执行两个脚本就可以了,使用root用户来执行这两个脚本:
# /u01/app/oracle/oraInventory/orainstRoot.sh  --指定oraInventory目录的所有者和权限
# /u01/app/oracle/product/10.2.0/db_1/root.sh  --copy三个脚本到/usr/local/bin目录下(coraenv、oraenv、dbhome)


注意是root用户执行,而不是oracle用户

[root@zlm ~]# /u01/app/oracle/oraInventory/orainstRoot.sh 
Changing permissions of /u01/app/oracle/oraInventory to 770.
Changing groupname of /u01/app/oracle/oraInventory to oinstall.
The execution of the script is complete
[root@zlm ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh
Running Oracle10 root.sh script...


The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/10.2.0/db_1


Enter the full pathname of the local bin directory: [/usr/local/bin]: 
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...




Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
[root@zlm ~]# 


4.验证组建是否安装成功


(1)切换到oracle用户进入SQL操作界面:
Sqlplus / as sysdba 或 sqlplus / nolog
SQL>


(2)查看是否可以进入Web管理界面(OEM)
执行命令:emctl status dbconsole
启动web界面:emctl start dbconsole
停止web界面:emctl stop dbconsole
默认安装完oracle之后就已经启动OEM

在浏览器输入以下地址可以分别进入OEM和iSQL*Plus
http://zlm:1158/em

iSQL*Plus URL:
http://zlm:5560/isqlplus

iSQL*Plus DBA URL:

http://zlm:5560/isqlplus/dba


Install Oracle 10g on Red Hat Linux 5.3 Step by Step