您的位置:首页 > 数据库 > Oracle

Oracle11gR2 在 Linux CentOS 5.3,RHEL 5.4 上的安装 <转>

2013-06-17 17:24 302 查看
Oracle11gR2 在 Linux CentOS 5.3,RHEL 5.4 上的安装
作者: Zinc Chen 邮箱: zinc.chen@live.cn

一. 安装操作系统
操作平台 :
VMWARE 7.0.0 build-197124+CentOS-5.4-x86_64-bin-DVD.iso
数据库版本 :
Oracle11gR2 针对 32/64 位 Linux ,请选用对应版本的 Oracle
下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-linx8664soft-100572.html 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

辅助软件 :
SecureCRT( 用于远程执行命令 ) 、 winscp( 用于远程文件传输 )
要求内存不小于 1G ; / 更新:测试机不满足要求,但是在安装的时候可以选择忽略
在内存小于 4G , SWAP 应该是内存的 1.5 倍;
内存 4 到 16G , SWAP 和内存相同大小即可
内存超过 16G , SWAP 是 16G ;
( 我的虚拟机物理内存设置为 2G , SWAP 设置为 3G) ;
由于 11gR2 对于共享内存要求变大,因此系统共享内存应该大于 512* 进程数;

如果共享内存不足的话,会造成 ORA-845 或 ORA-1078 错误;

要求 /tmp 分区不少于 400M ,安装目录应大于 4G ;
4. 我的虚拟机配置情况:
宿主配置为四核心 Q9550, 内存 8G DDR2 800 的,主板 Intel G45 ,硬盘采用 320G*3 前段组 RAID0, 后段组 RAID5 ,操作系统为 Vista 64bit SP2
虚拟操作系统配置: CPU 双核心,内存 2048G ,硬盘 160G
硬盘分区情况如下:
SWAP 3072M <- 交换分区(根据内存大小按照 3 进行计算)
/boot 300M <- 启动分区(可以设置为 100M ,但是为了内核升级方便,建议使用 300M )
/ 15G <- 系统主目录(仅仅用于安装操作系统)
/ora 15G
<-oracle 系统安装分区(仅仅用于 Oracle 应用程序)
/oradata 90G <-oracle 数据分区(仅仅用于存放 Oracle 数据,根据硬盘大小,约大约好)
/orabak 30G <- 备份分区(存放每日的数据备份,请根据备份策略与数据量进行合理计算)
/更新:实际使用中,先划分前面的分区,然后根据硬盘剩余对后面的空间进行划分,建议采用 LVM2 对分区进行管理,这样可以在线调整分区大小,灵活性比较高。
5. 默认服务器开启了 SSH ,在配置防火墙的时候注意检查一下,这样可以使用 SecureCRT 连接进入控制,使用 FileZilla 传输文件;
6. 安装系统的时候,可以直接选择依赖包,以解决 Oracle 安装的时候依赖关系,当然也可以在安装完基本系统以后再补充安装依赖包,建议采用后者,以避免操作太多导致混乱;
7. VM 中安装的话,需要安装 VM 相关的驱动 ( 点击 VM->Install
VMware Tools) :
进入光盘路径: mount
/media/cdrom /dev/cdrom
cd /media/cdrom
安装 VMwareTools : rpm –ivh VMwareTools-7.8.6-185404.i386.rpm
初始化图形界面: /usr/bin/vmware-config-tools.pl
重新启动 X :
ctrl+alt+backspace
弹出 VM 的驱动光盘,挂载默认的系统盘,后面要用

二.配置系统,准备安装
检查硬件情况 ( 虚拟机情况 ) :
[root@ora ~]# grep "model name" /proc/cpuinfo
model name : Intel(R)
Core(TM)2 Quad CPU Q9550 @ 2.83GHz
model name : Intel(R)
Core(TM)2 Quad CPU Q9550 @ 2.83GHz
[root@ora ~]# grep MemTotal /proc/meminfo
MemTotal: 2075560 kB
[root@ora ~]# grep SwapTotal /proc/meminfo
SwapTotal: 3113340 kB
[root@ora ~]# free
total used free shared
buffers cached
Mem: 2075560 1000572
1074988 0 59336 814732
-/+ buffers/cache: 126504 1949056
Swap: 3113340 0
3113340
[root@ora ~]# df -k /dev/shm
文件系统 1K- 块 已用 可用 已用 % 挂载点
tmpfs
1037780 0 1037780
0% /dev/shm
[root@ora ~]# df -k /tmp
文件系统 1K- 块 已用 可用 已用 % 挂载点
/dev/sda5
9920592 3165436 6243088
34% /

