曲折的dump匯入及問題分析
今天下午的時候得到反饋,說開發在匯入一個dump的時候報了錯誤,他們嘗試連線資料庫,發現連線都有問題,讓我們趕緊看看。
這是一個測試環境的庫,在伺服器上同時還跑著十多個資料庫不同應用的資料庫例項。
> sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Mon May 25 14:28:50 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
ERROR:
ORA-09817: Write to audit file failed.
Linux-x86_64 Error: 28: No space left on device
Additional information: 12
ORA-01075: you are currently logged on
看這個錯誤是audit的部分無法寫入了,可能是audit表佔用的空間較大,也可能是系統空間不足導致。
嘗試登陸其它的幾個庫,也是類似的問題,這個時候問題一下子變得嚴重起來,需要趕緊修復。
使用sysdba都無法登入,所以直接定位到日誌目錄還是有點困難的,這個時候我們可以藉助引數檔案,這個路徑是固定的 $ORACLE_HOME/dbs下面,直接檢視init.ora檔案找到diagnostic_dest對應的路徑。
簡單定位後,發現所在的分割槽系統空間不足了,發現歸檔檔案佔用了大部分的空間,這個時候需要儘快釋放這部分的空間,一種思路就是把修改歸檔路徑,但是這種方式可行但不值得提倡,這個環境會有很多人來維護,其中的引數和配置資訊基本都是統一的,如果隨意修改,後續的人來支援就會遇到一些問題,如此反覆,簡單的一個小問題就可能導致一些複雜潛在的問題,這個時候還是建議保留原值,但是可以考慮建立一個連結直接連結到空間比較充足的分割槽下。
比如下面的例子就是建立一個連結 arc, 連結到 /oravl20/oradata/CNVxxxx/arc下面。
ln -s /oravl20/oradata/CNVxxxx/arc arc
因為提供的日誌資訊有限,所以就馬上連線到這套環境,找到對應的外來鍵對應關係,做了兩個簡單的查詢。
我們可以直接嘗試把資料匯入csm_account,做一個嘗試,看看dump中是否丟失了這個表的資料。
imp xxxx/xxxx file=test_data.dmp statistics=none grants=n indexes=n ignore=Y buffer=9102000 tables=csm_account
結果就出錯了,發現是由於一個表中的欄位丟失造成的。
IMP-00058: ORACLE error 904 encountered
問題真是層出不窮,而且解決問題的思路都是類似的,為什麼會出現這個問題,接下來改做些什麼,開發會這麼問我,我也會自問。
最後排查得知,這套環境的版本很低,和現有的生產環境的版本相去甚遠,所以這些額外的變更就不存在,這個時候就可以和開發確認,為什麼要選用這套很老的環境,最後他們確認後,找了一套版本比較新的環境就沒有問題了。
從這個問題的處理來看,問題本身比較簡單,處理思路也很簡單,感覺每個問題都是一些很常規的處理方式,但是帶給我們的反思就是很多簡單的問題湊在一塊兒,就可能是一個嚴重的問題,在問題的處理過程中,也需要明確分工和職責,有時候僅僅得到一個ora錯誤就去做全面的分析是遠遠不夠的,還得結合環境和具體的場景,上面兩個簡單的問題從表面來看似乎都很明顯,但是結合具體的處理場景來分析發現原因和錯誤提示資訊還是有比較大的出入。
這是一個測試環境的庫,在伺服器上同時還跑著十多個資料庫不同應用的資料庫例項。
> sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Mon May 25 14:28:50 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
ERROR:
ORA-09817: Write to audit file failed.
Linux-x86_64 Error: 28: No space left on device
Additional information: 12
ORA-01075: you are currently logged on
看這個錯誤是audit的部分無法寫入了,可能是audit表佔用的空間較大,也可能是系統空間不足導致。
嘗試登陸其它的幾個庫,也是類似的問題,這個時候問題一下子變得嚴重起來,需要趕緊修復。
使用sysdba都無法登入,所以直接定位到日誌目錄還是有點困難的,這個時候我們可以藉助引數檔案,這個路徑是固定的 $ORACLE_HOME/dbs下面,直接檢視init.ora檔案找到diagnostic_dest對應的路徑。
簡單定位後,發現所在的分割槽系統空間不足了,發現歸檔檔案佔用了大部分的空間,這個時候需要儘快釋放這部分的空間,一種思路就是把修改歸檔路徑,但是這種方式可行但不值得提倡,這個環境會有很多人來維護,其中的引數和配置資訊基本都是統一的,如果隨意修改,後續的人來支援就會遇到一些問題,如此反覆,簡單的一個小問題就可能導致一些複雜潛在的問題,這個時候還是建議保留原值,但是可以考慮建立一個連結直接連結到空間比較充足的分割槽下。
比如下面的例子就是建立一個連結 arc, 連結到 /oravl20/oradata/CNVxxxx/arc下面。
ln -s /oravl20/oradata/CNVxxxx/arc arc
然後把歸檔檔案就順勢都挪過去了。這樣原有的分割槽空間馬上級釋放了,而且還不需要修改引數檔案的配置,空間問題很快就解決了。所以看似是audit日誌的問題,很可能不是,不要被誤導。
但是不一會兒,開發反饋匯入dump的時候出錯了。
錯誤資訊類似下面的形式。
The following error occurred: error occurred during batching: ORA-02298: cannot validate (AAAPPO1.CSM_BEN_1FK) - parent keys not found
這個錯誤比較明顯,基本可以判定是由於資料問題導致的,但是資料抽取工具抽取的資料都是嚴格按照抽取邏輯來執行的,應該不會出現這種錯誤。這種問題一般來說DBA都不會直接確認都會直接交給開發自己去確認這類資料問題,今天因為問題比較急,就順帶查了一下。但是不一會兒,開發反饋匯入dump的時候出錯了。
錯誤資訊類似下面的形式。
The following error occurred: error occurred during batching: ORA-02298: cannot validate (AAAPPO1.CSM_BEN_1FK) - parent keys not found
因為提供的日誌資訊有限,所以就馬上連線到這套環境,找到對應的外來鍵對應關係,做了兩個簡單的查詢。
SQL> select count(*)from csm_ben;
COUNT(*)
----------
248
SQL> select count(*)from csm_account;
COUNT(*)
----------
0
這個時候看問題就比較明顯了,很顯然在外來鍵列所在的表csm_account中竟然沒有資料,為什麼會出現這種問題,我也懷疑是不是dump出問題了,而只是從開發提供的一個ORA錯誤還是所知甚少。需要更多的資訊來佐證。我們可以直接嘗試把資料匯入csm_account,做一個嘗試,看看dump中是否丟失了這個表的資料。
imp xxxx/xxxx file=test_data.dmp statistics=none grants=n indexes=n ignore=Y buffer=9102000 tables=csm_account
結果就出錯了,發現是由於一個表中的欄位丟失造成的。
IMP-00058: ORACLE error 904 encountered
ORA-00904: "L9_xxxxxx_NO": invalid identifier
Import terminated successfully with warnings問題真是層出不窮,而且解決問題的思路都是類似的,為什麼會出現這個問題,接下來改做些什麼,開發會這麼問我,我也會自問。
最後排查得知,這套環境的版本很低,和現有的生產環境的版本相去甚遠,所以這些額外的變更就不存在,這個時候就可以和開發確認,為什麼要選用這套很老的環境,最後他們確認後,找了一套版本比較新的環境就沒有問題了。
從這個問題的處理來看,問題本身比較簡單,處理思路也很簡單,感覺每個問題都是一些很常規的處理方式,但是帶給我們的反思就是很多簡單的問題湊在一塊兒,就可能是一個嚴重的問題,在問題的處理過程中,也需要明確分工和職責,有時候僅僅得到一個ora錯誤就去做全面的分析是遠遠不夠的,還得結合環境和具體的場景,上面兩個簡單的問題從表面來看似乎都很明顯,但是結合具體的處理場景來分析發現原因和錯誤提示資訊還是有比較大的出入。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1672077/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE 11g匯入9i dump的問題及解決Oracle
- 土製Excel匯入匯出及相關問題探討Excel
- Oracle使用dump匯入資料Oracle
- mysql 5.5.9 匯出匯入到5.1.41 的問題MySql
- PostgreSQL邏輯備份恢復--pg_dump匯出及psql匯入案例SQL
- 把jive匯入Eclipse的問題Eclipse
- 【oracle 資料匯入匯出字元問題】Oracle字元
- flutter_boost匯入問題Flutter
- 關於匯入模式問題模式
- excel檔案內容匯入資料庫的問題及解決Excel資料庫
- dump 解決問題
- Export/Import匯入匯出時的字符集問題ExportImport
- MySQL資料匯入匯出亂碼問題MySql
- Oracle表table與索引index的分析及索引重建及統計資訊匯入匯出Oracle索引Index
- DBeaver 資料匯入SQL時的問題SQL
- python中匯入不了sklearn的問題Python
- maatwebsite/excel": "^3.1 匯入excel 問題WebExcel
- dg broker配置的問題及分析
- Pycharm匯入python專案遇到的問題PyCharmPython
- 如何避免Python的迴圈匯入問題Python
- DB2匯入資料遇到的問題DB2
- 特殊字元^M引起的資料匯入問題字元
- 使用sqlldr匯入日期格式欄位的問題SQL
- 解決Mysql匯入亂碼問題MySql
- BW資料匯入亂碼問題
- EasyExcel到出匯入問題記錄Excel
- Python大資料分析學習.Pandas 資料匯入問題 (1)Python大資料
- 奇怪的登入問題及解決
- ORA-39082 匯入資料遇到的問題
- 面試的曲折面試
- 生產環境sqlldr載入效能問題及分析之一SQL
- 生產環境sqlldr載入效能問題及分析之二SQL
- 把TXT文字匯入SQLServer常見問題SQLServer
- Xcode9匯入檔案問題XCode
- AWD平臺搭建及遇到的問題分析
- React的零渲染問題及原始碼分析React原始碼
- 配置dg broker的問題分析及修復
- php做EXCEL資料匯出匯入開發的一些小問題PHPExcel