使用檔案複製的方式進行資料庫版本升級

djb1008發表於2012-11-05

1.軟硬體環境描述
本文涉及的都是linux+oracle 10g的環境.
有一個已經升級到10.2.0.5的資料庫,該環境將作為模板,需要升級的資料庫的版本有10.2.0.1,10.2.0.3,10.2.0.4.
本文下面的操作能正常執行有幾個前提條件:
A. 目標資料庫和模板的作業系統版本位數應該一致(32位還是64位).(uname -a)
B. 目標資料庫和模板的ORACLE_HOME 應該一致.(echo $ORACLE_HOME)

[@more@]

2.在不停止模板資料庫執行情況下,整理資料庫環境,使用tar,對資料庫執行目錄進行打包.
如果可以,先刪除$ORACLE_BASE/admin/*dump/ 目錄下的日誌檔案,減少tar檔案的數量和容量.
tar -cvf /oracle_product_10205.tar /oracle/product

3. 建立pfile,防止spfile錯誤(optional)
su - oracle
sqlplus / as sysdba
create pfile from spfile;

4.備份目標庫的執行環境和相關執行配置檔案.
本例ORACLE_HOME=/oracle/product/10.2.0/db_1.

mkdir -p /ora_bak/network_admin
mkdir -p /ora_bak/dbs
cp /oracle/product/10.2.0/db_1/network/admin/* /ora_bak/network_admin/
cp /oracle/product/10.2.0/db_1/dbs/* /ora_bak/dbs/
chown -R oracle:dba /ora_bak
chmod -R 755 /ora_bak

5.停止目標資料庫執行
$sqlplus / as sysdba
SQL>alter system checkpoint;
SQL>shutdown immediate;
SQL>exit
$lsnrctl stop listener

6. 備份目標資料庫執行目錄(強烈建議,萬一升級失敗或者誤操作,可以回退)
su - oracle
tar -cvf /oracle_product_10204.tar /oracle/product
備份完成後,直接刪除$ORACLE_BASE目錄下的product,本例為/oracle/product;刪除前,先檢查一下資料庫資料檔案是否在$ORACLE_BASE/product目錄中,如果在,請先備份下來.
rm -rf /oracle/product

7. ftp 模板到目標資料庫(或者透過nfs去訪問模板,推薦),然後使用tar進行解包
ftp...( or nfs access)
su - oracle
cd /
tar -xvf /mnt/oracle_product_10205.tar

8. 目標庫複製相關配置檔案到相應的目錄
su - oracle
cp /ora_bak/network_admin/* $ORACLE_HOME/network/admin/
cp /ora_bak/dbs/* $ORACLE_HOME/dbs

9. 資料庫的版本升級
sqlplus / as sysdba
SQL>startup upgrade
SQL>alter system set shared_pool_size=600m scope=memory;
SQL>@?/rdbms/admin/catupgrd.sql

SQL>shutdown immediate;
SQL>startup
SQL>@?/rdbms/admin/utlrp.sql

10.啟動監聽器.
$lsnrctl start listener

到此,資料庫升級完成,透過這個方法升級資料庫,比執行補丁安裝程式,跑java圖形安裝介面要快一半的速度.筆者使用這個方法升級,1個資料庫30分鐘可以搞定.

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

相關文章