在RedHat Enterprise Linux 上Oracle 9i的安装配置与调优[原创全面规范]


本文带有图片的完整文档下载地址:http://heyLinux.com/download/Oracle9i.zip

 

1 安装配置Oracle 9i数据库

本章描述内容如下所示:
1.1 安装前的准备工作
介绍在安装Oracle之前所需的准备工作。
1.2安装前的系统设置
介绍在安装Oracle之前所必须的系统设置。
1.3 安装所需软件补丁包
介绍在基于RedHat Enterprise Linux AS4操作系统上安装Oracle之前所需软件补丁包的安装。
1.4 安装所需软件补丁包
介绍在基于RedHat Enterprise Linux 5操作系统上安装Oracle之前所需软件补丁包的安装。
1.5 安装配置Oracle数据库
介绍如何安装设置Oracle数据库软件。
1.6 编辑配置Oracle启动脚本
介绍如何创建并配置Oracle自定义脚本。

 

1.1 安装前的准备工作
1.1.1 获取数据库安装包
确保已取得9.2.0.4版本的Oracle数据库安装文件;
-ship_9204_linux_disk1.cpio.gz
-ship_9204_linux_disk2.cpio.gz
-ship_9204_linux_disk3.cpio.gz

确保已取得安装所需的软件补丁包;
-oracle9i_rhel_sp.zip

1.1.2 检查操作系统版本
执行命令# cat /etc/redhat-release,检查操作系统版本信息。

屏幕显示信息为
Red Hat Enterprise Linux Server release 5.2 (Tikanga)
表示已是符合要求的RHEL 5.0以上版本。

Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
表示已是符合要求的RHEL AS4.0以上版本。

 

1.2 安装前的系统设置
1.2.1 创建用户和组
添加安装过程中需要用到的用户和组;
$ su – root  //直接使用root登录或切换到root身份
# groupadd oinstall  //添加用户组oinstall
# groupadd dba  //添加用户组dba
# useradd –g oinstall –G dba oracle  //添加用户oracle
# passwd oracle  //为oracle用户设置密码

1.2.2 创建安装目录
# mkdir –p /data/install
# cp ship_9204_linux_disk1.cpio.gz /data/install
# cp ship_9204_linux_disk2.cpio.gz /data/install
# cp ship_9204_linux_disk3.cpio.gz /data/install
# cp oracle9i_rhel_sp.zip /data/install

//将所有的安装包以及补丁包拷贝到该install文件夹里

# chown –R oracle.oinstall /data  //将目录权限属主更改为oracle用户

1.2.3 进行系统设置
a)设置内核参数
编辑/etc/sysctl.conf
kernel.shmmax = 2147483648  //这里设置为物理内存的一半,但32位RedHat最大仅支持4*1024*1024*1024 - 1 = 4294967295个字节
kernel.shmmni = 4096
kernel.shmall = 8388608
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

执行sysctl以反应修改,使内核参数立刻生效
# sysctl –p

b)设置Oracle对文件的要求
编辑/etc/security/limits.conf 添加以下内容到文档尾部
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

c)设置Oracle环境变量
编辑/home/oracle/.bash_profile 添加以下内容到文档尾部
export ORACLE_SID=SFENET   //根据需要填写
export ORACLE_BASE=/data/oracle
export ORACLE_HOME=/data/oracle/product/9.2.0.4
export LD_LIBRARY_PATH=/data/oracle/product/9.2.0.4/lib:/lib:/usr/lib:/usr/local/lib:/usr/X11R6/lib
export TNS_ADMIN=/data/oracle/product/9.2.0.4/network/admin
export ORA_NLS33=/data/oracle/product/9.2.0.4/ocommon/nls/admin/data
export ORACLE_OWNER=oracle
export ORACLE_TERM=xterm
export PATH=/data/oracle/product/9.2.0.4/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

