欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

RHEL5X86-64上安装Oracle11gR2示例与总结

程序员文章站 2022-05-02 20:27:16
进入oracle dba行业也有好几年了,但是说到安装oracle的经验,我还真不是特别多,印象中刚开始每次安装都有点磕磕碰碰,随着接触oracle的时间越来越长,各方面的原理、机...
进入oracle dba行业也有好几年了,但是说到安装oracle的经验,我还真不是特别多,印象中刚开始每次安装都有点磕磕碰碰,随着接触oracle的时间越来越长,各方面的原理、机制也都有一定的了解后,现在安装oracle已经很少会遇到问题了。基本上我把自己安装oracle的方式可以归为下面三个阶段 刚接触和学习oracle,安装完全没有头绪,只能按照网上或者书上有截图的方式一步一步照样安装,出错后,只能协助,然后重新安装接触oracle一段时间以后,安装的基本原理、步骤也都了解了,一般都是再网上搜索一个安装示例(不需要多复杂),然后进行安装(或者是以前保存的安装宝典文档,以此进行安装),这个阶段,总会碰到一些莫名其妙的错误,对错误大部分也处于畏惧信息近两年开始,每次安装oracle,我都会对照oracle mos上的安装文档或者官方文档一步一步操作,这个阶段,安装时很少会出现错误,即使出现错误,也都能够解决(搜mos,google等),心态平和 现在回过头来总结,安装时出现错误的情况,一般都是没有按照官方的操作流程才会导致,因此强烈建议,安装oracle时,能够参考官方文档的操作流程,这些安装文档,至少一遍,肯定能够帮助你避免一些安装时莫名其妙的错误。
我把安装oracle软件和安装一个普通的软件进行对比,发现其实两者之间本质上根本没有多少区别,只是很多时候我们没有关注而已,如下
序号 安装oracle软件的需求 安装普通软件的需求 备注
1 符合要求的操作 符合要求的操作系统 任何软件的运行都依赖操作系统,因此,任何软件都需要运行符合要求的操作系统中
2 满足条件的文件系统空间
特别注意/tmp目录空间
满足条件的文件系统空间 一般软件都需要占用一定的空间,因此,任何软件的安装,都需要满足条件的文件系统空间
3 物理内存和虚拟内存
特别注意虚拟内存的要求
物理内存和虚拟内存 任何软件的运行和安装都不能离开内存
4 依赖(rpm包)
这一步对linux特别重要
肯定存在,只是我们可能没有注意 任何软件都是代码构成,起码得有能解析和运行这些代码的组件。这也算是一种依赖组件
5 有意义的主机名 有意义的主机名 虽然软件的安装、运行不依赖主机名,但是,一个有意义的主机名会为你后续省略很多麻烦事
6 网络设置
主要为/etc/hosts
网络设置(需要网络连接的软件) 如果该软件需要被其他机器连接,一般都需要配置网络,不过我们很少关注而已
7 内核参数设置,配置软件运行的一些特性,例如,最大可使用共享内存段大小等等 肯定也有,只是我们一般很少关注到,一般都是默认。  
8 创建软件运行的专属用户,一般为oracle 一般也都需要,windows除外 一般我们都会为软件创建一个专属的运行用户
9 给运行软件的用户添加限制 一般也都存在,只是我们很少注意 肯定都存在,我们不可能让一个软件发起几千个进程什么的,这就是一个限制
10 赋予运行软件的用户一些权限 一般也都存在,只是我们很少注意 软件的运行肯定需要一些权限,所以,我们一般都会赋予它一些特权
11 给运行oracle的用户添加一些自己的环境变量 一般都存在,只是我们很少注意 例如,每个软件的运行必须有path变量,只是很多时候我们没有关注
12 特定的需求,特定的配置,例如rac下的ssh互信什么的 如果软件有一些特殊特性,那肯定一般会存在一些特殊需求  


另外几点 对于新安装的oracle,建议先安装补丁或者升级包,然后再创建,避免安装完后还需要升级数据库尽量使用custom database这样的选项来创建数据库,只安装必要的组件注意为数据库选择一个正确的字符集(一旦选择,基本不可更改)为数据库设置一个符合你环境的合理参数
下面是我在linux 5.6 上安装oracle 11gr1的一次工作总结(非rac环境),主要参考mos文档:master note for oracle database server installation (文档 id 1156586.1),下面是安装步骤 一、操作系统与oracle版本验证检查 检查当前的linux版本是否能安装对应的oracle版本,例如,rhel 5上安装oracle 11gr2是否经过官方验证,具体每个linux版本对应的验证,详见mos上的文档 certification information for oracle database on linux x86-64 (文档 id 1304727.1)
我们待安装的操作环境如下,可看到满足需求 内核版本:linux localhost.localdomain 2.6.18-238.el5 #1 smp thu jan 13 15:51:15 est 2011 x86_64 x86_64 x86_64 gnu/linux 操作系统版本:rhel 5.6
二、硬件需求检查(来自mos)