检查软件情况 (CentOS 5.3 的情况, RHEL 无需改动 ) :
[root@ora ~]# cat /proc/version
Linux version 2.6.18-128.el5 (mockbuild@builder16.centos.org) (gcc
version 4.1.2 20080704 (Red Hat 4.1.2-44)) #1 SMP Wed Jan 21 10:44:23 EST
2009
[root@ora ~]# uname -a
Linux ora.libcms.net 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST 2009
i686 i686 i386 GNU/Linux
[root@ora ~]# more /etc/issue
CentOS release 5.3 (Final)
Kernel \r on an \m
[root@ora ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1
ora.libcms.net ora localhost.localdomain localhost
::1
localhost6.localdomain6 localhost6

将 CentOS 系统伪装成 RedHat
Vi /etc/redhat-release
修改为 :
Red Hat Enterprise Linux Server release 5.3 (Tikanga)

#cat /proc/partitions 查看现在分区
#cd /mnt 进入挂载目录
#mkdir cdrom 创建光盘挂载区
#mkdir usb 创建U盘挂载区
#mount /dev/sdb /mnt/usb 例如将sdb设备挂载到/mnt/usb目录下
#umount /mnt/usb 使用完毕后将设备卸载

linux的硬件设备在/dev目录下,光驱也是其中。

/dev/cdrom表示光驱,挂载光驱的方法如下(以root身份):

mkdir /mnt/cdrom

mount -t auto -o ro /dev/cdrom
/mnt/cdrom #不加参数也能自动挂上。

以下是操作的屏幕复制内容:

linux@cdyemail:/$ ls /mnt
#查看mnt下面有没有cdrom目录 ,这个是随意的目录。
cdrom iso usb winc wind
linux@cdyemail:/$ mount
/dev/cdrom /mnt/cdrom #挂载发现没有权限
mount: 只有 root 才能进行此操作
linux@cdyemail:/$ su #切换到root用户,也可以用sudo
来取得root权限。
密码:
root@cdyemail:/# mount -t auto -o
ro /dev/cdrom /mnt/cdrom #-t auto类型自动, -o ro只读模式

root@cdyemail:/# ls -l /mnt/cdrom #查看光盘内容

root@cdyemail:/# umount
/mnt/cdrom #删除挂载的光驱
root@cdyemail:/# eject /dev/cdrom
#弹出光驱
root@cdyemail:/#

附:
对于iso镜像文件可以进行挂载
mount -t iso9660 -o loop iso文件 /mnt/iso

你想安装:gcc-4.1.2-46.SEL5_4.2.i386.rpm的软件包,需要先安装相关的软件包,这都有依赖性。
如果,你只想安装gcc-4.1.2-46.SEL5_4.2.i386的软件包的话,就多加一个 --nodeps 的参数就好了
如:rpm -ivh
--nodeps
gcc-4.1.2-46.SEL5_4.2.i386.rpm
这就无需依赖其他的安装包了
rpm -ivh gcc-c++-4.1.2-46.el5.x86_64.rpm --nodeps --force
安装系统的依赖包 ( 注意对应版本 , 安装系统的时候如果已经处理,这里就无需要安装了 )
// 下面是 redhat 5.4 64bit 版本的命令
cd /media/cdrom
cd Server
rpm -ivh binutils-2.17.50.0.6-12.el5.x86_64.rpm
rpm -ivh compat-libstdc++-33-3.2.3-61.x86_64.rpm
rpm -ivh compat-libstdc++-33-3.2.3-61.i386.rpm
rpm -Uvh elfutils-libelf-devel-static-0.137-3.el5.x86_64.rpm --nodeps
rpm -ivh elfutils-libelf-devel-0.137-3.el5.x86_64.rpm
rpm -ivh elfutils-libelf-0.137-3.el5.x86_64.rpm
rpm -Uvh elfutils-devel-static-0.137-3.el5.x86_64.rpm --nodeps
rpm -ivh elfutils-libs-0.137-3.el5.x86_64.rpm
rpm -ivh elfutils-devel-0.137-3.el5.x86_64.rpm
rpm -ivh glibc-headers-2.5-42.x86_64.rpm
rpm -ivh glibc-2.5-42.i686.rpm
rpm -ivh glibc-devel-2.5-42.i386.rpm
rpm -ivh glibc-2.5-42.x86_64.rpm
rpm -ivh glibc-common-2.5-42.x86_64.rpm
rpm -ivh glibc-devel-2.5-42.x86_64.rpm
rpm -ivh gcc-4.1.2-46.el5.x86_64.rpm
rpm -ivh gcc-c++-4.1.2-46.el5.x86_64.rpm
rpm -ivh kernel-headers-2.6.18-164.el5.x86_64.rpm
rpm -ivh ksh-20080202-14.el5.x86_64.rpm
rpm -ivh libaio-0.3.106-3.2.i386.rpm
rpm -ivh libaio-0.3.106-3.2.x86_64.rpm
rpm -ivh libaio-devel-0.3.106-3.2.i386.rpm
rpm -ivh libaio-devel-0.3.106-3.2.x86_64.rpm
rpm -ivh libgcc-4.1.2-46.el5.i386.rpm
rpm -ivh libgcc-4.1.2-46.el5.x86_64.rpm
rpm -ivh libgomp-4.4.0-6.el5.x86_64.rpm
rpm -ivh libstdc++-4.1.2-46.el5.x86_64.rpm
rpm -ivh libstdc++-devel-4.1.2-46.el5.x86_64.rpm
rpm -ivh make-3.81-3.el5.x86_64.rpm
rpm -ivh sysstat-7.0.2-3.el5.x86_64.rpm
rpm -ivh unixODBC-2.2.11-7.1.i386.rpm
rpm -ivh unixODBC-devel-2.2.11-7.1.i386.rpm
rpm -ivh unixODBC-2.2.11-7.1.x86_64.rpm
rpm -ivh unixODBC-devel-2.2.11-7.1.x86_64.rpm

增加必须要的用户组与用户
[root@ora ~]# groupadd oinstall
[root@ora ~]# groupadd dba
[root@ora ~]# adduser -g oinstall -G dba oracle
[root@ora ~]# 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.
[root@ora ~]# df -h
[root@ora ~]# mkdir -p /ora/app/oracle/product/
[root@ora ~]# chown -R oracle:oinstall /ora
[root@ora ~]# chmod -R 775 /ora
[root@ora ~]# chown -R oracle:oinstall /oradata
[root@ora ~]# chmod -R 775 /oradata
[root@ora ~]# chown -R oracle:oinstall /orabak
[root@ora ~]# chmod -R 775 /orabak

修改内核参数
[root@ora ~]#vi /etc/sysctl.conf
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
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
fs.aio-max-nr= 1048576
[root@ora ~]#/sbin/sysctl -p
[root@ora ~]#/sbin/sysctl -a

为 oracle 用户设置 Shell 限制
[root@ora ~]# vi /etc/security/limits.conf
增加:
oracle soft nproc
2047
oracle hard nproc
16384
oracle soft nofile
1024
oracle hard nofile
65536
vi /etc/pam.d/login file
增加:
session required pam_limits.so\
vi /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
vi /etc/csh.login
增加:
if ( $USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
endif

修改用户的启动脚本
su oracle
echo $SHELL
cd /home/oracle
vi .bash_profile
增加如下内容:
ORACLE_BASE=/ora/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
ORACLE_HOME_LISTNER=$ORACLE_BASE/product/11.2.0/dbhome_1
ORACLE_SID=orcl
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_BASE ORACLE_HOME ORACLE_HOME_LISTNER ORACLE_SID PATH
ORACLE_TERM=xterm
export ORACLE_TERM
TNS_ADMIN=$ORACLE_HOME/network/admin
export TNS_ADMIN
#set the user languages
#NLS_LANG="SIMPLIFIED CHINESE_CHINA".GBK
#LC_CTYPE=zh_CN.GBK
#LC_ALL=zh_CN.UTF8
#LANG=zh_CN.GBK
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
CLASSPATH=$ORACLE_HOME/jdk/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG LC_CTYPE LC_ALL LANG
LD_LIBRARY_PATH CLASSPATH
umask 022
载入启动脚本:
source .bash_profile

上传 oracle 的安装文件到服务器,采用 SFTP 协议传输。
以 oracle 用户上传之 /ora 文件夹
[oracle@ora ora]$ unzip linux_11gR2_database_1of2.zip
[oracle@ora ora]$ unzip linux_11gR2_database_2of2.zip

二.安装 Oracle11gR2
cd /ora/database
./runInstaller 开始安装 .

选择高级安装 , 进行自定义安装
在 CentOS 的安装中 , 提示 pdksh 包找不到是正常现象, redhat5 以上的版本已经更名 pdksh 为 ksh 包了,前面我们已经安装了,所以可以忽略
在 CentOS 的安装中 , 会出现一个关于 oraInventory 目录的警告 , 点击 OK, 不用理会继续即可 , 在随后的窗口中将 /oraInventory 修改为 /ora/app/oraInventory

随后参数都是默认 , 在安装中会弹出一个要求执行
/ora/app/oraInventory/oraIinstRoot.sh 和 /ora/app/oracle/product/11.2.0/dbhome_1/root.sh 的提示框 , 可在命令行中 , 以 ROOT 用户执行这两个文件 , 进入 End of installtion 窗口 , 安装结束 .

[oracle@test database]$ ./runInstaller

正在启动 Oracle Universal Installer...
检查临时空间: 必须大于 120 MB。 实际为
117329 MB 通过

检查交换空间: 必须大于 150 MB。 实际为 1983 MB 通过

检查监视器: 监视器配置至少必须显示 256 种颜色

>>> 无法使用命令 /usr/bin/xdpyinfo 自动检查显示器颜色。请检查是否设置了 DISPLAY 变量。 未通过 <<<<
未通过某些要求检查。必须先满足这些要求,
然后才能继续安装,那时将重新检查这些要求。
是否继续? (y/n)
y

原因:

当时是通过vnc登录的root,然后通过root切换到oracle用户的,注销通过oracle登录就可以!
三.连接测试
如果启动有问题lsnrctl: error while loading shared libraries:
/home/oracle/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1: cannot
restore segment prot after reloc: Permission denied
执行
semanage fcontext -a -t textrel_shlib_t
/ora/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1

restorecon -R -v
/ora/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1
启动监听器: lsnrctl start
登陆: sqlplus "/as sysdba"
启动数据库: startup
关闭数据库: shutdown
关闭监听器: lsnrctl stop
启动 EM : emctl start dbconsole
关闭 EM : emctl stop dbconsole
启动 iSQL*Plus : isqlplusctl start
关闭 iSQL*Plus : isqlplusctl stop
如果希望让服务器自动启动,那么需要修改 /etc/oratab 中:
orcl:/ora/app/oracle/product/11.2.0/dbhome_1:Y

四.添加系统服务
作为 root 用户创建一个叫做 /etc/init.d/dbora 的文件,包括下面的内容:
#!/bin/sh
# description: Oracle auto start-stop script.
# chkconfig: - 20 80
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/ora/app/oracle/product/11.2.0/dbhome_1

ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
su - $ORA_OWNER -c "emctl start dbconsole"
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
su - $ORA_OWNER -c "emctl stop dbconsole"
;;
'restart')
$0 stop
$0 start
;;
esac

修改权限为 750
chmod 750 /etc/init.d/dbora

设置服务自动启动
chkconfig --level 345 dbora on

如果你遇上: cannot restore segment prot after reloc: Permission denied, 应该是 SELinux 的问题,可以考虑把它关闭。

四.添加自动备份服务
作为 root 用户创建一个叫做 /orabak/backup.sh 的文件,包括下面的内容:
#!/bin/bash

source /home/oracle/.bash_profile
# 初始化 Oracle 数据库

rq=$(date +%Y%m%d)
# 把当天日期赋予变量 rq

rm /orabak/backup/full_$rq.dmp
# 清空旧文件

exp system/springland
file=/orabak/backup/full_$rq.dmp
log=/orabak/backup/full_$rq.log
full=y compress=y

修改权限为 750
chmod 750 /orabak/backup.sh

设置 Cron 计划自动执行
nano /orabak/backup.txt
30 23 * * * /orabak/backup.sh
crontab –u root /orabak/backup.txt
crontab –l
/etc/init.d/crond restart

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: