DML語句報錯是由於控制檔案無法擴大還是另有原因?,dml另有
今天處理了一個非常有意思的故障問題,來龍去脈是這樣的:
客戶來電諮詢控制檔案無法擴充,資料庫只能查詢但不支援DML,需要遠程支援。接到電話的第一反應就是CONTROL_FILE_RECORD_KEEP_TIME參數是不是設定太小了,因為這套資料庫的備份保留時間長度達60天。
遠程以後,首先查看控制檔案視圖:
換算以後,當前控制檔案也就25M左右。如果各位網友有心的話,應該會有印象在HACMP+RAC+RAW架構下,控制檔案通常都是126M或256M,當前值才25M,而且是ASM可以自動擴充。於是就覺得奇怪了
再建測試表做驗證:
建表語句hang住了
此時檢查資料庫的alert日誌:
原來資料庫只能查詢但不能DML的原因跟”控制檔案無法擴充“沒關係,肯定是由于歸檔路徑滿了,導致資料庫hang住,等待線上日誌歸檔
下面驗證該想法:
歸檔目錄也在DATA磁碟組
顯示DATA磁碟組當前只有68M可用空間
到這裡,問題根源已經算是找到,解決方案:
串連到RMAN,刪除歸檔日誌
delete noprompt archivelog all completed before 'sysdate-2';
再查詢磁碟組使用率:
剩餘35G可用空間,此時應用恢複正常。
啟示:
最終的問題解決方案非常簡單,但是想分享的是處理問題的思路:當接到問題的時候,要先從客戶瞭解一下所遇到的問題,但記得對客戶所提供的線索做一一驗證,避免客戶資訊給我們診斷問題提供了錯誤方向,因為客戶得到的訊號源本身就是錯誤的,就像這個案例中,客戶也是遠程開發工程師打電話誤判“控制檔案無法擴充"的。
-------------------------------------------------------------------------------------------------
本文來自於我的技術部落格 http://blog.csdn.net/robo23
轉載請標註源文連結,否則追究法律責任!
2個事務同時運行 一個事務包含DDL語句 一個包含DML語句 為何要報錯:
DDL會修改資料字典,DML修改的是資料,如果是針對相同的對象(比如表),應該是會出問題的。
哪個命令不是DML語句
create table
這個是DDL