Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1444877
  • 博文数量: 295
  • 博客积分: 10051
  • 博客等级: 上将
  • 技术积分: 3850
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-11 08:50
文章分类

全部博文(295)

文章存档

2011年(1)

2009年(4)

2008年(290)

我的朋友

分类: Oracle

2008-04-15 12:43:28

 安装

所有参见内容都在附件01_install_02_create_03_init/下。

1.1 通用设置

文件系统swap

创建文件系统时应考虑Oracle对swap的需要,大约每个oracle服务进程将占用10-20Mswap空间,通常操作系统建议2倍于内存的swap空间,数据库系统可能要求更多些。

操作系统用户和环境变量

Oracle文档要求为数据库系统的管理和使用建立3个或更多的组,但这个需求是可以忽略的,实践中并没有体现其必要性。为简化操作起见,只建立dba组,即拥有更新软件和管理最高权限(SYSDBA)的操作系统用户组,此组称为OSDBA,属于此组的用户可以SYSDBA身份登录进任何一个数据库实例,简单的,只建立一个用户,习惯上使用oracle的名称。

$ groupadd dba

$ useradd -g dba -d /home/oracle -m -s /bin/bash oracle

确定oracle 系统的根目录ORACLE_BASE,如/opt/oracle,所有的软件和配置都在这个目录下展开,虽然并非一定需要如此,但这是一个良好的习惯。同时确定软件安装的起始点ORACLE_HOME,通常在ORACLE_BASE下。

修改oracle用户的.profile,加入以下各行,或者修改/etc/profile,使每一个用户都获得环境变量设置

umask 022

ORACLE_BASE=/opt/oracle

ORACLE_HOME=$ORACLE_BASE/product/{版本号}(如8.0.5,8.1.7,9.2.0等)

ORACLE_SID=oradb

ORACLE_TERM=ansi #仅与Oracle8字符界面安装有关

ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data #字符集支持

NLS_LANG=American_America.{ZHS16CGB231280(Oracle8支持)|ZHS16GBK(Oracle8i支持)|ZHS16GB18030(Oracle9i支持)}

NLS_DATE_FORMAT=YYYYMMDDHH24MISS

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH #动态连接路径,Unixware中要确保/usr/ucb/lib在/usr/ccs/lib之后出现

TMPDIR=/tmp #安装中Oracle会在此目录下存储相当数量的文件,所以TMPDIR所在的磁盘分区要确保空闲空间的大小,至少在1G左右

PATH=$PATH:$ORACLE_HOME/bin

export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM ORA_NLS33 NLS_LANG NLS_DATE_FORMAT LD_LIBRARY_PATH TMPDIR

参见profile。

注意:

NLS_LANG=American_America.ZHS16CGB231280(ZHS16GBK)

"American"指显示信息时所用的语言,窃以为凭大家的英语水平足够应付,如改为SIMPLIFIED CHINESE,在不带中文支持的终端上就没人能看懂了。

"America"指地区

"ZHS16CGB231280"指Client工具使用的字符集,一般使用"ZHS16CGB231280",Oracle8i已支持到"ZHS16GBK"

NLS_DATE_FORMAT=YYYYMMDDHH24MISS

Oracle的date类型过于灵活,为统一时间格式,利于编程,应将时间的输入输出格式限定为14位字符串,如"20000101235959"

据oracle文档,此参数可按照session,操作系统用户环境,init.ora由高到低的优先级顺序设置,依次覆盖。

相关系统表:

v$nls_parameters v$nls_valid_values

X-Window

Oracle 8的安装程序是光盘mount点/bin/orainst,使用字符界面,不用考虑X-Window。

Oracle 8i和9i使用光盘mount点/runInstaller进行安装,它是用Java编写的图形界面,对中文处理有问题,所以应在进入X-Window前确保语言(LANG)和地域(LC_ALL,LC_TYPE,…)环境变量不是中文。

LANG=C

LC_ALL=C

