Redhat Linux Enterprise 4 上安装 oracle9i

本文档详述了在Redhat Linux Enterprise 4上安装Oracle9i的全过程,包括必备RPM包的安装、环境变量设置、内核参数调整、用户与目录创建、文件解压、数据库安装与升级、数据库创建以及监听和网络服务名配置。还提到了可能遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redhat Linux Enterprise 4 上安装 oracle9i

 

安装第一步,确保以下RPM都已经安装好。

Disk2    compat-libstdc++-33-3.2.3-47.3

Disk2    make-3.80-5

Disk2    xorg-x11-deprecated-libs-6.8.1-23.EL

 

Disk3    compat-db-4.1.25-9

Disk3    compat-libgcc-296-2.96-132.7.2

Disk3    compat-libstdc++-296-2.96-132.7.2

Disk3    gcc-3.4.3-9.EL4

Disk3    gcc-c++-3.4.3-9.EL4

Disk3    gnome-libs-1.4.1.2.90-44

Disk3    libaio-0.3.102-1

Disk3    libaio-devel-0.3.102-1

Disk3    openmotif21-2.1.30-11

Disk3    xorg-x11-deprecated-libs-devel-6.8.1-23.EL

 

Disk4    compat-gcc-32-3.2.3-47.3

Disk4    compat-gcc-32-c++-3.2.3-47.3

Disk4    gnome-libs-devel-1.4.1.2.90-44

ORBit-devel is needed by gnome-libs-devel-1.4.1.2.90-44.1.i386

 glib-devel is needed by ORBit-devel-0.5.17-14.i386

gtk+-devel is needed by gnome-libs-devel-1.4.1.2.90-44.1.i386

                imlib-devel is needed by gnome-libs-devel-1.4.1.2.90-44.1.i386

 

 

以下三个其实是补丁

    compat-oracle-rhel4-1.0-3        http://oss.oracle.com/projects/compat-oracle/files/RedHat/

    compat-libcwait-2.0-1                http://oss.oracle.com/projects/compat-oracle/files/RedHat/

p3006854_9204_LINUX              http://pack.hacker.cn/Update/Pack/0racle/05121616492554368.shtml

(直接执行里面的脚本即可)       

 

安装第二步 设置环境变量

修改/home/oracle/.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 PATH

unset USERNAME

LD_ASSUME_KERNEL=2.4.19      #系统为redhat 4时的设置

                                                                #如果系统为redhat 3时应该为LD_ASSUME_KERNEL=2.4.1

改为:

# +------------------------------------------------------------+

# | FILE : .bash_profile |

# +------------------------------------------------------------+

umask 022

TERM=xterm; export TERM

TMPDIR=/tmp; export TMPDIR

 

# +--------------------------+

# | SETUP ORACLE ENVIRONMENT |

# +--------------------------+

export ORACLE_SID=ORCL

export ORACLE_BASE=/opt/oracle

export ORACLE_HOME=/opt/oracle/product/9.2.0

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

export TNS_ADMIN=$ORACLE_HOME/network/admin

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

export ORACLE_OWNER=oracle

export ORACLE_TERM=xterm

export GCC_EXEC_PREFIX=/usr/i386-glibc21-linux/lib/gcc-lib/

export THREADS_FLAG=native

 

# +--------------------------+

# | LINUX STUFF |

# +--------------------------+

export LD_ASSUME_KERNEL=2.4.1

 

# +--------------------------+

# | SETUP SEARCH PATH |

# +--------------------------+

export PATH=$PATH:$ORACLE_HOME/bin

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib

export CLASSPATH

 

# +-------------+

# | "GREETINGS" |

# +-------------+

echo ".bash_profile executed"

 

第三步设置Linux内核参数(超级用户)

         512M内存。在 /etc/sysctl.conf 文件中增加如下内容:

  kernel.shmmax = 536870912

  kernel.shmmni = 4096

  kernel.shmall = 2097152

  kernel.sem = 250 32000 100 128

  fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

修改后运行sysctl -p 命令使得内核改变立即生效

 

把这些行添加到   /etc/security/limits.conf  

  oracle   soft   nofile   65536  

  oracle   hard   nofile   65536  

  oracle   soft   nproc   16384  

  oracle   hard   nproc   16384  

   

  重启系统以使这些内核更改生效,如果不允许重启,您可以在运行时通过执行下列命令更改内核参数:  

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

  #   echo   536870912   >   /proc/sys/kernel/shmmax  

  #   echo   4096   >   /proc/sys/kernel/shmmni  

  #   echo   2097152   >   /proc/sys/kernel/shmall  

  #   echo   65536   >   /proc/sys/fs/file-max  

  #   echo   1024   65000   >   /proc/sys/net/ipv4/ip_local_port_range 

 

设置共享内存参数   

1 Setting SHMMAX Parameter  (设置共享内存最大值)

          其实也限制SGA的大小,在2G内存的系统上我设置了为1G

2 Setting SHMMNI Parameter  (设置共享内存中段的最大数量)

          默认的4096够用了,无需修改

3 Setting SHMALL Parameter  (系统中一次用到的内存页中的共享内存数量)

          默认的2097152已经够用

         

设置信号量参数 

1 The SEMMSL Parameter (每个信号集合中最大信号数量)

oracle建议设为数据库配置文件init.oraPROCESSES的最大值,同时最小值为100

2 The SEMMNI Parameter (这个linux系统中最大信号集合的最大值)

oracle建议的最小值为100

3 The SEMMNS Parameter (整个linux系统中最大信号数量)

 oracle建议设为系统中所有数据库的PROCESSES之和,将最大的PROCESSES乘以2并且每个数据库再增加10

仅在初始化安装oracle时可以设为最小的256

4 The SEMOPM Parameter (semop(2)系统调用能处理的最大信号数量)

oracle建议最小值为100,只有这个参数需要从默认32修改到100

     

设置文件句柄    

1 Setting System Wide Limit for File Handles (系统最大句柄数)           默认已经超过206085oracle建议的65536

 

实际上对系统的更改    

1 不重起更改内核参数      

          sysctl -w kernel.shmmax=1073741824

          sysctl -w kernel.sem="250 32000 100 128"

2 永久是修改生效,修改/etc/sysctl.conf文件    

          echo "kernel.shmmax=1073741824" >> /etc/sysctl.conf    #设置共享内存最大值其实也是SGA的最大值

          echo "kernel.sem=250 32000 100 128" >> /etc/sysctl.conf

         

查看是否需要修改的命令序列

[root@web 4198954]# cat /proc/sys/kernel/shmmax

33554432

[root@web 4198954]# cat /proc/sys/kernel/shmmni

4096

[root@web 4198954]# cat /proc/sys/kernel/shmall

2097152

[root@web 4198954]# ipcs -ls

 

------ Semaphore Limits --------

max number of arrays = 128

max semaphores per array = 250

max semaphores system wide = 32000

max ops per semop call = 32

semaphore max value = 32767

 

[root@web 4198954]# cat /proc/sys/kernel/sem

250     32000   32      128

[root@web 4198954]# cat /proc/sys/fs/file-max

206085

 检查交换空间       应大于400M

 

第四步创建用户和目录

1

# groupadd dba

# groupadd oinstall

# useradd –c “Oracle software owner” –g oinstall –G dba oracle

# passwd oracle

 

2. 创建Oracle目录:

本人是把Oracle安装在/opt目录下面。如果你的/opt不是一个单一的文件系统,请确保根文件系统“/”有足够的空间。

# mkdir –p /opt/oracle/product/9.2.0

# chown –R oracle.oinstall /opt/oracle

# mkdir /var/opt/oracle

# chown oracle.dba /var/opt/oracle

# chmod 755 /var/opt/oracle

 

第五步解压文件

把下载得到的文件解压

# zcat ship_9204_linux_disk1.cpio.gz | cpio –idmv

# zcat ship_9204_linux_disk2.cpio.gz | cpio –idmv

# zcat ship_9204_linux_disk3.cpio.gz | cpio –idmv

把解压出来的Disk文件放进特定文件平并设置好权限

mkdir /oracle

mv Disk* /oracle

chown -R oracle:oinstall /oracle

 

第六步执行安装 (oracle用户)

1。用oracle用户登录x-window 或者 2.root用户运行 xhost + /usr/openwin/bin/xhost +

 

cd /oracle/disk1

./runInstaller

·         在选择Base Directory选择/opt/oracle

·         在输入UNIX Group Name 时输入oinstall

·         根据提示,打开另一个终端以root身份进入/tmp/运行

sh orainstRoot.sh

·         选取Oracle9i Database 9.2.0.4.0

·         选取Enterprise Edition

·         选取software only

·         快结束时又需要一个以root身份运行的程序,照单做

cd /home/oracle/OraHome1/

sh root.sh

·         一路回车完成安装

 

 

第七步升级到9206