a.) at least 1.0 gb (1024mb) of physical ram. recommended, 2gb or more.
b.) swap disk space proportional to the system's physical memory as follows:

ram swap space
between 1 gb and 2 gb 1.5 times the size of ram
between 2 gb and 16 gb equal to the size of ram
more than 16 gb 16 gb

c.) 1024 mb of disk space (and less than 2tb of disk space) in the /tmp directory.

d.) approximately 4.4 gb of local disk space for the database software.
e.) approximately 1.7 gb of disk space for a preconfigured database that uses file system storage (optional)

我们待安装的环境数据如下,可以看到满足硬件方面的需求(内存16g,交换空间18g)

[root@localhost ~]# free -m
total used free shared buffers cached
mem: 16021 10078 5942 0 81 879
-/+ buffers/cache: 9117 6903
swap: 18015 0 18015
三、软件需求检查
(1)rhel 5.2或者更高版本,内核版本必须是2.6.18-92或者以上 (2)操作系统组件需求检查(rpm包),下面这些rpm必须安装 binutils-2.17.50.0.6-6.el5 (x86_64)
compat-libstdc++-33-3.2.3-61 (x86_64)
compat-libstdc++-33-3.2.3-61 (i386)
elfutils-libelf-0.125-3.el5 (x86_64)
glibc-2.5-24 (x86_64)
glibc-2.5-24 (i686)
glibc-common-2.5-24 (x86_64)
ksh-20060214-1.7 (x86_64)
libaio-0.3.106-3.2 (x86_64)
libaio-0.3.106-3.2 (i386)
libgcc-4.1.2-42.el5 (i386)
libgcc-4.1.2-42.el5 (x86_64)
libstdc++-4.1.2-42.el5 (x86_64)
libstdc++-4.1.2-42.el5 (i386)
make-3.81-3.el5 (x86_64)
unixodbc-2.2.14 (x86_64)
unixodbc-2.2.14 (i386)
unixodbc-devel-2.2.14 (x86_64) unixodbc-devel-2.2.14 (i386) elfutils-libelf-devel-0.125-3 (x86_64)
elfutils-libelf-devel-static-0.125-3.el5.x86_64.rpm
gcc-4.1.2-42.el5 (x86_64)
gcc-c++-4.1.2-42.el5 (x86_64)
glibc-devel-2.5-24 (x86_64)
glibc-devel-2.5-24 (i386)
glibc-headers-2.5-24 (x86_64)
kernel-headers-2.6.18-92 (x86_64)
libgomp-4.1.2-42 (x86_64)
libstdc++-devel-4.1.2-42 (x86_64)
libaio-devel-0.3.106-3.2 (x86_64)
libaio-devel-0.3.106-3.2 (i386)
sysstat-7.0.2-1 (x86_64) kernel-headers-2.6.18-92.el5.x86_64.rpm
libgomp-4.1.2-42.el5.x86_64.rpm 注意: 64位系统中需要部分32位rpm包,检查系统时注意包的位数 通过下面的命令能查看软件包架构及位数 rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep binutils rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep compat-libstdc++ rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep elfutils-libelf rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep glibc rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep glibc-common rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep ksh rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep libaio rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep libgcc rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep libstdc++ rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep make rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep elfutils-libelf-devel rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep gcc rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep gcc-c++ rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep glibc-devel rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep glibc-headers rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep kernel-headers rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep libgomp rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep libstdc++-devel rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep libaio-devel rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep sysstat rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep elfutils-libelf-devel-static
rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep kernel-headers
rpm -qa --queryformat "%{name}-%{version}-%{release} (%{arch})\n" | grep libgomp
安装rpm包的方法类似如下(缺失的包可以通过安装光盘中找到) [root@ localhost rpmpgk]# rpm -ivh libaio-devel-0.3.106-5.i386.rpm warning: libaio-devel-0.3.106-5.i386.rpm: header v3 dsa signature: nokey, key id e8562897 preparing... ########################################### [100%] 1:libaio-devel ########################################### [100%] [root@ localhost rpmpgk]# rpm -ivh libaio-devel-0.3.106-5.x86_64.rpm warning: libaio-devel-0.3.106-5.x86_64.rpm: header v3 dsa signature: nokey, key id e8562897 preparing... ########################################### [100%] 1:libaio-devel ########################################### [100%] .....省略一部分rpm安装过程.........
四、创建用户、用于运行oracle软件 groupadd oinstall groupadd dba useradd -g oinstall -g dba oracle passwd oracle 备注 1.如果是rac环境,建议所有的用户和组的id都一致,可避免一些安装问题 2.对于运行oracle软件的用户,没有明确归档必须为"oracle"用户,可以选择其它用户名,其它用户名运行oracle软件更加安全。
五、修改主机名(符合具体环境) 通过hostname命令修改(这种方式重启后失效)修改/etc/sysconfig/network文件中的hostanme参数,永久生效修改/etc/hosts文件,修改为新的主机名 具体步骤如下: [root@localhost /]# hostname javadb [root@localhost /]# hostname javadb [root@localhost /]# cp /etc/sysconfig/network /etc/sysconfig/network0527 [root@localhost /]# cp /etc/hosts /etc/hosts0527 [root@javadb ~]# cat /etc/sysconfig/network networking=yes networking_ipv6=no hostname=javadb [root@javadb ~]# cat /etc/hosts # do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 javadb localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 xx.xx.xx.xx javadb
六、操作系统环境设置 (1)修改/etc/sysctl.conf文件中操作系统核心参数配置,下面这些参数设置如下(如果当前核心参数设置的值比下面的更大,则这些参数无需修改,其中net.ipv4.ip_local_port_range参数的值必须完全一样) kernel.shmall = 4294967296 kernel.shmmax = 68719476736 --最大共享内存段,用于oracle sga,不能低于你准备设置的sga大小 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 6815744 fs.aio-max-nr = 1048576 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 备注:这是基于我的安装环境进行的核心参数配置,具体对于不同的安装环境需要具体配置,主要是kernel.shmmax和kernel.shmall两个参数可能需要重新配置 具体步骤 cp /etc/sysctl.conf /etc/sysctl.conf0527 --备份 vi /etc/sysctl.conf /* 将上面的参数一一设置为上面的值(如果当前核心参数的值比上面的更大,则不用修改) */ sysctl -p /* 使修改的核心参数的配置生效 */ (2)设置oracle用户的一些限制(针对运行oracle软件的用户) a. 在/etc/security/limits.conf文件中配置添加如下内容 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 b. 在/etc/pam.d/login文件中添加如下内容 session required pam_limits.so c. 在/etc/profile文件中添加如下内容 if [ $user = "oracle" ]; then if [ $shell = "/bin/ksh" ]; then ulimit -u 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi 备注 a.如果安装了java package,取消java相关的环境变量设置,例如java_home b.操作系统默认安装的selinux 为"enforcing"模式,这会影响后续sqlplus的使用(安装阶段不会有问题),必须切换为"permissive"模式
具体步骤 cp /etc/security/limits.conf /etc/security/limits.conf0527 vi /etc/security/limits.conf cp /etc/pam.d/login /etc/pam.d/login0527 vi /etc/pam.d/login cp /etc/profile /etc/profile0527 vi /etc/profile
七、oracle用户环境变量设置 在oracle用户下的.bash_profile中设置如下环境变量 tmp=/tmp; export tmp tmpdir=$tmp; export tmpdir oracle_base=/u01/app/oracle; export oracle_base oracle_home=$oracle_base/product/11.2.0/db_1; export oracle_home oracle_sid=javadb; export oracle_sid oracle_term=xterm; export oracle_term path=/usr/sbin:$path; export path path=$oracle_home/bin:$oracle_home/opatch:/home/oracle/sh:/home/oracle/dh/scripts:$path; export path ld_library_path=$oracle_home/lib:/lib:/usr/lib; export ld_library_path classpath=$oracle_home/jre:$oracle_home/jlib:$oracle_home/rdbms/jlib; export classpath nls_lang=american_america.zhs16gbk;export nls_lang export editor=vim export lang=en_us.utf-8 export nls_lang=american_america.zhs16gbk
具体步骤 su - oracle cp .bash_profile .bash_profile0527 vi .bash_profile
八、启用linux的hugepages(大页面内存2m)特性来管理oracle数据库需要的内存(sga大于8g,建议都通过linux大内存页面来管理) a) 在/etc/security/limits.conf 中设置memlock值(单位kb),该值小于os内存大小, * soft memlock 98474836 * hard memlock 98474836 b)重新登录root和oracle用户,检查memlock limit $ ulimit -l 98474836 c)确保你的全部实例都已经启动(包括asm) ,然后根据document 401749.1 的hugepages_settings.sh去评估需要设置的hugepages的大小。 $ ./hugepages_settings.sh d)编辑/etc/sysctl.conf 设置 vm.nr_hugepages参数: vm.nr_hugepages = 30000 (大于sga所需内存,再多加一部分即可) sysctl –p(使配置生效) e)停止实例并重启os系统 f)检查设置是否生效 系统重启后,启动全部的数据库,通过以下命令检查 # grep hugepages /proc/meminfo hugepages_free< hugepages_total 既说明hugepages已经生效,同时hugepages_rsvd不为“0”. 注意:此需求只有在linux中才需要,其它hp-ux、aix都不要配置大内存,也没有大内存页面这一说法。
九、安装oracle软件 解压安装包后进入到database目录 ./runinstaller 图形界面,一步一步即可!
希望这篇文章可以对安装oracle还处于磕磕碰碰的朋友有所帮助