您的位置:首页 > 数据库 > Oracle

Redhat Linux Enterprise 4 上安装 oracle9i

2008-06-19 14:05 471 查看
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.ora中PROCESSES的最大值,同时最小值为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.ini和readme文件 解压 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 name和sid后直接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或更高版本数据库服务),然后输入数据库实例SID:orcl. 然后选择网络协议,双机互联应该选择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 自带的dbstart和dbshut才能够发挥作用。
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: