像遇到特殊情況下的加班,加班內容又不多,有不想來公司的情況下,想導一個庫到本地上,然後會宿舍繼續加班,像遇到疫情這樣的情況,大多數都是將導入本地庫啦,之前還是剛剛入職的時候導庫導的不完整,後面百度了一下,也明白了這個,現在記錄一下,以後就不會錯了。主要原因是Oracle11G的新特性導致的,我們重新設置即可,也簡單。該導庫以及導入的全過程是由CMD進行操作即可。如果導入失敗可以對需要導入庫的所有舊錶進行手工刪除(建議先對需要刪除數據庫的先備份先)。
第一步:設置空表對應的設置
導出空表時設置對應的segment(11G新特性,當表無數據時,不分配segment,以節省空間) 。
所以執行第一句語句:空表分配segment,
然後再執行第二句語句:將第二句的查詢結果,複製出來,全部執行一遍,目的是保證空表能通過CMD導出。
alter system set deferred_segment_creation=false scope=both;
select 'alter table '||table_name||' allocate extent;' from user_tables;
第二步:導出數據
語法:
exp 用戶名/密碼@ROCL file=數據庫地址+數據庫名稱.dmp owner=(用戶名稱)
例子:
exp TestDB/TestDB@ORCL file=D:\測試\TestDB.dmp owner=(TestDB)
第三步:導入數據
語法:
imp 用戶名/密碼@ROCL file=導出位置+數據庫名稱.dmp full=y ignore=y
解釋說明:
full=y:( 全庫導出): 導出除ORDSYS,MDSYS,CTXSYS,ORDPLUGINS,LBACSYS 這些系統用戶之外的所有用戶的數據.
ignore=y: 表示忽略創建錯誤,繼續後面的操作
例子:
imp TestDB/TestDB@ORCL file=D:\測試\testDB.dmp full=y ignore=y
遇到最好的自己,不卑不亢-------------------2020-03-21 深夜