正在看的ORACLE教程是:Oracle常見錯誤診斷。ORACLE的這類錯誤在ORALCE的文檔中有詳細說明,但原因及措施說明不詳細,本文當著重說明如何解決這類錯誤。
1、ORA-12571、ORA-03113、ORA-03114、ORA-01041
特徵:用戶端(代理或應用伺服器)有時報這類斷連錯誤
原因:如果偶爾出現一次,則可能為網路原因或使用者異常中止,如果經常出現則為用戶端與服務端的字元集不一致。
措施:如果偶爾出現,可在服務端的協議設定檔PROTOCOL.ORA中增加一行
TCP.NODELAY=YES;
如果經常出現,則為用戶端與服務端字元集不一致或網路原因。
用戶端的字元集在註冊表裡定義: HKEY__LOCAL__MACHINE/SOFTWARE/ORACLE/NLS__LANG
在用戶端註冊表中的TCP參數項中設定 TCPMAXDATARETRANSMITIONS=20。
2、ORA-01000
特徵:達到會話允許的最大遊標數
原因:達到會話允許的最大遊標數
措施:有兩種解決方案:
(1)在初始設定檔案INIT.ORA檔案中增加OPEN_CURSORS的數量,一般要求大於200。
(2)在應用級,與開發工具有關,例如設定MAXOPEN_CURSORS等。
3、ORA-01545
特徵:某個復原段不可用
原因:(1)當使復原段ONLINE時,但復原段不可用,例如復原段所在資料表空間OFFLINE;
(2) 當使復原段ONLINE時,但復原段已ONLINE,例如復原段被使用兩次,典型的案例如OPS方式時,復原段不能公有;
(3)刪除復原段時,復原段中有活動的事務;
措施:(1)確保復原段可
(2)從初始設定檔案INIT.ORA的參數ROLLBACK)SEGMENTS中刪除指定的復原段。
(3)可以將復原段所在資料表空間刪除,取消UNDO事務
4、ORA-0165x
特徵:資料表空間沒有足夠的空間供分配
原因:資料表空間已滿;儲存參數不合理,NEXT太小;沒有連續的區間
措施:如果資料表空間已滿,則需為資料表空間增加檔案;如果儲存參數不合理,則需增加INITIAL和NEXT;如果沒有連續的區間,需要合并閒置資料表空間。
查看空間片段用DBA_FREE_SPACE
5、ORA-01555
特徵:當前會話無法讀到以前版本的資料
原因:原因很多,主要原因有下列:復原段太小、太少;復原段衝突;交叉提交(FETCH_ACROSS)
措施:增加復原段數量;
6、ORA-04031
特徵:共用池記憶體區記憶體不夠,或產生記憶體片段
原因:當試圖裝載一個大包時或執行一個較大的預存程序時,而共用池沒有連續的記憶體空間。
措施:如果是記憶體不夠,則增加SHARE)POOL_SIZE;
如果是記憶體片段,執行alter system flush share_pool
7、ORA-04091
特徵:觸發器工作不正常
原因:一個行觸發讀取或修改變化的表(正在修改、插入)時,產生這種錯誤。
措施:檢查觸發器指令碼,保證參考完整性
8、ORA-01242、ORA-01113
特徵:介質故障導致資料庫宕機
原因:介質故障。
措施:檢查硬體故障;修改dbshut指令碼,將其中的STARTUP命令修改為:
Startup open recover
Alter database open