Chinaunix首页 | 论坛 | 博客
  • 博客访问: 250632
  • 博文数量: 71
  • 博客积分: 3044
  • 博客等级: 少校
  • 技术积分: 695
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-16 11:06
文章分类

全部博文(71)

文章存档

2011年(30)

2010年(41)

分类: Oracle

2011-05-19 22:06:11

首先在oracle 官方上下载一个oracle 11g( 说明一下在安装CentOS 5.5 时尽量是把开发包装全一些,这样您在安装包检测的时候就会少装一些包,这个可以在安装CentOS 时选择开发工具一览选项。其次,安装CentOS 的SWAP 要大约1.5 倍的物理内存大小。最后,要禁用linux 防火墙以及SElinux ,这两个可以在安装CentOS 时选择禁用)

1 、下载 Oracle 11g 文件

下载oracle 从

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

这里解释一段话:

为什么要安装那么多软件包?可以看官网

说一下 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 官方文档

vi /etc/sysctl.conf

以下为此文件更改后的内容:

# Kernel sysctl configuration file for  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 帐户可以使用的进程数和打开的文件数设置限制。

要进行这些更改,以 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

下面参数的意义,可参考 

修改 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'

这是因为没有创建数据库的原故。大家可以参考其他方法创建

高手进阶:/etc/profile环境变量配置解析 

与环境变量相关的文件可能还会有/etc/bashrc等,不过这是shell变量,是局部的,对于特定的shell器作用。/etc/profile是全局的,适用于所有的shell。

profile文件会告诉shell使用什么语言,什么shell,命令的搜索路径等等。

一些标准的环境变量:

SHELL 默认shell

LANG 默认语言

PATH linux寻找命令的默认路径,一般包括/bin,/usr/bin,/sbin,/usr/sbin,

/usr/X11R6/bin,/opt/bin,/usr/local/bin等。用户可以自行添加,

如/home/bin等.

MANPATH man手册的默认路径

INPUTRC 默认键盘映象,详见/etc/inputrc

BASH_ENV bash shell的环境变量,通常在~/.bashrc中

DISPLAY X窗口适用的控制台,DISPLAY=:0对应于控制台F7,DISPLAY=:1对应于控制

台F8,DISPLAY=server:0向远程计算机发送GUI应用程序。

COLORTERM GUI中的默认终端,通常是gnome-terminal。

USER 自动设置当前登陆用户的用户名。

LONGNAME 通常设置为$USER

MAIL 设置特定$USR的标准邮件目录

HOSTNAME 设置为/bin/hostname的命令输出

HISTSIZE 设置为history命令记住的命令数


例子:

 

#
# /etc/profile
#

#修改或添加PATH可以自定义命令的寻找路径,如果你不想将可执行文件添加到默认目录中但又可以在终端中使用命
#令,那就改吧。
export PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/opt/bin:/usr/local/bin"

export MANPATH="/usr/man:/usr/X11R6/man"
export LESSCHARSET="latin1"
export INPUTRC="/etc/inputrc"
export LESS="-R"

# Locale settings (find your locale with ''locale -a'')
export LANG="zh_CN" #修改这里可以改变系统的默认使用语言
export LC_COLLATE="C"

export COLUMNS LINES

export PS1=''[\u@\h \W]\$ ''
export PS2=''> ''

umask 022
……
……
# End of file 


阅读(2332) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~