維護的客戶系統因爲誤操作刪除了數據,立即進行rman恢復數據到一個測試環境,然後依據相關表間關係逐步恢復數據到生產環境.由於涉及範圍比較大,必須慎重行事.. 但是其中有好幾個表都使用了Oracle的long類型字段給恢復帶來了麻煩..
第一,不能直接generate出sql腳本來批量執行,因爲long類型字段中有好多值非常大會報字符太長的錯誤. 所以不可能挨着個的檢查和逐個執行腳本.
第二,自己寫PL/SQL先查出來long類型的字段以及主鍵ID值,先批量把其他字段值插完,然後使用遊標逐個更新long字段,但是由於數據過多,PL/SQL同樣報錯.(這個估計是oracle建立時的某個參數的設置問題)
第三,直接使用oracle提供的copy命令,出現了亂碼. 不過在isqlplus中執行一切正常. (還是sqlplus的執行環境問題)
第一,不能直接generate出sql腳本來批量執行,因爲long類型字段中有好多值非常大會報字符太長的錯誤. 所以不可能挨着個的檢查和逐個執行腳本.
第二,自己寫PL/SQL先查出來long類型的字段以及主鍵ID值,先批量把其他字段值插完,然後使用遊標逐個更新long字段,但是由於數據過多,PL/SQL同樣報錯.(這個估計是oracle建立時的某個參數的設置問題)
第三,直接使用oracle提供的copy命令,出現了亂碼. 不過在isqlplus中執行一切正常. (還是sqlplus的執行環境問題)
--- 不設置long的話,他會按默認值截斷長字符串
set long 100000
copy from user_test/passwd@dbName create TstTab_Copy using select * from TstTab;
copy from user_test/passwd@dbName insert TstTab_Copy using select * from TstTab;