Oracle

在 UNIX 中使用 sqlplus 將數據從數據庫導出到平面文件時出錯

  • February 2, 2018

嘗試使用 SPOOL 命令在unix 腳本中將數據從表導出到 .dat 文件。

然而,在執行時,只有約 17k 數據被導出到文件中,91K 數據在文件末尾出現錯誤:ORA-08103 對像不存在,儘管對象存在於數據庫中。

當我嘗試在 csv 中導出數據時,它僅導出了 ~11k 數據,文件中存在相同的錯誤。從表中導出近 35 列。

spool ${DataDirectory}/output.dat; 

select * from < Table_name >; 

即使對象存在,也不導出完整數據集並引發錯誤的原因可能是什麼?

附上腳本截圖。

在此處輸入圖像描述

在此處輸入圖像描述

ORA-08103 對像不再存在

表示您正在查詢已被(重新)移動的段。最常見的例子是:

  • 有人截斷了桌子
  • 有人做了“改變桌子移動”
  • 有人做了“交換分區”

所有這些都將段內容移動到磁碟上的新位置,因此您正在掃描的數據“不再存在”

我雖然錯誤號是

ORA-08103 object no longer exists

這不是 bash、shell 或 Unix 問題:這是 Oracle 問題。此錯誤消息的原因可能多種多樣:

  • 另一個使用者/程序/…在查詢期間從表中刪除一個對象
  • 臨時表上的參數ON COMMIT DELETE ROWS
  • 即使硬碟驅動器故障也可能導致此問題

因此,請檢查 Oracle 日誌。

引用自:https://dba.stackexchange.com/questions/196854