今天的環境是:
Solaris 8 and Oracle 9.2.0.6 export / import to Linux 4 and Oracle 9.2.0.6
為一異質平台的轉換。
由於Oracle 9i 尚未支援Transportable Tablespace,因此只能依賴傳統的export / import。
問題反應:
1、某些資料查詢過於緩慢,較舊系統緩慢約3~4倍時間。
2、大量Procedure & Function 無法使用
分析過程:
1、利用Toad 的Monitor session的功能,在監控查詢時卡住的程序,並判斷是否有使到到Index
2、若有使用到Index的查詢時,系能仍緩慢,則開啟Trace來監控。
3、檢視procedure & Function 的Error messages
分析結果:
1、由於tables & indexes 沒有統計值,因此造成大量的Full Table Scan. 重新analyze 後,即完成。
2、有用到Index的查詢仍舊緩慢,經檢查後,發現使用到錯誤的indexes。 重新將table與index同時analyze後就恢復正常。
3、由於客戶有自行定義Function, 而這function又建立在其它的schema中,再加上原先有的public synonyms並未一併匯入進去(這點很怪),因此在重新建立 Synonyms後即完成任務。
另外的問題:
1、客戶某個table中,日期的存放格式為Month Varchar2(5), 以10005代表100年5月。在某支查詢中,會出現1722的錯誤 invalid number。
查看sql語法為to_number(month)>= :argument_1。因此去查詢table中的資料,發現有一筆的資料內容並非是數字,
因此造成字元轉換的錯誤。但…怪異的事,相同的語法在舊系統上仍可以查詢出來,真是怪哉呀。
最後把資料刪除後,程式即運作正常。
2、exp / imp 一般而言會有統計值,除非你在import 或 export 過程中,指定不匯出/ 匯入統計值,才會發生今天的問題。
3、Trace 檔沒用到,就解決了上述問題,下次再試試吧。
沒有留言:
張貼留言