Oracle
在 UNIX 中使用 sqlplus 將數據從數據庫導出到平面文件時出錯
嘗試使用 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 日誌。