解压  p4188455_10103_linux.zip        unzip p4188455_10103_linux.zip      会释放出两个文件:oraparam.inireadme文件         解压  p3948480_9206_LINUX.zip 9204升级到9206的升级文件      unzip p3948480_9206_LINUX.zip 升级安装installer自身      cd Disk1      su - oracle      ./runInstaller -paramFile ../../orace9i_linux-as3/&4_patch/oraparam.ini       第八步创建数据库 oracle进入linux,启动dbca,数据库类型选择General Purpose,输入Golbal database namesid后直接finsh。出现Summary窗口时会发现找不到OK键,将窗口拉小点你就会看到了。

注:如果是方框字符,在命令行输入unset LANG。重新启动dbca

 

第九步通过netca Net Configuration Assistant)配置监听及网络服务名

Net Configuration Assitant共提供了4个配置功能:

监听程序配置,

命名方法配置,

本地网络服务名配置

目录使用配置。

$netca

1.          配置Oracle网络监听程序。Net Configuration Assitant可以用于此项配置工作,启动后选择监听程序一路下一步即可。

启动监听服务

$ lsnrctl start/stop/status

2.          本地网络服务名配置。要通过网络访问Oracle数据库或其他服务,要使用网络服务名,该项配置允许使用由本地命名解析的网络服务名。

将其点开,选择“添加”网络服务名操作,然后会询问你希望访问何种版本的Oracle数据库服务。按照常理,选择第一个(Oracle8i或更高版本数据库服务),然后输入数据库实例SIDorcl. 然后选择网络协议,双机互联应该选择TCP吧,再然后填写数据库所在的主机名:lkiki.com。端口号采用默认的1521。点击下一步,进行数据库连接的测试,测试成功后进行网络服务名的填写,这个名字就应该是sqlplus连接时候用的服务名了,这里我们使用:orcl.

3.          测试

$sqlplus  “sys/password@orcl as sysdba”

查询当前数据名

方法一:    select name from v$database;

方法二:show parameter db

方法三:查看参数文件。

 

开机自动启服务

1)      #vi /etc/oratab

/etc/oratab 文件描述目前系统中创建的数据库实例 以及是否通过 dbstart dbshut 来控制该实例的启动与关闭

/etc/oratab 格式为: SID:ORACLE_HOME:AUTO          AUTO域设置为Y(大写).

只有这样,oracle 自带的dbstartdbshut才能够发挥作用。

orcl:/opt/oracle/products/9.2.0:Y

2)      编写服务脚本:

新建oracle文件于/etc/rc.d/init.d

 

#!/bin/bash

#

# chkconfig: 35 95 1

# description: init script to start/stop oracle database 9i, TNS listener, EMS, isqlplus

#################FUNCTION#############

#

# AutoStart Oracle and listener

# AutoStop Oracle and listener

#

#######################################

#

#

case "$1" in

start)

echo "Starting Oracle Databases ... "

echo "-------------------------------------------------" >> /var/log/oracle

date +" %T %a %D : Starting Oracle Databasee as part of system up." >> /var/log/oracle

echo "-------------------------------------------------" >> /var/log/oracle

su - oracle -c "dbstart" >> /var/log/oracle

echo "Done."

echo "Starting Oracle Listeners ... "

echo "-------------------------------------------------" >> /var/log/oracle

date +" %T %a %D : Starting Oracle Listeners as part of system up." >> /var/log/oracle

echo "-------------------------------------------------" >> /var/log/oracle

su - oracle -c "lsnrctl start" >> /var/log/oracle

echo "Done."

echo ""

echo "-------------------------------------------------" >> /var/log/oracle

date +" %T %a %D : Finished." >> /var/log/oracle

echo "-------------------------------------------------" >> /var/log/oracle

touch /var/lock/subsys/oracle

 

;;

stop)

echo "Stoping Oracle Listeners ... "

echo "-------------------------------------------------" >> /var/log/oracle

date +" %T %a %D : Stoping Oracle Listener as part of system down." >> /var/log/oracle

echo "-------------------------------------------------" >> /var/log/oracle

su - oracle -c "lsnrctl stop" >> /var/log/oracle

echo "Done."

rm -f /var/lock/subsys/oracle

echo "Stoping Oracle Databases ... "

echo "-------------------------------------------------" >> /var/log/oracle

date +" %T %a %D : Stoping Oracle Databases as part of system down." >> /var/log/oracle

echo "-------------------------------------------------" >> /var/log/oracle

su - oracle -c "dbshut" >>/var/log/oracle

echo "Done."

echo ""

echo "-------------------------------------------------" >> /var/log/oracle

date +" %T %a %D : Finished." >> /var/log/oracle

echo "-------------------------------------------------" >> /var/log/oracle

 

;;

restart)

$0 stop

$0 start

 

;;

*)

echo "Usage: oracle {start|stop|restart}"

exit 1

esac

 

-----------------------

