RedHat Enterprise Linux 5下Oracle11g安装并升级到11.2.0.3

本文详细介绍了如何在 Red Hat Enterprise Linux 5 下安装 Oracle 11g 数据库,包括系统要求、安装前的系统配置、安装过程以及如何从 Oracle 11.2.0 升级到 11.2.0.3。同时提供了关键步骤的截图和详细说明,确保安装和升级过程顺利进行。

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

 

RedHat Enterprise Linux 5Oracle11g安装

 

一、系统要求

1、最小内存容量:1 GB of RAM

 

2、虚拟内存容量(如下):

Available RAM

Swap Space Required

Between 1 GB and 2 GB

1.5 times the size of RAM

Between 2 GB and 16 GB

Equal to the size of RAM

More than 16 GB

16 GB

 

3、硬盘空间要求:

Installation Type

Requirement for Software Files (GB)

Enterprise Edition

3.95

Standard Edition

3.88

 

4/tmp目录需要1 GB的空闲空间 

 

5Oracle 11g R2数据库支持的操作系统:

Oracle Database 11g Release 2 (11.2) for Linux x86:

Asianux 2.0

Asianux 3.0

Oracle Enterprise Linux 4.0 Update 7 or later

Oracle Enterprise Linux 5.0

Red Hat Enterprise Linux 4.0 Update 7 or later

Red Hat Enterprise Linux 5.0

SUSE Linux Enterprise Server 10.0

SUSE Linux Enterprise Server 11.0

 

二、安装Oracle 11g数据库前系统配置

1、  安装Oracle 11g R2数据库所需相依赖的软件包

binutils-2.17.50.0.6

compat-libstdc++-33-3.2.3

compat-gcc-34-3.4.6-4.i386.rpm

compat-gcc-34-c++-3.4.6-4.i386.rpm

elfutils-libelf-0.125

elfutils-libelf-devel-0.125

elfutils-libelf-devel-static-0.125

gcc-4.1.2

gcc-c++-4.1.2

glibc-2.5-24

glibc-common-2.5

glibc-devel-2.5

glibc-headers-2.5

kernel-headers-2.6.18

ksh-20060214

libaio-0.3.106

libaio-devel-0.3.106

libgcc-4.1.2

libgomp-4.1.2

libstdc++-4.1.2

libstdc++-devel-4.1.2

make-3.81

sysstat-7.0.2

unixODBC-2.2.11

unixODBC-devel-2.2.11

      

       

最后检查包是否已经安装:

rpm -q gcc binutils compat elfutils glibc libaio libgcc libgomp libstdc++ make sysstat

(注:可能有的包还提示“没有安装”,但是明明安装了,并且安装成功就不用管它。)

 

2、 创建Oracle用户

 

# /usr/sbin/groupadd oinstall

# /usr/sbin/groupadd dba

# /usr/sbin/groupadd oper

# /usr/sbin/useradd -g oinstall -G dba oracle

# passwd oracle

 

3、 配置内核相关参数,以便支持Oracle数据库

# vi /etc/sysctl.conf

 

# For Oracle

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 536870912

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586

 

 (注:如果没有相应的参数则添加之;若相应参数值较我给出的值大,请不要修改!)

修改好内核参数后,执行如下命令使新的设置生效:

# /sbin/sysctl -p

4、 修改用户限制:

# vi /etc/security/limits.conf

# For Oracle

oracle           soft    nproc   2047

oracle           hard    nproc   16384

oracle           soft    nofile  1024

oracle           hard    nofile  65536

5、 修改用户验证选项:

# vi /etc/pam.d/login

# For Oracle

session    required     /lib/security/pam_limits.so

session    required     pam_limits.so

6、 创建安装Oracle软件所需要的目录:

# mkdir -p /opt/oracle

# chown -R oracle:oinstall /opt/oracle

# chmod -R 775 /opt/oracle

7、 配置Oracle用户环境变量,以便支持Oracle数据库安装以及今后的操作、维护:

# su - oracle

$ vi ~/.bash_profile

# For Oracle

export ORACLE_SID=PLAYBAR

