資料庫的升級和降級[轉載wisdomone1 ]

anycall2010發表於2008-06-27

一、        ORACLE9I升級到10G(zt)

一、        ORACLE9I升級到10G的簡要說明:
Win
Oracle9208如何升級到Oracle10.2.0.1
1
、 關閉原9208資料庫,執行一個完全冷備。

2
、 安裝ORACLE10g,選擇一個跟9208不同的Home,安裝的時候選擇不裝資料庫。
3
、 以SYSDBA身份登陸到SQLPLUS,執行:
Sql>spool upgrade.info
Sql>@ oracle10G_HOMErdbmsadminutlu102i.sql
Sql>spool off
注意螢幕的輸出
4
、在Tablespace欄提示有些表空間需要額外的空間:
Autoextend Additional space required:165mb.
查詢原原資料庫的空間大小和剩餘空間。
Sql>select tablespace_name,bytes from dba_data_files;
Sql>select tablespace_name,sum(bytes) from dba_free_space group by tablespace_name;
擴充套件提示需增加空間的表空間。
Sql>alter database tablespace system add datafile
‘d
racleoradatatestsystem02.dbf’ size 200m;
Sql>alter database datafile
‘d
racleoradatatestxdb01.dbf’ resize 50m’;
4
、 拷貝9iinitsid.ora檔案到10gHomedatabase目錄下。
執行選單下的Database Upgrade Assistant,根據提示一步一步操作。如不能成功,則手工升級,依次執行以下順序。
5
、 拷貝9i的密碼檔案pwdsid.ora10gHomedatabase目錄下。
6
、 拷貝9iHomenetworkadmin下的tnsname.oralisterna.orasqlnet.ora10GHomenetworkadmin目錄。
7
、 根據upgrade.info的提示,修改10GHomedatabaseinitSid.ora引數檔案。
8
、 關閉9I資料庫
9
、 在命令列用cmd>oradim –delete –sid sid刪除WINDOWS服務下的例項。
10
、 在命令列用cmd.>oradim –new –sid sid pfile=’path’建立新的例項。
11
、 停止原9ilisterner服務
12
、 用sysdba的身份登陸到sqlplus,以upgrade的方式啟動資料庫。
Startup upgrade
啟動時提示LRM-00116: ‘D:ORACLELOGSDB後跟’=’出現語法錯誤
ORA-01078
:處理系統引數失敗
根據提示,修改10GHomedatabaseinitsid.ora,utl_file_dir=d raclelogs
註釋掉。重新執行sql>startup upgrade成功。
13
、 建立sysaux表空間。
Sql>create tablespace sysaux
Datafile ‘d
racleoradatatestsysaux01.dbf’ size 500m
Extent management local
Segment space management auto
Online;
15
@d racle10.2rdbmsadmincatupgrd.sql;(此過程在我電腦花費約1個半小時)。
16
sql>shutdown immediate;
17
sql>startup
18
sql>@d racle10.2rdbmsadminutlrp.sql
To recompile any invalid application object
執行完畢後執行查詢所有重新編譯錯誤
Sql> select * from utl_recomp_errors;

19
、啟動10Glisterner服務
測試,升級完畢。

二、        Oracle9i升級為10g及降級

DBUA 升級:
---------------------------------------------------------------------------------------
確保 /var/opt/oracle/oratab 中包括要升級的資料庫

dbua第二步選中該資料庫

升級會要求增加sysaux表空間及資料檔案

選擇是否使用OEM管理,不選

預設安裝後會重新編譯無效物件

手工升級:

DBUA
升級
:
---------------------------------------------------------------------------------------
確保 /var/opt/oracle/oratab 中包括要升級的資料庫

dbua第二步選中該資料庫

升級會要求增加sysaux表空間及資料檔案

選擇是否使用OEM管理,不選

預設安裝後會重新編譯無效物件


手工升級:
---------------------------------------------------------------------------------------
1.
設定環境變數
:
ORACLE_HOME
PATH
ORA_NLS10 --
好像不需要

LD_LIBRARY_PATH

2.
拷貝pfile,spfile,pwdfile10gdbs目錄下
startup upgrade

3.
建立SYSAUX表空間:
CREATE TABLESPACE sysaux DATAFILE '/oracle/oradata2/upgrade/sysaux01.dbf'
SIZE 500M REUSE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO

4. spool upgrade.log
@?/rdbms/admin/catupgrd
spool off

5.
通過下面指令碼檢視升級結果
:
@?/rdbms/admin/utlu102s.sql

6.
編譯無效物件
:
@?/rdbms/admin/utlrp


降級
:
---------------------------------------------------------------------------------------
可以從10.2.0降到
9.2
1.
確保compatible引數為
9.2.0.0.0
2. startup downgrade

3. spool downgrade.log
@?/rdbms/admin/dwgrd
spool off
shutdown immeidate

4.
設定相關的環境變數,設定到9i的目錄
:
ORACLE_HOME
PATH
LD_LIBRARY_PATH

5. startup migrate
spool reload.log
@?/rdbms/admin/catrelod
spool off

6.
重新編譯無效物件
:
@?/rdbms/admin/utlrp

 

三、        Oracle升級(10.1.0.3->10.1.0.5)  
今天做了10.1.0.3級到10.1.0.5的升級測試,感覺挺簡單的!期間參考了readme文件.推薦大家多使用Oracle提供的官方文件,嘿嘿,以下是具體步驟:
一 準備並安裝升級包軟體
1 級準備
 1>http://metalink.oracle.com上下載相應升級軟體包
 2>設定環境變數:$ORACLE_HOME=oracle_home
                 $ORACLE_SID=sid
                 $export ORACLE_HOME ORACLE_SID
2
關閉資料庫(
normal/immediate)
 1>如果是RAC,則在所有的節點上關閉例項
$ORACLE_HOME/bin/srvctl stop database -d db_name
 2>如果是ASM,先關閉所有ASM支援的資料庫再關閉ASM例項
$ORACLE_HOME/bin/srvctl stop asm -n node $ORACLE_HOME/bin/srvctl stop nodeapps -n node
3
關閉所有的程式、監聽以及CSS(Oracle Cluster Synchronization Service) deamon守護程式as root 使用者

 #/etc/init.d/init.cssd stop
4
備份資料庫系統

5
更新安裝(互動式和非互動式:interactively or noninteractively
  1>
互動模式(interactively)
    1)
oracle賬號登陸

    2)$ DISPLAY=local_host:0.0 ; export DISPLAY
    3)
進入patch產品目錄:$./runInstaller
    4)
如果已經將環境變數設定好,則Oracle更新包自動會找到更新來路

   
 directory_path/stage/products.xml
      RAC
適用語法
:$ ./runInstaller -updateNodeList "CLUSTER_NODES=node2, node1, node3" -local ORACLE_HOME=oracle_home_path
  2>
非互動模式
(Noninteractively)
    1)
oracle賬號登陸

    2)
編輯好response_file
    3)$./runInstaller -silent -responseFile response_file
二 升級資料庫

upgrading Release10.1 to 10.1.0.5
Preupgrade:
1 check system tablespace size
  ensure that there is at least 10MB of free space allocated to system tablespace
2 check xdb tablespace size
  for rac,ensure that there is at lease 50MB of free space allocated to xdb tablespace
3 set shared_pool_size and jave_pool_size initialization parameters
  1>start the database
    SQL>startup
  2>ensure db uses pfile
    SQL>show parameter pfile;
  3>determine the current values of these parameters
    SQL>show parameter shared_pool_size
    SQL>show parameter java_pool_size
    SQL>ALTER SYSTEM SET SHARED_POOL_SIZE='150M' SCOPE=spfile;  --if necessary,at least 150MB
    SQL>ALTER SYSTEM SET JAVA_POOL_SIZE='150M' SCOPE=spfile;  --if necessary,at least 150MB
    SQL>shutdown immediate
upgrade:
1 login as oracle software owner user
2 For RAC installations, start node applications on each node of the cluster as follows:
  $ srvctl start nodeapps -n nodename
3 If you are using ASM, start the ASM instance.
  For single-instance installations, start the listener as follows:
  $lsnrctl start
4 execute script
  SQL> STARTUP UPGRADE
  SQL> SPOOL patch.log
  SQL> @?/rdbms/admin/catpatch.sql   --You may wait for a long time!
  SQL> SPOOL OFF
If necessary, rerun the catpatch.sql script. after correcting any problems.
5 recompile db object
  SQL>select count(*) from dba_objects where status='INVALID';
  SQL>shutdown immediate
  SQL>startup
  SQL>@?/rdbms/admin/utlrp.sql
  SQL>select count(*) from dba_objects where status='INVALID';
  
6 if you are using RMAN catalog,enter the following command
  $rman catalog username/password@alias
  RMAN>upgrade catalog;
  OF curse,U can upgrade other object,like OCCI and so on.

四、        介紹幾種庫升級方案

第一種方案(用升級程式:dbua):

適合: 這種方案適宜於資料量比較大,適用大版本之間的升級,也可以用在支援直接升級的資料庫版本


方法: 例如用這種方案在原來的資料庫的機器上安裝10g的軟體,但不安裝10g的資料庫.安裝完10g的軟體後,執行10g的資料庫升級助手實用程式dbua,然後通過此升級嚮導完成9ig10g的升級過程.升級過程中, dbua會自動的將一些資料庫的配置更改成適合10g的環境,如資料庫引數設定,記憶體配置,sql,pl/sql引擎等和資料庫管理,操作相關的軟體的版本也會自動升級到10g;此方法有一定風險,建議在升級之前要備份資料庫

優點: (1)對於資料規模比較大的資料庫而言,用這種方法升級是最快速的. (2) 保留原有資料庫的物理結構(如資料檔案,重做日誌檔案)和邏輯結構(表空間,使用者,系統許可權設定等),無需重新規劃資料庫.

缺點: 這種方案存在一定的風險.雖然,10g的資料庫升級助手實用程式dbua總體而言比較穩定,但是萬一升級失敗的話,原來的資料庫就有可能使用不了,某些功能丟失,或執行不正常.所以在正式升級之前一定要先在測試庫上先演練一下升級的所有過程,確認無誤後才能在生產庫上執行升級


dbua
支援直接升級的資料庫版本
:

l oracle 8
版本8.0.6


l oracle 8i
版本
8.1.7

l oracle 9i
版本9.0.1

l oracle 9i
版本9.2.0


第二種方案(用匯入/匯出工具:imp/exp、或
exp/imp transport tablespace):

適合: 這種方案適合資料量不是很大,中小規模的資料庫升級,建議適用於大版本之間的升級,如8i升級到9i9i升級到10g;也可以用到支援可直接安裝的小版本,如果有的話,呵呵


方法: 先把舊的資料庫的資料匯出來(建議按使用者方案匯出,不用SYS使用者匯出,因為新的大版本資料庫要多些內容,如果用SYS匯入的話容易報錯),然後新安裝10g軟體和新建一個10g的資料庫,建立好邏輯結構(使用者、表空間、DBLINK、系統許可權等)和物理結構(各資料檔案等),然後將舊庫的dump檔案匯入至新庫;注意在新庫使用者賦予許可權的時候(針對升級到10g),其中connect resource 不包括建立檢視的許可權

優點: (1)用這種方法最大的優點是安全. 我們新建一個10g的資料庫並匯入舊庫的資料以後可能保留原來的資料庫,直到應用系統在新的資料庫執行無誤後才刪去原有的資料庫.如果有問題,還可以切換回原來的資料庫,升級的風險非常小.

(2)
可以優化資料庫結構.如果原來的資料庫結構不好,如很多使用者的資料儲存在system表空間,或者是表空間碎片比較多,通過匯出再匯入到一個數庫後,這些資料庫的結構能夠得到優化
.

缺點:1)升級的時間可能相對會長一些,因為匯入匯出的速度並不是很快 (2)因為得新建一個資料庫,所以得重新規劃資料庫的結構,如資料檔案,表空間等
.

3)因為要建新庫,可能會增加一些硬體投資



第三種方案(升級包)

適合:庫資料量大小均可,建議適用於小版本之間的升級

方法:下載相應的升級包,按照安裝說明安裝即可,建議安裝 前要備份好資料庫

優點:不需要重新建立資料庫,保留資料庫原有的模型,邏輯結構和物理結構缺點:需要按照相應的安裝說明來升級,源升級包資料需要另外下載,對於某些版本的升級安裝說明比較繁瑣

五、Oracle 8i升級Oracle 10G
                            O
racle 8.1.7.4升級Oracle 10.2
    Oracle
提供了升級工具讓使用者可以將Database從低版本升級到更高的版本,8i可以直接升級到10G, 8i必須是8.1.7.4()以上的版本,8.1.7.0是不被支援的.Oracle提供了兩種升級方法,用嚮導升級和手工升級,以下分別介紹本人升級的過程
.

.    嚮導升級


1.      
首先,應該備份8i 資料庫(但然,你也可以選擇不備份)

2.      
安裝Oracle 10G在和8i不同的Home,選擇不要建立資料庫


3.      
SysDBA的身份,登入到8i資料庫,

SQL>Spool info.log

SQL>@ORACLE_HOME/rdbms/admin/utlu102i.sql

SQL>Spool off

4.      
檢視 info.log,按照LOG上的提示,RBS修改到符合要求,其它警告可以不去修改,Upgrade的過程中系統會提示,點確定會由升級程式修改
.

5.      
在開始找到Oracle選單的資料庫升級工具,點選執行


6.      
根據嚮導提示升級(因為之前已經備份,升級時選擇已經備份,不再需要升級程式幫你備份),在確認視窗,要選擇確定,繼續,是等肯定按鈕以完成升級動作.

如果你的初始化引數正確,一般情況會順利結束升級動作,如果過程中出現錯誤,就要將DB復原,用手動升級了.我在升級一臺資料庫時曾遇到Ora-00064錯誤而終至升級
.

,手動升級


  1.
首先,應該備份8i 資料庫(但然,你也可以選擇不備份)

   2.
安裝Oracle 10G在和8i不同的Home,選擇不要建立資料庫


   3.
SysDBA的身份,登入到8i資料庫,

SQL>Spool info.log

SQL>@ORACLE_HOME/rdbms/admin/utlu102i.sql

SQL>Spool  off

4.        Copy 8i
的初始化引數檔案到 10G Home正確的位置


5.        Copy
密碼檔案到 10G Home正確的位置

6.        
根據info.log的提示,修改10G下的初始化引數檔案,info.log會建議哪些引數修改為哪個值,那些引數已經不再需要,請刪除之,那些引數是新的,需要增加,請按照建議修改

7.        
根據info.log修改redo log, Datafile, Rbs等的大小

8.        Shutdown 8i
資料庫

9.        
停止原資料庫的服務

10.   
oradim刪除 Sid

11.   
用你修改過的引數檔案建立新的資料庫例項
(oradim)

12.   
SysDBA的身份進入Sqlplus,將資料庫啟動到upgrade狀態


SQL>startup upgrade

   
我在啟動時遇到Ora-00064的錯誤,修改初始化引數檔案,修改過數個引數後重新執行成功,因此不知到是那個引數起了效果,大家可以試一下.

13.    Create tablespace SySaux

CREATE TABLESPACE sysaux DATAFILE 'sysaux01.dbf'

         SIZE 500M REUSE

         EXTENT MANAGEMENT LOCAL

         SEGMENT SPACE MANAGEMENT AUTO

         ONLINE;

14.    SQL>@C
racleproduct10.2.0db_1RDBMSADMINcatupgrd.sql

15.    SQL>@C
racleproduct10.2.0db_1RDBMSADMINutlu102s.sql

16.    SQL>shutdown immediate

17.    SQL>startup

18.    SQL>@C
racleproduct10.2.0db_1RDBMSADMINolstrig.sql

19.    SQL>@C
racleproduct10.2.0db_1RDBMSADMINutlrp.sql

20.   
停止8i的監聽器服務

21.   
建立 10G的監聽器服務

升級完成

 

 

 

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

相關文章