#!/bin/bash

#

# chkconfig: 35 95 1

# description: init script to start/stop oracle database 10g, TNS listener, EMS, isqlplus

#

#

#

# match these values to your environment:

 

export ORACLE_BASE=/opt/oracle

export ORACLE_HOME=$ORACLE_BASE/product/9.2.0/

export PATH=$PATH:$ORACLE_HOME/bin

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export ORACLE_SID=ORCL

export ORACLE_USER=oracle

 

# see how we are called:

case $1 in

start)

su - "$ORACLE_USER"<<EOO

lsnrctl start

sqlplus /nolog<<EOS

connect / as sysdba

startup

EOS

emctl start dbconsole

isqlplusctl start

EOO

;;

 

stop)

su - "$ORACLE_USER"<<EOO

lsnrctl stop

sqlplus /nolog<<EOS

connect / as sysdba

shutdown immediate

EOS

emctl stop dbconsole

isqlplusctl stop

EOO

;;

 

*)

echo "Usage: $0 {start|stop}"

;;

esac

-----------------------

改变文件属性:chmod 755 oracle

 

执行下列命令测试:

/etc/rc.d/init.d/oracle start

/etc/rc.d/init.d/oracle stop

 

执行下列命令添加到Linux服务中:

chkconfig --add oracle

chkconfig --list oracle

 

如果服务启动有错误说Oracle找不到init文件,建立软连接

$ln –s $ORACLE_BASE/admin/<SID>/pfile/init<SID>.ora $ORACLE_HOME/dbs/init<SID>.ora

 

3)      建立服务连接:

系统启动时启动数据库,我们需要以下连结∶

--------------------------------------------------------------------------------

$ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle

$ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle

$ ln -s ../init.d/oracle /etc/rc.d/rc5.d/S99oracle

--------------------------------------------------------------------------------

要在重新启动时停止数据库,我们需要以下连结∶

--------------------------------------------------------------------------------

$ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # 停止

$ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # 重新启动

 

 

安装过程中的问题

1 jre不存在

描述:     

[oracle@ora139 Disk1]$ dbca

jre was not found in /opt/oracle/product/9.2.0/oracle.swd.jre/bin/i386/native_threads/jre

 

[oracle@ora139 Disk1]$ ln -s /opt/oracle/product/9.2.0/oracle.swd.jre/bin/i386/native_threads/java /opt/oracle/product/9.2.0/oracle.swd.jre/bin/i386/native_threads/jre

 

dbca为什么会引用本来不存在的jre,而不是java。作完连接之后dbca即可运行。

 

2  数据库启动:

  $sqlplus /nolog

  SQL>connect / as sysdba

  SQL> startup

                ORA-01078: failure in processing system parameters

                LRM-00109: could not open parameter file '/opt/oracle/product/9.2.0/dbs/initORCL.ora'

Or

[oracle@lkiki ~]$ dbstart

Can't find init file for Database "orcl".

Database "orcl" NOT started.

 

解决方法:

$ORACLE_BASE/admin/$DID/pfile/init$SID.ora拷贝到$ORACLE_HOME/dbs下,命名为init$SID.ora,即可解决。

Or

$ln –s $ORACLE_BASE/admin/$DID/pfile/init$SID.ora $ORACLE_HOME/dbs/init$SID.ora

 

3 数据库启动:

  $sqlplus /nolog

  SQL>connect / as sysdba

  SQL>startup

  ORA-01990:error opening password file '$ORACLE_NAME/dbs/orapw'

  ORA-27037:unable to obtain file status

  Linux Error:2: No such file or directory

  Additional information: 3

解决方法:

$ORACLE_HOME/dbs下的orapw$db_name文件拷贝生成一个orapw文件。

 

4 emca的错误

$emca

Unrcognized option: -nojit

Could not create the Java virtual machine.

解决方法:

vi emca

JRE=...变量中的 -nojit去掉

 

5 netmgr的错误

[ora9i@suk 9204]$ netmgr

Exception in thread "main" java.lang.VerifyError: (class: oracle/net/mgr/servicename/DBPanel$1, method: actionPerformed signature: (Ljava/awt/event/ActionEvent;)V) Illegal use of nonvirtual function call

解决方法:

修改netmgr脚本:

$ vi $ORACLE_HOME/bin/netmgr

修改

# Run Net Manager

$JRE -classpath $CLASSPATH oracle.net.mgr.container.NetApplication oracle.net.mgr.container.NetApplication

为:

# Run Net Manager

$JRE -noverify -classpath $CLASSPATH oracle.net.mgr.container.NetApplication oracle.net.mgr.container.NetApplication

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值