標籤:ORACLE 升級
跨版本升級(10.2.0.5升級到11.2.0.3)
10.2.0.5版本:ORACLE_BASE: /oracle/u01/app/oracle
ORACLE_HOME: /oracle/u01/app/oracle/product/10.2/db_1
11.2.0.3版本:ORACLE_BASE: /oracle/u02/app/oracle
ORACLE_HOME: /oracle/u02/app/oracle/product/10.2/db_1
描述:新裝11g的軟體,用新的軟體來掛原來10g的庫。
升級步驟:
1、升級前確認資料庫已經完全備份,如果沒做備份,則不要去做升級。
2、可行性問題,是否能夠升級?升級的要求有哪些?應用程式是否支援新的版本?預遷移查看應用是否滿足需求?
先看升級圖,查看是否能升級,高於10.2.0.2才能直接升級到11gR2版本。
3、安裝高版本的資料庫到新的安裝目錄,本例中為/oracle/u02/app/oracle目錄。
4、啟動原來資料庫,建立pfile檔案a.txt,將該檔案存放在/tmp下。
5、跑預升級指令碼(建議指令碼),11g版本跑ORACLE_HOME/rdbms/admin/utlu112i.sql指令碼。 註:ORACLE_HOME為ORACLE軟體的安裝目錄。
6、根據指令碼建議修改/tmp/a.txt檔案,修改資料表空間大小,清空資源回收筒,收集統計資訊。
7、關閉原來資料庫相關的應用,關閉資料庫。
8、用orcle使用者拷貝低版本安裝目錄下ORACLE_BASE/admin檔案夾到11g的ORACLE_BASE下。
9、修改oracle使用者環境變數,將ORACLE_BASE和ORACLE_HOME修改到高版本安裝目錄下。
10、使用root使用者修改/etc/oratab檔案和/etc/oraInst.loc檔案,將相關的路徑修改為新版本的路徑。
11、使用/tmp/a.txt參數檔案啟動資料庫到升級模式,重建spfile檔案,跑升級指令碼升級資料庫。升級完成後資料庫自動關閉。
12、升級完成後重建oraInventory目錄。
13、刪除原來的軟體安裝目錄。
具體實施:
1、查看資料庫是否已經完全備份,如果未做備份,則不要做升級。
2、研究升級的可行性問題,確認以下問題。
資料庫是否能夠升級?
升級的要求有哪些?
應用程式是否支援新版本的資料庫?
做預遷移查看應用是否能夠滿足需求。
尋找資料(官方文檔),查看能否升級,高於10.2.0.2的版本可以直接升級到11gR2版本。
以上問題確認可行後才可升級。
3、安裝高版本的資料庫到新的安裝目錄,本例中為/oracle/u02/app/oracle目錄。
註:oracle11g的升級為全新安裝,從低版本(9i或10g)升級到11g或者從11g低版本升級到11g高版本都是全新安裝。
4、啟動原來的資料庫,建立pfile檔案(/tmp/a.txt)。
註:pfile檔案為資料庫的參數檔案,記錄資料庫的pga、sga、控制檔案位置等資訊。在啟動資料庫時用到。
此處建立pfile檔案的目的是用新版本的資料庫軟體啟動原來的資料庫。
oracle使用者登入系統,連結資料庫。
sqlplus / as sysdba; 註:oracle使用者執行此命令連結到資料庫。
SQL> startup 註:啟動資料庫,如果資料庫已經啟動則會報錯。
SQL> create pfile=‘/tmp/a.txt‘ from spfile; 註:建立新的參數檔案/tmp/a.txt
5、跑預升級指令碼(建議指令碼),該指令碼的作用是檢查資料庫升級時有哪些參數需要修改。
SQL> spool /tmp/test.txt 註:開啟spool,將該命令之後執行的sql語句及結果存放在/tmp/test.txt檔案中。
SQL> @/oracle/u02/app/oracle/product/10.2/db_1/rdbms/admin/utlu112i.sql
SQL> spool off;
6、查看/tmp/test.txt檔案,根據提示修改/tmp/a.txt檔案,修改資料表空間大小,清空資源回收筒,收集統計資訊。
修改/tmp/a.txt檔案:
刪除原執行個體名開頭的所有行。
刪除.background_dump_dest開頭的行
刪除.user_dump_dest開頭的行
刪除.core_dump_dest開頭的行
添加.diagnostic_dest=‘/oracle/u02/app/oracle‘
按照/tmp/a.txt檔案中的建議加大sga_target和pga_aggregate_target參數大小。
修改.compatible的值:.compatible=‘11.2.0.0.0‘
修改.audit_file_dest的路徑:.audit_file_dest=‘/oracle/u02/app/oracle/admin/fsdb/adump‘
修改資料表空間的大小。
SQL> select file_name,tablespace_name,bytes/1024/1024 from dba_data_files; 查看各個資料表空間資料檔案的大小。
SQL> select file_name,tablespace_name,bytes/1024/1024 from dba_temp_files; 查看temp資料表空間的資料檔案大小。
SQL> alter database datafile ‘/oradata/fsdb/sysaux01.dbf‘ resize 500M; 修改sysaux資料表空間資料檔案大小為500M。
SQL> alter database tempfile ‘/oradata/fsdb/temp01.dbf‘ resize 400M; 修改temp資料表空間資料檔案大小為400M。
清空資源回收筒:
SQL> purge dba_recyclebin;
SQL> purge user_recyclebin;
收集統計資訊:
SQL> execute dbms_stats.gather_dictionary_stats;
具體修改為多大要根據/tmp/test.txt檔案中的建議修改。
7、關閉應用,關閉原來的資料庫。
SQL> shutdown immediate;
8、oracle使用者複製oracle10g的ORACLE_BASE目錄下的admin檔案夾到11g下的ORACLE_BASE下。
cp -r /oracle/u01/app/oracle/admin /oracle/u02/app/oracle
9、oracle使用者修改oracle使用者的環境變數,將ORACLE_HOME和ORACLE_BASE修改到11g的安裝目錄下。
vi /home/oracle/.bash_profile 註:編輯oracle使用者的環境變數
export ORACLE_BASE=/oracle/u02/app/oracle
export ORACLE_HOME=/oracle/u02/app/oracle/product/10.2/db_1 註:後面兩行為修改後的內容
10、使用root使用者修改/etc/oratab檔案和/etc/oraInst.loc檔案,將相關的路徑修改為11g的路徑。
vi /etc/oratab 註:修改/etc/oratab檔案,該檔案與oracle資料庫是否開機啟動相關。
fsdb:/oracle/u02/app/oracle/product/10.2/db_1:N 註:對該行做出修改,將路徑改為11g的路徑。
vi /etc/oraInst.loc 註:修改/etc/oraInst.loc檔案,該檔案控制oraInventory的存放路徑。
inventory_loc=/oracle/u02/app/oracle/oraInventory 註:將oraInventory存放路徑修改為11g的路徑。
11、使用/tmp/a.txt參數檔案啟動資料庫到升級模式,建立新的spfile檔案,跑升級指令碼。完成後資料庫自動關閉。
oracle使用者登入到空執行個體。 sqlplus / as sysdba
SQL> startup upgrade pfile=‘/tmp/a.txt‘; 註:使用/tmp/a.txt參數檔案啟動資料庫到升級模式。
SQL> create spfile from pfile=‘/tmp/a.txt‘; 註:建立新的spfile檔案,方便以後啟動資料庫。
SQL> @?/rdbms/admin/catupgrd.sql 註:執行升級指令碼,完成資料庫的升級。
12、重建oraInventory目錄。
oracle使用者到$ORACLE_HOME/oui/bin目錄下,執行以下命令;
./runInstaller -slient -attachHome ORACLE_HOME="/oracle/u02/app/oracle/product/10.2/db_1" ORACLE_HOME_NAME="oracleHome";
註:ORACLE_HOME為11g軟體的ORACLE_HOME,ORACLE_HOME_NAME可以任意指定,不會有什麼影響。
執行完成後重啟資料庫,查看資料庫版本,查看資料庫是否正常。
13、確認正常無誤後刪除10g資料庫的安裝目錄。
ORACLE跨版本升級