**環境: **RHEL5.4 + Oracle 10.2.0.4
**目的: **在本機將資料庫升級到11.2.0.4
之前總結的Oracle資料庫異機升級:http://www.cnblogs.com/jyzhao/p/4813324.html
本文簡單總結下在本機升級的大體步驟,和異機升級的不同點,及需要注意的地方。下面為主要步驟:
1. 新路徑安裝11.2.0.4軟體
比如我這裡10.2.0.4是`/opt/app/oracle`
11.2.0.4就選擇安裝到`/opt/app/oracle11`
即`$ORACLE_BASE`就不一樣。
2. 臨時生效11g軟體環境變數指令碼
vi ora11.env
```
export ORACLE_BASE=/opt/app/oracle11
export ORACLE_HOME=/opt/app/oracle11/product/11.2.0/dbhome_1
export ORACLE_SID=vas
export PATH=$ORACLE_HOME/bin:$PATH
```
需要11g環境變數時, `source /home/oracle/ora11.env`即可。
需要10g環境變數時,新視窗重新登陸oracle使用者即可。
3. 建立必須的目錄
此時環境變數配置是Oracle 11g的。
```
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/dpdump
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/cdump
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/pfile
```
4. 10g庫升級前檢查
此時環境變數配置是Oracle 10g的,但執行的是11g軟體中的指令碼。
```
spool upgrade.info
@/opt/app/oracle11/product/11.2.0/dbhome_1/rdbms/admin/utlu112i.sql
spool off
```
根據檢查結果對資料庫的修正,和Oracle資料庫異機升級的相關部分一樣,不再重複。
5. 備份10g資料庫
此時環境變數配置是Oracle 10g的。
我這裡選擇停機一致性備份,
乾淨關庫(shutdown immediate)啟動到mount(startup mount)備份資料庫(backup database plus archivelog)。
備份的目的當然是防止升級過程中失敗,可以有備份還原庫到最初的狀態。
6. 升級10g資料庫到11g
此時環境變數配置是Oracle 11g的。
注意,這裡直接open upgrade,因為就不需要resetlogs了。
```
alter database open upgrade;
spool upgrade.log
@?/rdbms/admin/catupgrd.sql
spool off
```
升級資料庫後的操作和Oracle資料庫異機升級的相關部分一樣,也不再重複。