應用場景:
從a資料庫把錶資料匯出來,匯入到b資料庫
一、資料匯入匯出方式:
通過dmp檔案進行匯入匯出。
效率最快。
不需要考慮表結構,匯入匯出資料時已經包含表結構。
二、需要注意的地方:
1、匯入前刪除b資料庫裡面的所有表結構;
2、必須保證b資料庫的使用者表空間和a資料庫的使用者表空間 名稱一致。否則,當涉及到含有 blob、clob欄位的表資料時,將無法匯入這種型別的表 並提示表空間不存在;
原因:lob型別的資料全部儲存在表空間中,表中只存放指標,即使在建表時沒指定表空間,資料也全部存入該資料庫預設表空間中。
解決方法:
在被匯入資料庫中建立與原資料庫名稱相同表空間,修改預設表空間為此表空間。若在建表時指定了lob字段表空間,則在被匯入資料庫中建立存放此lob字段表空間。
若被匯入資料庫中強制指定其他表空間儲存lob欄位,可在匯入資料後,執行空間遷移命令移動lob資料到指定的表空間。命令:
alter table 表名 move tablespace 表空間1 lob (lob欄位1,lob欄位2) store as(tablesapce 表空間2);
重新命名表空間名字:
alter tablespace 表空間名1 rename to 表空間名2;
原因:oracle建立乙個表時預設不分配segment,只有在插入資料時才會產生(當然也可以強制分配),以節省磁碟空間。
解決方法:
就是想辦法讓空表有segment:第一種:可以通過插入資料的方式(不想要這些資料可以回滾),只要有insert動作就會分配segment;
第二種:就是強制分配:alter table tablename allocate extent;
❶.用資料庫帳號登入:1.1 查詢所有資料表為空的表
select table_name from user_tables where num_rows=0;
1.2 把這些表組成修改segment的指令碼:
1.3 將1.2中查詢的結果匯出來,或者複製出來,並執行修改所有空表。為了後面建立的錶能直接分配segment:
用系統賬戶登入資料庫,修改引數deferred_segment_creation(11g新增的)。該引數即指是否延遲建立segment,預設為true。如果想讓表建立時就分配segment,那麼就應該修改該引數為false即alter system set deferred_segment_creation=false
❶.用system帳號進入:
1.1 檢視deferred_segment_creation是否為true
show parameter deferred_segment_creation;
1.2 如果為true,則修改為falseOracle匯出表dmp檔案
經常我們在匯出資料庫進行備份的時候,會發現有些空表沒有匯出,如何匯出包含空表的完整資料庫呢?那麼請按照下面的方法進行即可。1.使用plsql工具,連線oracle資料庫 2.開啟乙個sql視窗,用以下這句查詢空表並生成執行命令 select alter table table name alloca...
Oracle 資料 的 匯入 匯出dmp
oracle 資料 的 匯入 匯出dmp 1 開始 執行 cmd exp 使用者名稱 密碼 連線字 全庫匯出要有dba許可權 回車 輸入匯出路徑 c aa.dmp 根據要求選擇 e,u or t 下面的你根據要求按回車或者寫 或 都行。也是差不多的執行方法。或者記住以下命令執行匯入匯出也可以 2 匯...
Oracle匯出 DMP 方法
方法一 利用pl sql developer工具匯出 選單欄 tools 1 g oracle product 10.1.0 client 1 network admin目錄下有個tnsname.ora檔案,內容如下 cmstar description address list address p...