时间:2021-07-01 10:21:17 帮助过:17人阅读
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 ,请选用对应版本的
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) [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 |