oracle小版本升級patch過程和分析

dotaddjj發表於2012-09-07

看過很多篇關於oracle資料庫升級的文章,也做過相應的測試和生產環境中的實施,下面自己動手測試的一則比較完整的資料庫的10.2.0.1升級到10.2.0.5的步奏和分析,雖然不是很難,但是還是願意分析一下自己的思路。當然這種實施的還是推薦大家自己多動手,相信很快能掌握其中的要領

[root@localhost ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda1 12G 8.5G 2.7G 77% /

/dev/sda2 1.9G 40M 1.8G 3% /home

tmpfs 385M 0 385M 0% /dev/shm

/dev/sdb1 4.6G 1.3G 3.2G 28% /backup

[root@localhost ~]# cd /backup/

[root@localhost backup]# ls

Disk1 lost+found README.html

上述的Disk1是下載的10.2.0.5patchoracle官網可能已經停止了oracle 10g相關方面的下載,有mos的可以直接從mosdownload下來。

廢話一點自己的習慣:

個人有個習慣,做實施方面可能第一次我會嚴格參照文件上面來做,主要是保證其成功即可,而後自己還是喜歡去分析為什麼要這麼做,可能有自己的辦法可能也會同意大家的做法,想想自己從linux上安裝oracleracasm等實施,懂得其中的緣由脫離文件也是一個非常容易的事情。

升級資料庫當然需要對資料庫軟體進行升級,而後對資料庫的資料檔案進行相應的update,軟體升級前我們要備份oracle的軟體,那麼資料檔案update當然需要備份其資料,那麼可以考慮的就有兩種了冷備和熱備。

軟體備份

[root@localhost backup]# su - oracle

[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Sep 6 10:36:55 2012

Copyright (c) 1982, 2005, Oracle. All rights reserved.

[oracle@localhost ~]$ cd $ORACLE_HOME

[oracle@localhost db_1]$ pwd

/db/oracle/oracle/product/10.2.0/db_1

[oracle@localhost db_1]$ tar -cvzf ora_home.tar.gz ./

軟體升級主要是對ORACLE_HOME下的檔案進行修改,先對其打tar包。

資料檔案備份:

需要備份的檔案主要是spfilecontrolfiledatafile,如果是採取的冷備份方式直接cp的方式備份資料檔案所在的目錄即可,而如果是熱備,則需要備份controlfiledatafile以及備份的control中未完全記錄的archivelog

RMAN> run{

2> allocate channel disk1 type disk;

3> delete obsolete;

4> crosscheck backup;

5> delete expired backup;

6> backup database format '/backup/db_%d_%T_%s'

7> plus archivelog delete all input format '/backup/arch_%d_%T_%s';

8> backup current controlfile format '/backup/ctl_%d_%T_%s';

9> release channel disk1;

10> }

上述是自己經常用的全備份指令碼。

接下來正常關閉資料庫,此時buffer cache中的資料已經全部syncdisk中去,接下來可以放心的升級了!

RMAN> shutdown immediate;

升級軟體前請先關閉所有使用ORACLE_HOME下面的物件的程式,不然後續可能無法正常打patch

這裡也可以利用oracle 10R2中的restore point功能來實現升級,由於生產庫一般是不開啟flashback database

SQL>shutdown immediate;

SQL>startup mount;

SQL>create restore point upgrade guarantee flashback database;

這裡建立一個restore point upgrade,而後如果升級失效可以直接回退這個點,這樣也就不需要備份資料檔案和控制檔案了,restore point是記錄在控制檔案中,而後相應的記錄改變都會記錄在閃回區中,所以需要保證閃回恢復區的容量足夠大,相對於rman的恢復更節省了時間(不需要restore資料檔案)。

升級軟體完畢後需要用upgrade啟動資料庫,執行相應的資料字典更新和編譯失效的系統物件。

[oracle@localhost ~]$ cd /db/oracle/oracle/product/10.2.0/db_1/rdbms/admin/

[oracle@localhost admin]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.5.0 - Production on Thu Sep 6 23:06:17 2012

Copyright (c) 1982, 2010, Oracle. All Rights Reserved.

Connected to an idle instance.

SQL> startup upgrade;

ORACLE instance started.

Total System Global Area 524288000 bytes

Fixed Size 1274668 bytes

Variable Size 272633044 bytes

Database Buffers 247463936 bytes

Redo Buffers 2916352 bytes

Database mounted.

Database opened.

SQL>spool ‘/tmp/catupgrd.log’

SQL>start catupgrd.sql

更新資料字典,此過程比較漫長,適當的增加shared pooljava pool網路上說是可以增加更新速度,不過一般生產環境中肯定的是足夠的。

SQL>spool off;

SQL>shutdown immediate;

編譯失效的物件

SQL>startup;

SQL>start utltp.sql

SQL>start catalog.sql

SQL>start catproc.sql

檢查是否正常升級

SQL> col comp_name for a30

SQL> col version for a20

SQL> select comp_name,version from dba_registry;

SQL> select comp_name,version from dba_registry;

COMP_NAME VERSION

------------------------------ --------------------

Oracle Database Catalog Views 10.2.0.50

Oracle Database Packages and T 10.2.0.5.0

ypes

Oracle Workspace Manager 10.2.0.5.0

JServer JAVA Virtual Machine 10.2.0.5.0

Oracle XDK 10.2.0.5.0

……

升級全部完成,如果其中出現了不可預料的錯誤,我們至少可以正常回退軟體和資料檔案,不會影響系統的使用。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1059365/,如需轉載,請註明出處,否則將追究法律責任。

相關文章