Linux Advanced Server 2.1 下安装Oracle817 详细步骤
skystar   2004-07-25 02:00一. Linux系统环境
1、确保已经安装了GCC编译器
查看gcc版本信息
命令:gcc –v 
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-81)
有以上信息代表已经装了GCC。
如果没有安装gcc则需要安装gcc-2.96-108.1.i386.rpm, 同时需要cpp-2.96-108.1.i386.rpm 和
binutils-2.11.90.0.8-12.i386.rpm,将它们放在一个目录下。
命令:rpm –Uvh gcc-2.96-108.1.i386.rpm 
如果已经安装的话直接看下面。
2、安装相关RPM包
Oracle8.1.7使用的是glibc2.1.3,而RedHat7以上的版本是用的glibc2.2.2,不兼容,所以要替换glibc才能成功安装。
可以把:
compat-egcs-6.2-1.1.2.16.i386.rpm
compat-egcs-c++-6.2-1.1.2.16.i386.rpm
compat-egcs-g77-6.2-1.1.2.16.i386.rpm
compat-egcs-objc-6.2-1.1.2.16.i386.rpm
compat-glibc-6.2-2.1.3.2.i386.rpm
compat-libs-6.2-3.i386.rpm
也安装上。
因为这几个软件包之间有依赖关系,如果安装顺序不对,会报错的,无法安装。
可以先把这6个软件包拷贝到一个目录下,然后再一起安装,这样就不用怕它们之间的依赖关系,一定可以安装成功了。如果安装中提示缺少某个包,可以将缺少的包也放在该目录下一起安装(可以从安装盘上找到缺少的包,如:glibc-devel-2.2.4-26.i386.rpm、kernel-headers-2.4.9-e.3.i386.rpm)。
命令:rpm -Uvh *.rpm二. 所需的文件和补丁
1、 binutils-2.10.91.0.2-3.i386.rpm #这是redhat7自带的一个文件。
2、 jdk118_v3.tar.gz #这是有关java的原文件。
3、 glibc-2.1.3-stubs.tar.gz # Oracle的补丁包。
4、 env_ctx.mk
5、 linux817ee.tar.gz #Oracle8.1.7 for linux的安装文件。三. 安装补丁文件
1、安装binutils-2.10.91.0.2-3.i386.rpm 
此包因为其它包的关联性限制需要强制安装
命令:rpm -Uvh --force --nodeps binutils-2.10.91.0.2-3.i386.rpm
2、安装Jdk1.1.8_v3到/usr/local
命令:bunzip2 jdk118_v3.tar.bz2 
tar -xvf jdk118_v3.tar 
ln -s jdk118_v3 java
3、解压linux817ee.tar.gz
命令:tar -xzvf linux817ee.tar.gz
如果下载的文件为linux817.tar,执行
命令:tar –xvf linux817.tar
解压后的安装文件所在目录为Disk1。四. 配置用户环境
1、创建组和用户
groupadd dba (创建dba组)
groupadd oinstall (创建oinstall组)
useradd oracle -g oinstall -G dba (创建用户oracle并且赋予主组为oinstall,辅助组为dba)
passwd oracle (给用户oracle 赋值密码)
2、创建安装目录
对Oracle的安装目录赋予相应权限
mkdir -p product/8.1.7 (在当前目录下创建product目录,本例是以为安装目录,可以更改)
chown –R oracle.dba product (给product目录赋予作者oracle及组dba。)
chmod 755 product (给product目录赋予权限。)
3、设置环境变量
(1)编辑.bash_profile或/etc/profile文件
可以将要设的环境变量放在oracle用户主目录下的.bash_profile中,也可以放在/etc/profile中,对所有的用户可见,我建议放在/etc/profile中,因为凡是在本机运行的程序读写本机的Oracle数据库,一般都需要设Oracle的环境变量,否则无法连接数据库。我可以举一个例子:如果你的WEB Server,例如Apache,需要读写数据库,提供网页的动态内容,假设用PHP或者JSP,又或者Perl等等来写ServerAPI或者CGI,因为Apache是以root启动一个进程,这个进程再fork若干子进程以nobody用户运行,响应80端口的http请求,所以如果在root读不到Oracle环境变量,Web程序根本无法读写数据库。只要root读到oracle环境变量,fork子进程的时候,复制了父进程的数据空间,也继承了父进程的环境变量,所以可以读到oracle变量,就可以读写oracle数据库了。
命令:vi .bash_profile (也可以用gedit等编辑器进行编辑)
export ORACLE_BASE=/home/oracle 指定oracle安装目录
export ORACLE_HOME=$ORACLE_BASE/product/8.1.7 指定oracle安装目录
export ORACLE_SID=orcl 指定oracle数据库的SID
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data 指定字符集目录
export NLS_LANG=american_america.ZHS16GBK 指定字符集为英语和汉语编码
export LD_LIBRARY_PATH=$ORACLE_HOME/lib 是Oracle的C库函数和头文件的位置,对于OCI8,PROC和JDBC的OCI连接是必须的。
export CLASSPATH=.:$ORACLE_HOME/jdbc/lib/classes111.zip 是Java程序读写数据库需要的JDBC的class,前面加个点号是先搜当前目录的意思。
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/dbs:/etc 指定shell
export LD_ASSUME_KERNEL=2.2.5
export LDEMULATION=elf_i386_glibc21
export GCC_EXEC_PREFIX=/usr/i386-glibc21-linux/lib/gcc-lib/
umask 022最后三段是为了降级gcc用的加上就是了
到这里还须更改glibc,以降低gcc的版本
命令:. /usr/i386-glibc21-linux/bin/i386-glibc21-linux-env.sh
      #. /home/oracle/.bash_profile
再看看gcc是否已替换 (也可以重启一下再查看)
命令:gcc -v
替换之前是:
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-81)
替换之后是:
Reading specs from /usr/i386-glibc21-linux/lib/gcc-lib/i386-redhat-linux/2.96/specs
gcc driver version 2.96 20000731 (Red Hat Linux 7.1 2.96-81) executing gcc version egcs-2.91.66
如果需要某一别的用户下使用Oracle,需要在该用户下配置Oracle相关环境变量,将上述环境变量加进该用户目录下的.bash_profile文件中。所有用户使用时要加进/etc/profile文件中。
(2)修改内核参数
Oracle数据库运行的时候,用共享内存来实现Oracle的SGA,所以要调整一下Linux的内核参数来适应Oracle的SGA的要求,这个方面到底要调整到多少才适合,可以参考Oracle官方的安装文档(第30页)。一般而言,主要就是共享内存段最大尺寸要调整,Linux内核默认共享内存段最大尺寸是32M,如果Oracle SGA开的大于32M,SGA就会分段,占据几个不连续的共享内存段,造成Oracle的性能下降。
命令ipcs -al可以查看共享内存参数,命令ipcs查看共享内存使用情况。
修改内核参数可以修改内核源码再重新编译内核,这个方法有点麻烦,关于共享内存的参数在/usr/src/linux-2.4.7-10/include/linux/下的shm.h和sem.h文件中。
Oracle8.1.7的安装文档中,对于此部分为:
/usr/src/linux-2.4.7-10/include/linux/shm.h
Shard Memery SHMMAX 0.5*物理内存
SHMMIN 1
SHMMNI 100
SHMSEG 10
/usr/src/linux-2.4.7-10/include/linux/sem.h
Semaphores SEMMNI 100
SEMMSL 10+最大进程数 注:进程数在$oracle_home/dbs/initsid.ora 中
SEMMNS 最大进程数*2+其他进程数之和+实例数*10
SEMOPM 100
SEMVMX 32767
另一个简单的办法是直接修改内核参数,即修改/proc下的文件,立即生效。
可以修改/proc/sys/kernel下的shmmax和sem
shmmax是以字节记的共享内存段的最大尺寸,
shmmni是共享内存段的最大数量
shmmax是共享内存总共最大容量(shmmax*shmmni)
sem是信号量参数,msgmax,msgmnb,msgmni是消息队列的参数。
可以改动如下:
echo 134217728 > /proc/sys/kernel/shmmax (SGA最大为128M)
echo -e "250 32000 100 128" > /proc/sys/kernel/sem
或者 vi /etc/services
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=128
set shmsys:shminfo_shmseg=16
set semsys:seminfo_semmni=128
set semsys:seminfo_semmns=2048
set semsys:seminfo_semmsl=2048
set semsys:seminfo_semume=64
set semsys:seminfo_semmnu=768
set semsys:seminfo_semmap=20
set semsys:seminfo_semopm=100
set semsys:seminfo_semvmx=32767
还可以这样:
# echo 134217728 > /proc/sys/kernel/shmmax 
建议改为总内存的一半 
# echo 250 32000 100 128 > /proc/sys/kernel/sem 
#echo 4096 > /proc/sys/kernel/shmni 
#echo 2097152 > /proc/sys/kernel/shmall 
#echo 65536 > /proc/sys/fs/file_max 
#ulimit -n 65535 
#ulimit -u 16384 
编辑好后存盘重新启动系统。 
不然会在启动数据库时出错。

解决方案 »

  1.   


    五. 安装Oracle8.1.7
    1、以ORACLE用户登录系统并进入X-Windows画
    2、进入程序目录启动安装程序
    命令:./runInstaller
    如果安装过程中出现乱码,在./runInstaller之前需要设置一下环境变量
    命令:export LC_ALL=en
    3、选择安装类型、安装路径、工作组名、JDK路径、数据库SID等,和windows安装一样
    A、工作组名添写oinstall。
    B、安装过程中会要求以root身份进行orainstRoot.sh(用来创建oraInventory的安装目录)
    C、安装过程会提示ins_ctx.mk出错。新开一个konsole窗口,以root身份运行命令
    cp /backup/env_ctx.mk $ORACLE_HOME/ctx/lib (然后返回安装界面,点击Retry即可)
    此时注意:如果安装过程中出现ins_net_client.mk等错误,则说明没有正确安装好GCC,需要重新安装与GCC相关的安装包及补丁。
    再次安装时需要运行./runInstall将Oracle先卸载掉,然后再重新安装,防止发生Oracle安装不全的情况。
    D、提示以Root身份运行root.sh
    E、出现net8配置窗口,:(不要着急点下一步,一定要在创建数据库之前,新开一个konsole,以root身份运行以下命令)
     cd $ORACLE_HOME
     tar -xvzf /backup/glibc-2.1.3-stubs.tar.gz (backup为该文件放置目录)
     ./setup_stubs.sh (安装过程大约要五分钟的时间)
     等待程序运行完毕,返回安装界面。
     选择Perform typical configuration,下一步,开始创建数据库。
     最后提示数据库创建完成。恭喜你Oracle安装成功。
      

  2.   

    上面写错地方了
    先 chown oracle /temp