export ORACLE_BASE=/opt/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export ORACLE_ADMIN=$ORACLE_BASE/admin

export TNS_ADMIN=$ORACLE_HOME/network/admin

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

export JAVA_HOME=$ORACLE_HOME/jdk

export ORA_NLS10=$ORACLE_HOME/nls/data

export PATH=$PATH:$ORACLE_HOME/bin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/lib:$JAVA_HOME/bin

export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

 

if [ $USER = "oracle" ]; then

        if [ $SHELL = "/bin/ksh" ]; then

              ulimit -p 16384

              ulimit -n 65536

        else

              ulimit -u 16384 -n 65536

        fi

fi

 

保存后使用如下命令,使设置生效:

$ source ~/.bash_profile

 

三、安装Oracle 11g数据库

1、解压缩文件:

$ unzip linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip

 

 

由于压缩包是由root用户上传上去的,所以oracle用户无法读取,需要对文件分配权限:# chmod 755 /文件目录(zip所在目录)

2、运行xhost ip 命令启动X-Windows安装界面,如下图所示:

$ xhost +

# su - oracle

# cd database

# export LANG=EN

# ./runInstaller

 

 

安装完毕后用root用户执行两个脚本

[root@c app]# /u01/app/oraInventory/orainstRoot.sh

更改权限/u01/app/oraInventory.

添加组的读取和写入权限。

删除全局的读取, 写入和执行权限。

更改组名/u01/app/oraInventory oinstall.

脚本的执行已完成。

[root@c app]# /u01/app/oracle/product/11.2.0/dbhome_2/root.sh

Running Oracle 11g root.sh script...

The following environment variables are set as:

    ORACLE_OWNER= oracle

    ORACLE_HOME=  /u01/app/oracle/product/11.2.0/dbhome_2

Enter the full pathname of the local bin directory: [/usr/local/bin]:

   Copying dbhome to /usr/local/bin ...

   Copying oraenv to /usr/local/bin ...

   Copying coraenv to /usr/local/bin ...

 

Creating /etc/oratab file...

Entries will be added to the /etc/oratab file as needed by

Database Configuration Assistant when a database is created

Finished running generic part of root.sh script.

Now product-specific root actions will be performed.

Finished product-specific root actions.

[root@c app]#

安装完毕

 

 

 

3、开机自动启动:

 

1、修改oratab

# su - root

# vi /etc/oratab

 

找到

orcl:/u01/app/oracle/product/10.2.0/db_1:N

改为

orcl:/u01/app/oracle/product/10.2.0/db_1:Y

 

也就是将最后的N改为Y,意思是将不允许自动启动改为允许自动启动。

然后,是修改ORACLE自带的启动与关闭脚本,分别是dbstartdbshut。执行这两个脚本就可以实现ORACLE脚本的启动与关闭。

      

2、修改dbstart

# su - oracle

$ cd $ORACLE_HOME/bin

$ vi dbstart

 

找到 ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle

显然这个ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle是不存在的,修改成ORACLE_HOME_LISTNER=$ORACLE_HOME

 

3、编写启动shell

# su - root

# vi /etc/rc.d/init.d/orastart

 

将下面的内容拷贝到/etc/rc.d/init.d/orastart

      

# chkconfig: 2345 90 10

export ORACLE_BASE=/home/oracle_11/app/

export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/db_1

export ORACLE_SID=orcl

export PATH=$PATH:$ORACLE_HOME/bin

ORCL_OWN="oracle"

# if the executables do not exist -- display error

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]

then

   echo "Oracle startup: cannot start"

   exit 1

fi

# depending on parameter -- start, stop, restart

# of the instance and listener or usage display

case "$1" in

start)

# Oracle listener and instance startup

echo -n "Starting Oracle: "

su - $ORCL_OWN -c "$ORACLE_HOME/bin/dbstart"

touch /var/lock/subsys/oradb

su - $ORCL_OWN -c "$ORACLE_HOME/bin/emctl start dbconsole"

echo "OK"

;;

stop)

# Oracle listener and instance shutdown

echo -n "Shutdown Oracle: "

su - $ORCL_OWN -c "$ORACLE_HOME/bin/emctl stop dbconsole"