安装选项

Oracle 8i的主要软件包在安装选项Enterprise中,但并不包括proc,必须进行第二次安装,可选择安装选项Client中的programmer。

Oracle 9i的主要软件包在安装选项Enterprise安装选项中,但并不包括proc,必须进行第二次安装,一定要选择安装选项Client中的Administrator。runInstaller的稳定性欠佳,建议每次安装结束后,先退出,再进行下一次安装。

1.2 UnixWare7

1.2.1 Oracle 8

确认操作系统的交换分区swap不少于350M

认为该打的补丁统统打上,宁滥毋缺。UnixWare7.0.1必须打的补丁为ptf7033,ptf7051,ptf7052,ptf7068,ptf7096。

将/etc/default/login中的ulimit设为大于2113674(稍大一点即可,太大会有问题)

将/etc/conf/node.d/async中的600改为666

修改以下核心参数

核心参数 必需值 解释

SHMMAX 2147483647 共享内存段最大尺寸

SHMMNI 100 系统共享内存段标识最大数目

SHMSEG 15 每个进程所能使用最大共享内存段数目

SEMMNI 100 核心信号量标识最大数目

SEMMSL 150 每个信号量标识包含的信号量个数

SCORLIM 0X7FFFFFFF Core文件最大尺寸

HCORLIM 0X7FFFFFFF

SDATLIM 0X7FFFFFFF 进程堆最大尺寸

HDATLIM 0X7FFFFFFF

SVMMLIM 0X7FFFFFFF 进程最大映射地址

HVMMLIM 0X7FFFFFFF

SFSZLIM 0X7FFFFFFF 进程文件最大偏移量

HFSZLIM 0X7FFFFFFF

SFNOLIM 128 进程能打开的最大文件个数

HFNOLIM 2048

NPROC 20+(8*MAXUSERS) MAX:125000

ARG_MAX 1,048,576

NPBUF 100 I/O缓冲区数目

MAXUP 1000 用户同时使用的最大进程个数

STRTHRESH 0X500000 流能使用的最大字节数



为优化应用系统修改以下核心参数

核心参数 参考值 解释

MSGMAX 8192 消息最大尺寸

MSGMNB 81920 消息队列尺寸

MSGMNI 2048 系统能并存的最大消息队列数目

MSGSSZ 16384

MSGTQL 4096 系统能并用的消息头数目

SEMMNI 1024

SEMMSL 150



也可通过编辑/etc/conf/cf.d/stune达到同样效果

重新连接内核,重起或运行/etc/conf/bin/idbuild -B

修改核心参数SEMMAP时,注意要同时修改/etc/conf/mtune.d/ipc中相应的MAX值

建立/var/opt/oracle,使oracle成为此目录属主

mount oracle光盘,通常mount目录为/SD-CDROM_1

root用户,ORACLE_OWNER=oracle,执行光盘上orainst中oratab.sh,建立/var/opt/oracle/oratab

安装时,选custom方式,安装时不建立数据库,字符集可选Simplified Chinese

1.3 HP-UX

1.3.1 Oracle 8

流程大致与unixware相同,调整kernel参数可通过sam,选择/Kernel Configuration/Actions/Apply Tuned Parameter Set/OLTP Database Server System,另外为提高I/O能力,还需调整以下参数:

核心参数 参考值 解释

bufpages 61992 缓冲页

dbc_max_pct 10 动态缓存占内存最大百分比

dbc_min_pct 10 动态缓存占内存最小百分比

nbuf

设定共享库目录SHLIB_PATH,不是LD_LIBRARY_PATH

SHLIB_PATH=$SHLIB_PATH:$ORACLE_HOME/lib;export SHLIB_PATH

1.4 Linux

1.4.1 kernel 2.0 & glibc 2.0

代表产品为Red Hat Linux 5.1。

Oracle 8在RedHat5.1上能成功安装,安装软件包为805ship.tgz

一般不会在RedHat5.1上安装Oracle8i以上的版本

修改共享内存最大尺寸限制:

在系统初始化脚本/etc/rc.d/rc.sysinit中加入:

echo 2147483648 >/proc/sys/kernel/shmmax

重启计算机。这样做避免了Oracle分配的共享内存碎片化,对提高效率有好处。

原$ORACLE_HOME/precomp/admin/pcscfg.cfg中sys_include有误,使proc预处理pc程序失败,安装结束后,应设为:sys_include=(/usr/include,/usr/lib/gcc -lib/i386-redhat-linux/egcs-2.91.66/include)(视gcc版本而定)

1.4.2 kernel 2.2 & glibc 2.1

代表产品为Red Hat Linux 6.2。

修改共享内存最大尺寸限制:

在系统初始化脚本/etc/rc.d/rc.sysinit中加入:

echo 2147483648 >/proc/sys/kernel/shmmax

重启计算机。这样做避免了Oracle分配的共享内存碎片化,对提高效率有好处。

原$ORACLE_HOME/precomp/admin/pcscfg.cfg中sys_include有误,使proc预处理pc程序失败,安装结束后,应设为sys_include=(/usr/include,/usr/lib/gcc -lib/i386-redhat-linux/egcs-2.91.66/include) (视gcc版本而定)

1.4.2.1 Oracle 8

本来已经很少有人在LinuxKernel2.2的系统中安装Oracle8.0.5,但笔者实在怀念8.0.5纯粹的文本界面和与之相处的无数不眠之夜,故收录如下:

Oracle8在kernel为2.2.x的linux中是无法正常运行的,运行可执行文件如svrmgrl,sqlplus时会导致"Segmentation fault",原因在于这些linux使用了默认的libc2.1,与Oracle8程序重连接所需的libc2.0不兼容。Oracle的补丁程序其实是将Oracle可执行程序的重连接脚本中libc位置重新定位到libc2.0上去,并用旧版的gcc,ld重新连接可执行文件。为此必须先在系统中安装兼容库和相应工具。这是权宜之计,而且仅对RedHat有效。

root用户

rpm -ivh tcl-8.0.3-20.i386.rpm Oracle的Intelligent Agent要使用

rpm -ivh compat-binutils-5.2-2.9.1.0.23.1.i386.rpm

rpm -ivh compat-glibc-5.2-2.0.7.1.i386.rpm

rpm -ivh compat-egcs-5.2-1.0.3a.1.i386.rpm

rpm -ivh compat-egcs-c++-5.2-1.0.3a.1.i386.rpm

rpm -ivh compat-libs-5.2-1.i386.rpm

版本号可略有差异

oracle用户安装Oracle8.0.5但不创建instance,如选择安装文档,则会产生如下错误:

A write error occurred while try to copy '/home/oracle/setup_oracle/unixdoc/server.805/install/lnx_server.805.map' to '/oracle/product/8.0.5/doc/server.805/install/lnx_server.805'(No such file or directory).

这是安装程序的一个bug-不能创建目录。可进入$ORACLE_HOME/doc,mkdir -p server.805/install,再选择Retry

从ftp.oracle.com/pub/www/otn/linux下载glibcpatch.tgz,在某一目录(如~/patch)下展开

cd ~/patch

glibcpatch.sh

经过一段时间后,看到"Applied glibc patch for Oracle 8.0.5.x successfully",表明补丁成功。此时就能成功创建instance。

1.4.2.2 Oracle 8i

推荐使用典型安装,否则会产生难以预料的错误。

1.4.3 kernel 2.4 & glibc 2.2

代表产品为Red Hat Linux 7.3,SuSE Linux 7.3。

1.4.3.1 Oracle 8i

与Oracle8在RedHat Linux 6.2上安装所遇到的问题一样,Oracle 8i使用的glibc 2.1与操作系统自带的glibc 2.2不能兼容,解决的方法也一样,要安装glibc 2.1的兼容库,并重新连接Oracle各组件。

