靜默升級oracle 11g (從11.2.0.1升級到11.2.0.4)


 

--原文:http://blog.itpub.net/28916011/viewspace-2683059/

 一個環境是oracle 11.2.0.1,一個環境是oracle 11.2.0.4,同樣的數據,同樣的sql,在兩個版本數據庫表現不一樣。於是,干脆都統一為11.2.0.4。 

    但由於環境限制,只能用靜默的方法,把oracle 11.2.0.1 升級到 11.2.0.4。 

    不過,還好,根據網上的文檔,升級過程還算順利。

    下面,我記錄一下升級過程,供自己以后查看,也供有需要的人參考。

1、11.2.0.1環境(待升級數據庫) 

 

 

1
2
3
4
5
6
7
8
SQL>  select  * from  v $version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL /SQL  Release 11.2.0.1.0 - Production
CORE11.2.0.4.0Production
TNS  for  Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

 

 

1
2
3
4
5
6
7
8
9
[root@localhost ~] # su - oracle
[oracle@localhost ~]$  cat  .bash_profile 
export  ORACLE_SID=orcl
export  ORACLE_BASE= /u01/app/oracle
export  ORACLE_HOME=$ORACLE_BASE /product/11 .2.0 /db_1
export  LD_LIBRARY_PATH=$ORACLE_HOME /lib : /lib : /usr/lib
export  CLASSPATH=$ORACLE_HOME /JRE :$ORACLE_HOME /jlib :$ORACLE_HOME /rdbms/jlib
export  PATH=$ORACLE_HOME /bin :$PATH:$HOME /bin
alias  sqlplus= 'rlwrap sqlplus'

2、升級前的准備工作 

2.1、 備份數據庫

    升級數據庫是一個有風險的過程,需要仔細規划和慎重處理。首先要做數據庫的完全備份,備份的內容包括數據文件,控制文件,歸檔文件,日志文件,參數文件,密碼文件等。可以備份一下整個ORACLE_HOME目錄,如果升級有問題,還可以還原回來。備份的方法可以使用dump數據泵,tar,rman等。

     如:RMAN全備 

1
2
3
[oracle@localhost ~]$  export  ORACLE_SID=orcl
[oracle@localhost ~]$ rman target /
RMAN>backup database  format  '/home/oracle/rmanbak/df_%t_%s_%p.bak' ;

    備份老的ORACLE_HOME和oraInventory 

1
2
[oracle@localhost ~]$ tar  –cvfp product. tar .gz  /u01/app/oracle/
[oracle@localhost ~]$ tar  –cvfp oraInventory. tar .gz  /u01/app/oraInventory/

2.2、干凈的關閉數據庫

1
SQL>  shutdown  immediate;

2.3、 關閉數據庫的監聽

在數據庫的升級中,會對數據庫的監聽文件做重新的配置,建議正常的關閉監聽,如下:

 

1
2
[oracle@localhost ~]$ lsnrctl stop
[oracle@localhost ~]$   netstat  -an | grep  1521

2.4、 關閉OEM 

在升級中需要關閉EM,

 

1
2
[oracle@localhost ~]$emctl stop dbconsole
[oracle@localhost ~]$ netstat  -an | grep  1158

2.5、不 對數據庫的任何原有文件做操作   

    本人在升級中,編輯數據庫的監聽文件,導致配置監聽和EM錯誤,故不對數據庫的任何原有文件做操作。

3、安裝oracle 11.2.0.4軟件包

    把oracle 11.2.0.4的安裝包上傳到/home/oracle目錄下,解壓后得到database目錄。 

1
2
3
4
5
6
[oracle@localhost ~]$  ls
p13390677_112040_Linux-x86-64_1of7.zip   p13390677_112040_Linux-x86-64_2of7.zip
[oracle@localhost ~]$ unzip p13390677_112040_Linux-x86-64_1of7.zip
[oracle@localhost ~]$ unzip p13390677_112040_Linux-x86-64_2of7.zip
[oracle@localhost ~]$  ls
database

    開始安裝數據庫軟件11.2.0.4。

1
2
3
4
5
6
7
8
9
10
11
[oracle@localhost ~]$  cd  database
[oracle@localhost ~]$. /runInstaller  -silent -debug -force -ignorePrereq \
DECLINE_SECURITY_UPDATES= true  \
oracle. install .option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION= /u01/app/oraInventory  \
ORACLE_HOME= /u01/app/oracle/product/11 .2.0.4 /dbhome_1  \
ORACLE_BASE= /u01/app/oracle  \
oracle. install .db.InstallEdition=EE \
oracle. install .db.DBA_GROUP=dba \
oracle. install .db.OPER_GROUP=oinstall

     說明:INVENTORY_LOCATION可以和老版本共用一個目錄。ORACLE_BASE和老版本保持一樣,ORACLE_HOME指向了一個新的目錄11.2.0.4/dbhome_1(以前是11.2.0/db_1)。

     不過,這些目錄都是可以隨意指定,我上面做是只是為了版本管控方便。 

    安裝過程大概需要15分鍾左右(根據機型配置時間也不同),安裝過程中有警告[WARNING] 時需要安裝一些i386 的包。查看log安裝即可。

     出現以下字樣表示升級成功。

 

1
2
3
As a root user, execute the following script(s):
         1.  /u01/oracle/app/product/11 .2.0.4 /dbhome_1/root .sh
Successfully Setup Software.

     切換到 root 用戶執行腳本。

 

1
[root@localhost ~] # /u01/oracle/app/product/11.2.0.4/dbhome_1/root.sh