su - $ORCL_OWN -c "$ORACLE_HOME/bin/dbshut"

rm -f /var/lock/subsys/oradb

echo "OK"

;;

reload|restart)

$0 stop

$1 start

;;

*)

echo "Usage: 'basename $0' start|stop|restart|reload"

exit 1

esac

exit 0

 

 

 

4、授权、启动

       # su - root

# chmod 700 /etc/rc.d/init.d/orastart

# cd /etc/rc.d/init.d/

# chkconfig --add orastart

# chkconfig --list orastart

 

5、其他

# chkconfig: 2345 99 01

其中chkconfig2345 99 01 是指脚本将为运行级2345启动oracle 10g服务,启动优先级为99,关闭优先级为01

 

参考:http://blog.youkuaiyun.com/westmaniac/article/details/6539487

http://www.liusuping.com/ubuntu-linux/redhat-linux-oracle-11g-r2.html

 

 

四、升级Oracle 11.2.0.111.2.0.3

 

1、关闭数据库

 

SQL> conn sys as sysdba

Enter password: sys

Connected.

SQL> shutdown immediate

 

2、停止所有服务

a、关闭所有可能访问数据库的工具。例如Oracle Enterprise Manager/Database Control or SQL*Plus

bemctl stop dbconsole

cisqlplusctl stop

dlsnrctl stop

esqlplus /nolog

fSQL> conn sys as sysdba

Enter password: sys

Connected.

SQL> shutdown

g、使用控制面板关闭服务。

 

3、备份系统

备份内容包括:Oracle Inventory, Oracle 11g Home Oracle 11g Database

tar -cvf  /home/oracle/orabak/DBsoft.tar  $ORACLE_BASE    --确保Oracle相关的所有配置都位于$ORACLE_BASE目录,如监听等

cp *.dbf con*.ctl redo*.log /orabak/  --对数据库实施冷备

 

 

4、升级Oracle database软件

 

升级DB,只需要其中的第一个和第二个文件。将2个文件解压缩,然后将第二个文件的内容copy到第一个文件的对应目录里。即将2个文件合成一个文件。

 

unzip p10404530_112030_Linux-x86-64_1of7.zip

unzip p10404530_112030_Linux-x86-64_2of7.zip

$ cd database/

$ ./ runInstaller

 

 

注意这里,我们选择第三个选项,skip software update,因为我们的patchset已经下载过了,如果选择第二个选项,会遇到如下错误,

 

INS-20704 Thelocation provided is not in the expected directory structure

 

Oracle 给的解决方式是用如下命令来执行:

./runInstaller –downloadUpdates

 

但是这个命令需要收费的Metalink帐号。 MOS 的相关文档:

How To Download The Latest Updates AndPatches Using 11.2.0.2 OUI [ID 1295074.1]

Error: INS-20704 While Installing 11.2.0.2with "Use pre-downloaded software updates" Option [ID 1265270.1]

 

这里要注意,我们之前讲过11gR2Patchset 可以直接用来安装。在这个界面就可以选择操作类型,这个功能比较方便,从而也导致patchset 越来越大,我们这里选择upgrade an existing database

 

 

注意这里的安装位置,我之前的安装目录是11.2.0. 这里我改成了11.2.0.3. 即将oracle 安装到其他位置,这样可以减少宕机时间,也是oracle 推荐的方法。

 

 

注意这里的Inventory directory,这里用来存放安装文件的,我们之前安装过DB,所以这个目录已经存在,2种解决方法,删除之前的目录,二放到其他目录,我这里将安装文件存放到其他目录。

 

 

 

[root@dave oraInventory]#/u01/app/oraInventory2/orainstRoot.sh

Changing permissions of/u01/app/oraInventory2.

Adding read,write permissions for group.

Removing read,write,execute permissions forworld.

 

Changing groupname of/u01/app/oraInventory2 to oinstall.

The execution of the script is complete.

[root@dave oraInventory]#/u01/app/oracle/product/11.2.0.3/db_1/root.sh

Performing root user operation for Oracle11g

 

The following environment variables are setas:

   ORACLE_OWNER= oracle

   ORACLE_HOME= /u01/app/oracle/product/11.2.0.3/db_1

 

Enter the full pathname of the local bindirectory: [/usr/local/bin]:

  Copying dbhome to /usr/local/bin ...

  Copying oraenv to /usr/local/bin ...

  Copying coraenv to /usr/local/bin ...

 

Entries will be added to the /etc/oratabfile as needed by

Database Configuration Assistant when adatabase is created

Finished running generic part of rootscript.

Now product-specific root actions will beperformed.

Finished product-specific root actions.

 

 

 

这里会提示我们配置监听,因为监听之前已经存在,所以这里取消监听配置。

 

 

我们点击下一步时,会提示一些配置失败,是否继续,我们点是。结束Oracle database 软件的安装。

 

 

从上面来看,如果没有错误,在监听配置完毕会,会自动调用DBUA 来升级我们的实例。这里我们配置失败,正好验证下手工升级实例。

 

 

 

3.3 配置新的ORACLE_HOME

这部分工作,主要是准备新的ORACLE_HOME,因为我们的Oracle database 安装到了新的位置,所以我们需要配置一下相关的信息。

 

这部分即使在上面自动调用了DBUA,我们也还是需要进行操作的。

 

 

 

4. 修改Oracle.bash_profile 文件

       我们重新指定了ORACLE_HOME,需要更新到.bash_profile 里。

 

5. 修改/etc/oratab,该目录下也有ORACLE_HOME

[oracle@dave db_1]$ cat /etc/oratab

anqing:/u01/app/oracle/product/11.2.0.3/db_1:N

 

 

具体操作步骤:

[oracle@dave dbs]$ pwd

/u01/app/oracle/product/11.2.0/db_1/dbs

[oracle@dave dbs]$ cp * /opt/oracle/product/11.2.0.3/db_2/dbs/

 

[oracle@dave admin]$ pwd

/u01/app/oracle/product/11.2.0/db_1/network/admin

[oracle@dave admin]$ ls

listener11092710PM3007.bak  samples    sqlnet11092710PM3007.bak tnsnames11092710PM3007.bak

listener.ora                shrept.lst  sqlnet.ora                tnsnames.ora

[oracle@dave admin]$ cp -R * /opt/oracle/product/11.2.0.3/db_2/network/admin

 

[oracle@dave admin]$ cat /home/oracle/.bash_profile|grep ORACLE_HOME

ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db_1; export ORACLE_HOME

TNS_ADMIN=$ORACLE_HOME/network/admin;exportTNS_ADMIN

PATH=$ORACLE_HOME/bin:$PATH; export PATH

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

CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;export CLASSPATH

 

 

手工使用命令升级实例

SQL>conn / as sysdba

SQL> STARTUP UPGRADE

SQL> SPOOL /home/oracle/temp/upgrade_info2.log

SQL>@?/rdbms/admin/utlu112i.sql

SQL> @?/rdbms/admin/catupgrd.sql

SQL> SPOOL OFF

 

还有一点要注意,就是执行这个脚本会产生大量的归档文件,平均3分钟产生40M的归档。

该脚本运行了80分钟。而在Oracle10g下,运行该脚本在40分钟左右。时间增加了一倍。增加了升级系统的宕机时间。

 

SQL> startup

SQL>@?/rdbms/admin/utlrp.sql

 

Verify that all expectedpackages and classes are valid:

SQL> SELECT count(*) FROM dba_invalid_objects;

SQL> SELECT distinct object_name FROM dba_invalid_objects;

 

 

最后调用一下dbca 重建一下OEM

       如果dbca 显示OEM 已经配置过,rm 掉如下2个目录,再次运行就ok了。

ORACLE_HOME/hostname_dbname

ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_hostname_dbname



至此,通过命令升级操作结束。

 

 

 

 

最后验证一下各个组件的版本和状态:

SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;

 

 

 

 

增加shared pooljava pool大小

[oracle@10gpri Disk1]$ sqlplus / as sysdba

SQL>startup

SQL>alter system set shared_pool_size='250M' scope=spfile;

SQL>alter system set java_pool_size='150M' scope=spfile;

SQL>shutdown immediate

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值