RedHat Enterprise Linux 5下Oracle11g安裝並升級到11.2.0.3

 

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.csdn.net/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

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章