程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 如何從Oracle9i升級Oracle10g的技巧

如何從Oracle9i升級Oracle10g的技巧

編輯:Oracle數據庫基礎

在網上找了Oracle9i升級Oracle10g的文章,在這裡與大家共享一下。並做了簡單的transport tablespace的版本升級Oracle10g測試。當然還會有更多的升級Oracle10g的方法。下面就來簡單的講解下。

升級Oracle10g具體的實現方法:

1.先為主庫建立一個dataguard數據庫(可以在線做)

2.在dataguard庫上安裝10g軟件(可以在線做)

3.整理一些不能通過transport tablespace搞定的東西,比如sequence,synonyms,grants......

4.停止主庫這邊所有write的應用,提供read的服務(寫入停止,提供查詢)

5.強制歸檔主庫redo log並傳到dataguard恢復(寫入停止,提供查詢)

6.利用transport tablespace來轉換數據庫版本,並創建sequencee,synonyms,grants等(寫入停止,提供查詢)。

7.驗證新環境的過程,在驗證過程中如果發現有問題,則可以切換會原來的系統(寫入停止,提供查詢)。

8.切換應用到10g數據庫(提供服務)

amadeus在演習時做到10分鐘內完成4,5,6,7並成功切換了系統,考慮到他們的數據庫繁忙程度和數據庫容量非常大,這真是一項偉大的成就。我們可以在以後的數據庫版本的升級過程中借鑒他們的方法。

驗證一下transport tablespace可以運用在版本升級

在9i的庫上創建一個test tablespace

  1. create tablespace test  
  2. datafile '/opt/Oracle/test.dbf' size 10m   
  3. extent management local autoallocate; 

創建一張表在test表空間上

  1. create table test1(a number) tablespace test;  
  2. insert into test1 values(1);  
  3. commit;  
  4. SQL 9i>select * from test1;  
  5.          A  
  6. ----------  
  7.          1  
  8.  

把test表空間置為read only模式

  1. alter tablespace test read only;  

到處test tablespace的metadata 

  1. exp \'sys/sys as sysdba\'  transport_tablespace=y tablespaces=(TEST)  file=test.dmp log=test.log  

傳輸dmp文件和數據文件(在amadeus的案例裡面由於10g的庫和9i的庫在同一台機器上,所以避免了拷貝數據文件的時間,這也是整個方案的重點之一)到遠程

  1. scp test.dmp [email protected]:/opt/Oracle/  
  2. scp /opt/oracle/test.dbf [email protected]:/opt/Oracle/  
  3.  

在目標庫上導入metadata數據

  1. imp \'sys/sys as sysdba\' transport_tablespace=y tablespaces=(TEST) file='/opt/Oracle/test.dmp' datafiles=  
  2. ('/opt/Oracle/test.dbf') tts_owners=test fromuser=test touser=test log=tts_i.log  
  3.  

查看test1表,發現數據一致

  1. SQL 10G>select * from test1;  
  2.          A  
  3. ----------  
  4.          1  
  5.  

把test表空間置為read write模式

  1. alter tablespace test read write;  
  2. insert into test1 values(2);  
  3. SQL 10G>select * from test1;  
  4.         A  
  5. ----------  
  6.          1  
  7.          2  
  8.  

一切正常,測試完畢

這個測試簡單的模仿了transport tablespace升級數據庫的可能性,當然在實際過程中我們要校驗是否自包含表空間,是否需要創建sequence等,但是總體來說這種方案能提供最短時間內的數據庫版本升級。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved