oracle 匯出表資料 dmp檔案

2021-07-02 19:31:00 字數 2089 閱讀 2646

應用場景:

從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,則修改為false 

Oracle匯出表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...