除非万不得已,不建议使用兼容方式,因此省略安装步骤,可参阅网上有关文档。

1.4.3.2 Oracle 9i

RedHat 7.3

修改共享内存最大尺寸限制:

在系统初始化脚本/etc/rc.d/rc.sysinit中加入:

echo 2147483648 >/proc/sys/kernel/shmmax。

修改信号量参数:

在系统初始化脚本/etc/rc.d/rc.sysinit中加入:

echo 250 32000 100 128 >/proc/sys/kernel/sem。

这4个参数依次为SEMMSL(每个用户拥有信号量最大数量),SEMMNS(系统信号量最大数量),SEMOPM(每次semop系统调用操作数),SEMMNI(系统信号量集最大数量),事实上只有SEMOP是需要调整的。

重启计算机。

在连接可执行文件过程中,会发生中断,打开$ORACLE_HOME/ctx/lib/env_ctx.mk,找到INSO_LINK,在-L$(CTXLIB) -L$(LDLIBFLAG)m后加入-L$(LDLIBFLAG)dl,重试。

SuSE 7.3

与RedHat类似,但SuSE没有/etc/rc.d/rc.sysinit,笔者选择/etc/rc.d/rc,将核心参数修改添加到最后exit语句之前。

安装过程中没有发生任何问题。

1.5 Solaris

Oracle 8i在Solaris 7,8 Intel Platform上均能顺利安装,未测试Solaris Sparc Platform。

Oracle 9i目前无Solaris Intel Platform上的版本,由于条件所限,未测试在Solaris Sparc Platform上的Oracle 9i。

修改下列核心参数:

核心参数 参考值 解释

shmmax 物理内存/2 共享内存段最大尺寸

shmmin 1 共享内存段最小尺寸

shmmni 100 系统共享内存段标识最大数目

shmseg 10 每个进程所能使用最大共享内存段数目

semmni 100 系统信号量标识最大数目

semmsl init.ora.processes+10 每个信号量标识包含的信号量数目

semmns sum(init.ora.processes)*10+max(init.ora.processes)+count(init.ora)*10 系统信号量最大数目

semopm 100 每个semop调用最大操作数目

rlim_fd_max 4096 系统文件句柄最大数目

rlim_fd_cur 1024 每个进程文件句柄最大数目

修改/etc/system,并重启使核心参数生效

例:

set shmsys:shminfo_shmmax=2147483648

set shmsys:shminfo_shmmin=1

set shmsys:shminfo_shmmni=100

set shmsys:shminfo_shmseg=10



set semsys:seminfo_semmni=200

set semsys:seminfo_semmsl=200

set semsys:seminfo_semmns=1000

set semsys:seminfo_semopm=100

set semsys:seminfo_semmap=200

set semsys:seminfo_semmnu=250

set semsys:seminfo_semvmx=32767



set msgsys:msginfo_msgmni=200

set msgsys:msginfo_msgmap=200

set msgsys:msginfo_msgmax=65536

set msgsys:msginfo_msgmnb=655360

set msgsys:msginfo_msgssz=64

set msgsys:msginfo_msgtql=1000

set msgsys:msginfo_msgseg=16384



set rlim_fd_max=4096

set rlim_fd_cur=1024

参见solaris_7_8/system

注意:

一定要先重建好kernel后再安装,因为oracle安装时根据kernel动态连接程序,如果先安装oracle,即使随后正确调整kernel,也会带来许多问题,如oracle进程不能拉起,instance创建失败等。

在kernel参数中,对数据库运行影响最大的主要是SHMMAX,SEMMNS,SEMMNI,SEMMSL,SHMMAX取内存一半即可,SEMMNS理论上应等于SEMMNI*SEMMSL,实际取一个较大值即可。

SEMMNS: 信号量最大个数,有些系统可忽略,因为他与SEMMNI,SEMMSL有关。
_________________
阅读(1181) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~