1.3 安装所需软件补丁包(基于RedHat Linux AS 4)
a)解压准备好的补丁压缩包
# cd /data/install
# unzip oracle9i_rhel_sp.zip
# cd /data/install/oracle9i_rhel_sp/

b)打p3006854_9204_LINUX.zip
# unzip p3006854_9204_LINUX.zip
# chmod +x 3006854/rhel3_pre_install.sh
# 3006854/rhel3_pre_install.sh

c)安装其它软件补丁包
# rpm -ivh compat-db-4.1.25-9.i386.rpm
# rpm -ivh compat-gcc-32-3.2.3-47.3.i386.rpm
# rpm -ivh compat-gcc-32-c++-3.2.3-47.3.i386.rpm
# rpm -ivh libaio-devel-0.3.105-2.i386.rpm
# rpm -ivh libaio-0.3.105-2.i386.rpm
# rpm -ivh compat-oracle-rhel4-1.0-5.i386.rpm
# rpm -ivh compat-libcwait-2.1-1.i386.rpm
# rpm -ivh compat-libgcc-296-2.96-132.7.2.i386.rpm
# rpm -ivh compat-libstdc++-296-2.96-132.7.2.i386.rpm
# rpm -ivh compat-libstdc++-33-3.2.3-47.3.i386.rpm
# rpm -ivh openmotif21-2.1.30-11.RHEL4.6.i386.rpm
# rpm -ivh giflib-4.1.3-8.i386.rpm
# rpm -ivh glib-1.2.10-26.fc7.i386.rpm
# rpm -ivh libpng10-1.0.18-2.i386.rpm
# rpm -ivh ORBit-0.5.17-22.rhel5.i386.rpm
# rpm -ivh gtk+-1.2.10-57.fc7.i386.rpm
# rpm -ivh imlib-1.9.15-2.fc7.i386.rpm
# rpm -ivh gnome-libs-1.4.1.2.90-44.1.i386.rpm
# rpm -ivh gnome-libs-devel-1.4.1.2.90-44.1.i386.rpm
# rpm -ivh xorg-x11-deprecated-libs-devel-6.8.2-1.EL.13.36.i386.rpm
# rpm -ivh xorg-x11-deprecated-libs-6.8.2-1.EL.13.36.i386.rpm

1.4 安装所需软件补丁包(基于RedHat Enterprise Linux 5)
a)解压准备好的补丁压缩包
# cd /data/install
# unzip oracle9i_rhel_sp.zip
# cd /data/install/oracle9i_rhel_sp/

b)打p3006854_9204_LINUX.zip
# unzip p3006854_9204_LINUX.zip
# chmod +x 3006854/rhel3_pre_install.sh
# 3006854/rhel3_pre_install.sh

c)安装其它软件补丁包
# rpm -ivh compat-libcwait-2.1-1.i386.rpm
# rpm -ivh compat-db-4.2.52-5.1.i386.rpm
# rpm -ivh libXp-1.0.0-8.i386.rpm
# rpm -ivh libXp-devel-1.0.0-8.i386.rpm
# rpm -ivh openmotif-2.3.0-0.3.el5.i386.rpm
# rpm -ivh openmotif-devel-2.3.0-0.3.el5.i386.rpm
# rpm -ivh giflib-4.1.3-8.i386.rpm
# rpm -ivh glib-1.2.10-26.fc7.i386.rpm
# rpm -ivh libpng10-1.0.18-2.i386.rpm
# rpm -ivh ORBit-0.5.17-22.rhel5.i386.rpm
# rpm -ivh gtk+-1.2.10-57.fc7.i386.rpm
# rpm -ivh imlib-1.9.15-2.fc7.i386.rpm
# rpm -ivh gnome-libs-1.4.2-7.rhel5.i386.rpm

d)创建软链接
# ln -s /usr/lib/libstdc++-libc6.2-2.so.3 /usr/lib/libstdc++-libc6.1-1.so.2