4、配置新環境變量,拷貝參數文件和監聽文件 

4.1、配置新環境變量

1
2
3
4
5
6
7
8
9
10
[oracle@localhost ~]$  whoami 
oracle
[oracle@localhost ~]$  cat  .bash_profile 
export  ORACLE_SID=orcl
export  ORACLE_BASE= /u01/app/oracle
export  ORACLE_HOME=$ORACLE_BASE /product/11 .2.0.4 /dbhome_1
export  LD_LIBRARY_PATH=$ORACLE_HOME /lib : /lib : /usr/lib
export  CLASSPATH=$ORACLE_HOME /JRE :$ORACLE_HOME /jlib :$ORACLE_HOME /rdbms/jlib
export  PATH=$ORACLE_HOME /bin :$PATH:$HOME /bin
alias  sqlplus= 'rlwrap sqlplus'

    上面看到,新環境變量和老環境變量相比,我只修改了一個參數:

1
2
新參數:ORACLE_HOME=$ORACLE_BASE /product/11 .2.0.4 /dbhome_1
老參數:ORACLE_HOME=$ORACLE_BASE /product/11 .2.0 /db_1

     注意: 在10g以后,一般情況下環境變量中沒有必要設置LD_LIBRARY_PATH,但是一旦將ORACLE_HOME遷移到其他目錄,則環境變量中還需要添加這個變量。

    source一下后,環境變量就指向新安裝的11.2.0.4位置了。

1
2
3
4
5
[oracle@localhost ~]$  source  .bash_profile
[oracle@localhost ~]$  env   | grep  ORA
ORACLE_SID=orcl
ORACLE_BASE= /u01/app/oracle
ORACLE_HOME= /u01/app/oracle/product/11 .2.0.4 /dbhome_1

4.2、修改 /etc/oratab 內容為最新位置

1
2
[oracle@localhost ~]$ vim  /etc/oratab
orcl: /u01/app/oracle/product/11 .2.0.4 /db_1 :N

4.3、 將參數文件copy到新的目錄下

1
2
[oracle@localhost ~]$  cd  /u01/app/oracle/product/11 .2.0 /db_1/dbs/
[oracle@localhost dbs]$  cp  -a *  /u01/app/oracle/product/11 .2.0.4 /dbhome_1/dbs/

4.4、 拷貝監聽TNS配置文件到新的目錄下

1
2
[oracle@localhost admin]$   cd  /u01/app/oracle/product/11 .2.0 /db_1/network/admin/
[oracle@localhost dbs]$  cp  -a *  /u01/app/oracle/product/11 .2.0.4 /dbhome_1/network/admin

4.5、啟動監聽 

    先修改新位置下的listener.ora里面的路徑,然后啟動監聽。

1
[oracle@localhost admin]$ lsnrctl start

5、升級數據庫 

    要注意退出oracle用戶重新su - oracle下,然后sqlplus能看到11.2.0.4.0字樣才行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[oracle@19_mysql-slave ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 30 12:10:30 2020
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> startup upgrade
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size        2253664 bytes
Variable Size     1006636192 bytes
Database Buffers    587202560 bytes
Redo Buffers          7319552 bytes
Database mounted.
Database opened.
SQL> @$ORACLE_HOME /rdbms/admin/catupgrd .sql   ---該腳本會運行30分鍾左右

    以上catupgrd.sql腳本整整運行了30分鍾,執行完之后會shutdown immediate數據庫。這個時候我們重啟數據庫即可。

 

1
2
3
4
5
6
7
8
9
10
11
[oracle@localhost admin]$ sqlplus  /nolog
SQL> conn / as sysdba
SQL> startup
SQL>   select  * from  v $version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL /SQL  Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0      Production
TNS  for  Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

6、 運行 utlrp.sql 編譯失效對象

 

    檢查無效對象:

1
2
SQL>  select  from  dba_objects  where  status != 'VALID' ;
SQL>  SELECT  count (*)  FROM  dba_objects  WHERE  status= 'INVALID' ;

    運行utlrp.sql編譯失效對象。

1
SQL> @? /rdbms/admin/utlrp

    該腳本耗時約為3分鍾左右。 至此數據庫已經升級完成。

    最后,重啟數據庫沒有問題就是升級成功了。

7、更新數據庫服務腳本

 將/u01/app/oracle/product/11.2.0.4/dbhome_1/bin/ 下的 dbstart 和 dbshut ,ORACLE_HOME_LISTNER=$1 改為 $ORACLE_HOME 。

1
2
#ORACLE_HOME_LISTNER=$1
ORACLE_HOME_LISTNER=$ORACLE_HOME

8、 升級后的檢查確認

1
2
3
4
5
SQL>  select  status  from  v$instance;
STATUS
  
------------
OPEN   #注意,成功打開數據庫后,這里將是 OPEN ,而非 OPEN  MIGRATE
1
2
3
4
5
6
7
8
SQL>  select  from  v$version;
BANNER
--------------------------------------------------------------------------------
Oracle  Database  11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE   11.2.0.4.0 Production
TNS  for  Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

9、升級成功后需重建EM(沒有EM可忽略該步)

手工創建EM資料庫: 

1
2
3
4
5
6
7
8
####emca -repos drop
[oracle@localhost admin]$ emca -reposdrop
####emca -repos create
  
[oracle@localhost admin]$ emca -reposcreate
  
###emca -config dbcontrol db
[oracle@localhost admin]$ emca-config dbcontrol db

參考鏈接:

1、 https://blog.csdn.net/jycjyc/article/details/89948192

2、 https://www.icode9.com/content-2-4058.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM