2010-08-30 61 views
0

我們計劃將Oracle安裝從Solaris遷移到Linux。同時我們將升級到最新版本的Oracle。有幾百個存儲過程也應該被遷移。將Oracle形式遷移並升級到Linux,包括存儲過程

現在的版本是Oracle SE 9.2。我們仍然會使用Oracle SE,可能與RAC一起使用。

在做這件事之前有什麼我們必須考慮的嗎?在做這件事時遇到的任何問題?所有可以幫助我們的信息都是有價值的。

在此先感謝!

/尼克拉斯

回答

3

我們只是通過這個去了,雖然我們的兩級它 - 就從9到10,去年則10至11這一年。我將嘗試從內存中回想一下我們發現的內容:

答:如果您有GROUP BY查詢,則需要添加匹配的ORDER BY,因爲新版本的Oracle不會(通常)放入在GROUP BY處理期間執行SORT步驟。換句話說,如果有喜歡

SELECT * FROM SOME_TABLE 
    GROUP BY FIELD_1, FIELD_2 

查詢你要改變這

SELECT * FROM SOME_TABLE 
    GROUP BY FIELD_1, FIELD_2 
    ORDER BY FIELD_1, FIELD_2 

B.我建議你保持你的9.x數據庫的副本繞了一段時間,所以您可以將9以下生成的計劃與11以下生成的計劃進行比較。11.x中的優化器可以評估一些查詢,與9.x或10.x不同。我們發現,我們在10.x版中適當提示10.x的一個較大的查詢的速度非常緩慢。經過一個下午的開發人員和數據庫管理員的頭髮,我們發現ORDERED提示恢復了原來的計劃和性能。

C.如果你有明確建立通過執行類似

alter session set optimizer_goal = rule 

使用基於規則的優化,你會得到一個錯誤的任何代碼告訴您基於規則的優化是過時。 D.創建集合但不初始化它的PL/SQL代碼可能在9.x下工作,但在11.x下將失敗。一個例子是

TYPE tMyArray IS VARRAY(100) OF VARCHAR2(100); 

arrMyArray tMyArray; -- <-- uninitialized array 

要解決這個問題,你需要的變量聲明更改爲

arrMyArray tMyArray := tMyArray(''); 

爲了參考的目的,9 - > 10升級是最多的工作。 10 - > 11幾乎毫不費力(除了幾個有問題的查詢 - 見B)。

+0

謝謝,這是非常好的信息。欣賞它! – Nicsoft 2010-08-30 11:30:17

1

Dataguard本身實際上是Enterprise Edition功能。

+0

確實,之前被錯誤地告知...感謝您的信息!更新我的問題。 – Nicsoft 2010-09-01 21:10:31