1.5 安装配置Oracle数据库
a)重新登录操作系统
注销当前用户后通过oracle用户登录到图形界面

b)解压Oracle安装文件
$ cd /data/install
$ 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

c)安装Oracle9i数据库服务器
$ export LANG=en_US.UTF-8  //更改系统语言为English
$ Disk1/runInstaller  //启动安装程序

弹出Oracle安装向导界面,如下图所示。
选择“Next”。

出现如下图所示对话框,保持默认不变,继续下一步“OK”。

弹出“UNIX Group Name”窗口,如下图所示。

设置数据库组名。
在“UNIX Group Name”文本框中填写数据库组名“oinstall”。
在“UNIX Group Name”窗口单击“Next”。
安装程序将弹出“Oracle Universal Installer”对话框,要求以root用户执行/tmp/orainstRoot.sh脚本,如下图所示。

新建一个终端窗口,切换到root用户身份并执行脚本
$ su - root
# /tmp/orainstRoot.sh

屏幕显示类似如下信息即表示执行成功
Creating Oracle Inventory pointer file (/etc/oraInst.loc)
Changing groupname of /data/oracle/oraInventory to oinstall.

脚本执行完毕后,返回到当前图形安装界面
在“Oracle Universal Installer”对话框中单击“Continue”。

安装程序进入“File Locations”窗口,设置“File Locations”,如下图所示。

在“File Locations”窗口单击“Next”

安装程序进入“Available Products”窗口,如下图所示。

在“Select a product to install”下的产品类型选项中选择“Oracle9i Database 9.2.0.4.0”单选框。

在“Available Products”窗口单击“Next”。安装程序进入“Installation Types”窗口,如下图所示。

选择“Enterprise Edition”企业版安装类型。
在“Installation Types”窗口单击“Next”。

安装程序进入“Database Configuration”窗口,如下图所示。

在“Select a database suited to your needs.”下的数据库配置方式选项中选择“Software Only”单选框,只安装软件,实例创建到后面有描述。
在“Database Configuration”窗口单击“Next”。

安装程序进入“Summary”窗口,如下图所示。

确认安装选项后单击“Install”。

安装程序进入“Install”窗口,如下图所示。

弹出“Setup Privileges”提示框,

要求执行root.sh脚本,如下图所示。

在等待安装的过程中,系统会弹出“Setup Privileges”提示框,要求以root用户执行/data/oracle/product/ 9.2.0.4/root.sh脚本。请根据以下步骤继续安装。

新建一个终端窗口,切换到root用户身份并执行脚本
$ su - root
# /data/oracle/product/ 9.2.0.4/root.sh
脚本执行过程中,对系统提示需配置的配置项,请保持默认配置,直接按“Enter”键即可。
如出现“Now product-specific root actions will be performed.”字样表示执行成功。
脚本执行完毕后,返回到当前图形安装界面。

在“Setup Privileges”提示框单击“OK”。

请等待安装至100%。

安装至100%后安装程序进入“End of Installation”窗口,单击“Exit”。

d)解决安装Configuration Tools中的错误
解决Agent Configuration Assistant启动失败的问题
$cd /data/oracle/install/oracle9i_rhel_sp/
$ unzip p3238244_9204_LINUX.zip
$ cp 3238244/files/lib/stubs/* $ORACLE_HOME/lib/stubs/
$ cd $ORACLE_HOME/network/lib/
$ make -f ins_oemagent.mk install

解决Oracle Net Configuration Assistant, Oracle Database Configuration Assistant启动失败的问题
$ rm $ORACLE_HOME/JRE
$ ln -s $ORACLE_BASE/jre/1.3.1/ $ORACLE_HOME/JRE
$ ln -s $ORACLE_HOME/JRE/bin/java $ORACLE_HOME/JRE/bin/jre
$ ln -s $ORACLE_HOME/JRE/bin/i386/native_threads/java $ORACLE_HOME/JRE/bin/i386/native_threads/jre

解决Net Manager启动失败的问题
$cd $ORACLE_HOME/bin/
$vi 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

e)执行dbca配置并创建数据库
在控制台执行命令dbca,显示安装准备界面如下图所示。
$ dbca

安装准备完毕后,显示安装欢迎窗口如下图所示。

单击“Next”,显示操作类型选择窗口如下图所示。

选择“Create a database”后,单击“Next”,显示数据库模式选择窗口如下图所示。

选择“New Database”后,单击“Next”,显示数据库信息设置窗口如下图所示。

设置“Global Database Name”和“SID”为“SFENET”,单击“Next”,显示“Database Features”窗口如下图所示。
Global Database Name:全局数据库名称。
SID:Oracle数据库实例名。

将“Database Features”页签中所选中的内容全部取消。
在取消各项内容时,弹出提示窗口示例如下图所示。

单击“Yes”,显示下图所示窗口。

单击“Standard database features...”,显示窗口如下图所示。

将“Standard database features”页签中所选中的内容全部取消。

在取消各项内容时,弹出提示窗口示例如下图所示。

单击“Yes”,显示下图所示窗口。

单击“OK”,再单击“Next”,显示下图所示窗口。

选择“Dedicated Server Mode”,单击“Next”,显示参数设置窗口如下图所示。

在“Memory”页签中设置“Shared Pool”为“400”,“Buffer Cache”为“1000”,“Java Pool”为“100”,“Large Pool”为“40”,“PGA”为“24”后,选择“Character Sets”页签如下图所示。

根据实际应用不同,考虑到中文支持良好的情况,选择“ZHS16GBK”为佳,若是多语言国际性应用系统则应选择“UTF8”。
在“Character Sets”页签中设置数据库字符集为“UTF8”,选择“DB Sizing”页签如下图所示。

保持“Block Size”和“Sort Area Size”参数为默认即可。然后选择“File Locations”页签如下图所示。

保持此页签所有选项为默认即可,然后选择“Archive”页签,设置以下参数,如下图所示。

在海量数据下做数据恢复的时候,开启了该归档模式会导致恢复时磁盘空间不足,从而导致数据恢复失败。
于是这里选择非归档模式,即不要选择“Archive Log Mode”复选框。

然后点击“Next”按钮,进入“Database Storage”窗口,如下图所示。

选择“Controlfile”,显示数据库控制文件信息如下图所示。

单击“Options”页签,如下图所示。

修改“Maximum no. of datafiles”参数为“500”,修改“Maximum no. of redo log files”参数为“40”,修改“Maximum no. of  log members”参数为“3”。

在“Storage”目录树中选择“Tablespaces”中的“INDX”目录,如下图所示。
“INDX”目录“General”页签

按照所示修改Tablespaces目录中INDX的文件名,路径和容量。
Storage-Tablespaces-INDX            File Name                                                  File Directory Size
indx01.dbf                                  {ORACLE_BASE}/oradata/{DB_NAME}/    100MB

Tablespaces分支文件属性的设置方法如下:
双击File Name、File Directory或Size的值域框,弹出“Edit Datafile”对话框。
进入“General”页签,在“Name”文本框中输入“File Directory/File name”,在File Size文本框中输入文件大小。
进入“Storage”页签,去掉“Automatically extend datafile when full(AUTOEXTEND)”复选框。
后面的Tablespaces分支文件都要按照上述方法进行操作。

按照所示修改Tablespaces目录中SYSTEM的文件名,路径和容量。
Storage-Tablespaces-SYSTEM     File Name                                                     File Directory Size
system01.dbf                             {ORACLE_BASE}/oradata/{DB_NAME}/       2000MB

按照所示修改Tablespaces目录中TEMP的文件名,路径和容量。
Storage-Tablespaces-TEMP         File Name                                                     File Directory Size
temp01.dbf                                {ORACLE_BASE}/oradata/{DB_NAME}/      2000MB
temp02.dbf                                {ORACLE_BASE}/oradata/{DB_NAME}/      2000MB

按照所示修改Tablespaces目录中TOOLS的文件名,路径和容量。
Storage-Tablespaces-TOOLS       File Name                                                      File Directory Size
tools01.dbf                                {ORACLE_BASE}/oradata/{DB_NAME}/       100MB

按照所示修改Tablespaces目录中UNDOTBS1的文件名,路径和容量。
Storage-Tablespaces- UNDOTBS1   File Name                                                      File Directory Size
undotbs01.dbf                               {ORACLE_BASE}/oradata/{DB_NAME}/       2000MB
undotbs02.dbf                               {ORACLE_BASE}/oradata/{DB_NAME}/       2000MB
undotbs03.dbf                               {ORACLE_BASE}/oradata/{DB_NAME}/       2000MB
undotbs04.dbf                               {ORACLE_BASE}/oradata/{DB_NAME}/       2000MB

按照所示修改Tablespaces目录中USERS的文件名,路径和容量。
Storage-Tablespaces- USERS          File Name                                                     File Directory Size
users01.dbf                                   {ORACLE_BASE}/oradata/{DB_NAME}/       40MB

在“Storage”目录树中选择“Redo Log Groups”中的“1”目录,按照所示修改大小。
Storage-Redo Log Groups- 1           File Name                                                      File Directory Size
redo01.log                                    {ORACLE_BASE}/oradata/{DB_NAME}/        1024MB

在“Storage”目录树中选择“Redo Log Groups”中的“2”目录,按照所示修改大小。
Storage-Redo Log Groups- 2           File Name                                                      File Directory Size
redo02.log                                    {ORACLE_BASE}/oradata/{DB_NAME}/        1024MB

在“Storage”目录树中选择“Redo Log Groups”中的“3”目录,按照所示修改大小。
Storage-Redo Log Groups-3          File Name                                                       File Directory Size
redo03.log                                   {ORACLE_BASE}/oradata/{DB_NAME}/        1024MB

单击“Next”,显示“Creation Options”窗口如下图所示。

单击“Finish”,显示“Summary”窗口如下图所示。

单击“OK”,显示数据配置脚本生成成功如下图所示。

单击“OK”,显示数据服务创建进度如下图所示。

在创建数据的过程中,会出现如下提示,单击“ignore”即可。

成功创建数据库实例后,设置sys和system用户的密码,如下图所示。

请牢记sys用户密码、system用户密码。

单击“Exit”,退出安装。

f)执行netca配置数据库监听服务
在控制台执行命令netca,显示监听配置界面如下图所示。
$ netca

单击“Next”,显示操作类型选择窗口如下图所示。

选择“Add”后,单击“Next”,显示监听名称配置窗口如下图所示。

单击“Next”,显示监听协议配置窗口如下图所示。

单击“Next”,显示监听端口配置窗口如下图所示。

单击“Next”,显示监听配置结束画面如下图所示。
选择“No”,单击“Next”,然后单击“Finished”退出。
在终端中出现“Listener Started successfully.”字样表示监听成功配置并启动。

g)安装Oracle9i数据库客户端
$ export LANG=en_US.UTF-8  //更改系统语言为English
$ Disk1/runInstaller  //启动安装程序
弹出Oracle安装向导界面,如下图所示。

选择“Next”。

安装程序进入“File Locations”窗口,设置“File Locations”,如下图所示。

在“File Locations”窗口单击“Next”
安装程序进入“Available Products”窗口,如下图所示。

在“Select a product to install”下的产品类型选项中选择“Oracle9i Client 9.2.0.4.0”单选框。
在“Available Products”窗口单击“Next”。

安装程序进入“Installation Types”窗口,如下图所示。

选择“Administrator”管理员安装类型。
在“Installation Types”窗口单击“Next”。

安装程序进入“Oracle Universal Installer”窗口,如下图所示。
确认安装选项后单击“Install”。

安装程序进入“Install”窗口,如下图所示

安装至100%后安装程序进入“End of Installation”窗口,如下图所示。

在“End of Installation”窗口单击“Exit”。

1.6 编写配置Oracle启动脚本
a)编辑 /etc/oratab文件

编辑 /etc/oratab文件,配置以下常用选项:
#*:/data/oracle/product/9.2.0.4:N  //注释掉该选项;
SFENET:/data/oracle/product/9.2.0.4:Y  //修改该选项最后的“N”为“Y”;

b)创建软链接
# ln -s /data/oracle/product/9.2.0.4/dbs/spfileSFENET.ora /data/oracle/product/9.2.0.4/dbs/initSFENET.ora

c)修改dbshut脚本

编辑 /data/oracle/product/9.2.0.4/bin/dbshut文件,修改以下内容:

修改第80行与第85行的 shutdown 为 shutdown immediate

d)编写自定义脚本
创建用于启动、关闭与重启Oracle服务的自定义脚本并命名为oracle9i,内容如下:

================================================================
# !/bin/sh
# chkconfig: 2345 80 03
# description: oracle dabase deamons
# filename:oracle9i

ORACLE_HOME=/data/oracle/product/9.2.0.4
ORACLE_OWNER=oracle

case "$1" in
'start')

ORACLE_PROCESS=`ps -e |grep oracle |wc -l`

if [ $ORACLE_PROCESS -ne 0 ];
then
echo "ERROR: Oracle already running."
sleep 1
else
echo -n "Starting Oracle: "
su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbstart
touch /var/lock/subsys/oracle9i
sleep 2
fi

ORACLE_LISTENER=`ps -e |grep tnslsnr |wc -l`

if [ $ORACLE_LISTENER -ne 0 ];
then
echo "ERROR: Listener already running."
sleep 1
else
echo -n "Starting Listener: "
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
sleep 2
fi

echo
;;

'stop')

ORACLE_LISTENER=`ps -e |grep tnslsnr |wc -l`

if [ $ORACLE_LISTENER -ne 0 ];
then
echo -n "Shutting down Listener: "
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
sleep 2
else
echo "ERROR: Listener already shutdown."
sleep 1
fi

ORACLE_PROCESS=`ps -e |grep oracle |wc -l`

if [ $ORACLE_PROCESS -ne 0 ];
then
echo -n "Shutting down Oracle: "
su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle9i
sleep 2
else

echo "ERROR: Oracle already shutdown."
sleep 1
fi

echo
;;

'restart')

echo "Restarting Oracle: "

$0 stop
$0 start

echo
;;

*)

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

esac

exit 0
================================================================

 

e)配置自定义脚本

通过以下命令将自定义脚本添加至系统自动启动与自动关闭管理服务中:
# cp oracle9i /etc/rc.d/init.d/
# chmod 744 /etc/rc.d/init.d/oracle9i
# chown oracle:oinstall /etc/rc.d/init.d/oracle9i
# ln -s /etc/rc.d/init.d/oracle9i /etc/rc.d/rc3.d/S99oracle9i
# ln -s /etc/rc.d/init.d/oracle9i /etc/rc.d/rc5.d/S99oracle9i
# ln -s /etc/rc.d/init.d/oracle9i /etc/rc.d/rc0.d/K01oracle9i
# ln -s /etc/rc.d/init.d/oracle9i /etc/rc.d/rc6.d/K01oracle9i

这样,系统在开启时将会最后自动启动Oracle,而在关闭时会最先自动关闭Oracle。

f)使用自定义脚本
/etc/init.d/oracle9i start  //启动数据库
/etc/init.d/oracle9i stop  //关闭数据库
/etc/init.d/oracle9i restart  //重启数据库

  1. No comments yet.
(will not be published)
*