資料泵用法筆記

imlihj2007發表於2009-04-17

資料泵用法筆記

*** 2009-4-2

有個別庫可能缺少物件

,資料泵操作會失敗!

:資料泵主要做資料的應用操作比較方便,也就是做資料匯入匯出!

測試環境hp oracle 11g

Data Pump 匯出

匯出前提:

1. 首先必須建立資料夾!

#mkdir p /backup/test1

#chmod R 777 /backup/test1

2. 設定資料泵資料庫環境變數:

$export ORACLE_SID=test

$sqlplus /nolog

sql>conn / as sysdbasql>create directory dptest1 as '/backup/test1';

3. 賦予使用者讀寫許可權:

sql>grant read, write on directory dptest1 to impcms

匯出操作:

1. 匯出一使用者下的表

$expdp impcms/impcms tables=t_cms_mtv directory= dptest1 dumpfile=expcases.dmp job_name=cases_export

說明:這樣把使用者下的一個表可以匯出來,並匯出使用者表的索引,約束,資料和註釋資訊,但是涉及到的過程不匯出來!

2. 並行操作

$expdp impcms/impcms directory=dptest1 dumpfile=expcases_%u.dmp parallel=3 job_name=cases_export include=table:"like 'T_UMS_%'"

說明:您可以透過 PARALLEL 引數為匯出使用一個以上的執行緒來顯著地加速作業。每個執行緒建立一個單獨的轉儲檔案,因此引數 dumpfile 應當擁有和並行度一樣多的專案。您可以指定萬用字元作為檔名,而不是顯式地輸入各個檔名, 可以匯出三個表,並且生成N檔案!匯出來的東西就是比導一個使用者下的表多了幾張表而已!

3. 匯出表,並匯出函式和過程

$expdp impcms/impcms directory=dptest1 dumpfile=expcases1_%u.dmp parallel=3 job_name=cases_export1 include=table:"like 'T_UMS_%'",procedure,function

說明:這樣可以把過程和函式給匯出來,在前一個的基礎上把其他的資料物件過程和函式給匯出來!

4. 使用者級別,匯出所有物件

$expdp impcms/impcms directory= dptest1 dumpfile=expcases1_%u.dmp parallel=3 job_name=cases_export1

說明:匯出使用者所有物件:

5. 只匯出資料,不導其他物件

expdp impcms/impcms directory= dptest1 dumpfile=expcases1_%u.dmp parallel=3 job_name=cases_export1 content=data_only

說明:這個在資料移植的時候應該很實用,僅僅可以把資料匯出來,加上其他條件還可以快速移動資料物件!

6. 導後設資料,不匯出資料

$expdp impcms/impcms directory= dptest1 dumpfile=expcases1_%u.dmp parallel=3 job_name=cases_export1 content=metadata_only

說明:可以匯出使用者的所有物件資訊,沒有資料,結構移植很實用

7. 匯出表空間

$expdp impcms/impcms directory=dptest1 dumpfile=expcase1s_%u.dmp parallel=3 job_name=cases_export TABLESPACES=imp

$expdp impcms/impcms directory=dptest1 dumpfile=expcase1s_%u.dmp parallel=3 job_name=cases_export TABLESPACES=impidx

說明:這個可以把表空間裡的資料匯出來,主要是表,其他暫時還不知道,依賴關係沒有研究!

8. 匯出幾個使用者的辦法

$expdp system/sys directory= dptest1 dumpfile=expcases.dmp schemas=impcms,test

9. 匯出全部資料庫

$expdp system/sys directory= dptest1 dumpfile=expcases.dmp full=y

說明:暫時不知道怎樣導進去

10. 過濾資料庫物件

$expdp pe0402/pe0402 directory= dptest1 dumpfile=expcases.dmp job_name=cases_export exclude=procedure,function,package,index,comment

說明:可以不匯出procedure,function,package,index,comment等物件資訊

匯出總結:

1, 可以匯出任意物件

2, 可以過濾任意物件

Data Pump 匯出

資料匯入會在很多地方出問題!

1. 用impcms匯出一個表,匯入到test使用者下的情況

$expdp impcms/impcms tables= t_ums_rolepermission directory= dptest1 dumpfile=expcases.dmp job_name=cases_export

$impdp test/test directory= dptest1 dumpfile=expcases.dmp job_name=cases_export remap_schema=impcms:test

這個涉及到物件的移動到不同的使用者方案下面

$impdp test/test directory= dptest1 tables=t_ums_rolepermission dumpfile=expcases.dmp job_name=cases_export remap_schema=impcms:test

這個語句可以涉及到使用者的物件過濾

2. 匯出使用者的資訊,然後做物件的限制匯入

$expdp impcms/impcms directory= dptest1 dumpfile=expcases1.dmp job_name=cases_export1

1, 全導進去

$impdp test/test directory= dptest1 dumpfile=expcases1.dmp job_name=cases_export remap_schema=impcms:test

包的匯入出了很多的問題,關鍵是type沒有導進來,導致很多問題!

僅僅匯入資料(先做物件匯入)

$impdp test/test directory= dptest1 dumpfile=expcases1.dmp job_name=cases_export remap_schema=impcms:test content= metadata_only

僅僅匯入資料(資料匯入)

$impdp test/test directory= dptest1 dumpfile=expcases1.dmp job_name=cases_export remap_schema=impcms:test content= data_only exclude= CONSTRAINT,REF_CONSTRAINT

有主外來鍵的時候會出問題(提前禁止使用)!

可以把資料給導進去,到資料要確保資料結構物件已經存在!

$impdp test/test directory= dptest1 dumpfile=expcases1.dmp job_name=cases_export remap_schema=impcms:test content= metadata_only

匯入的時候不要把約束導進去!要提前禁止使用各種約束

$impdp test/test directory= dptest1 dumpfile=expcases1.dmp job_name=case1s_export remap_schema=impcms:test content=data_only exclude= CONSTRAINT,REF_CONSTRAINT skip_unusable_indexes=y,table_exists_action= replace

$impdp test/test directory= dptest1 dumpfile=expcases1.dmp job_name=case1s_export remap_schema=impcms:test exclude= CONSTRAINT,REF_CONSTRAINT sqlfile=procs.sql

生成物件建立的指令碼!

匯入總結:

1, 使用者級別的匯入的時候,要提前禁止約束的使用(如果有資料)!

2, 使用者匯入的時候,要提前把型別建立好,否則由於依賴關係,一般會建立type失敗

3, 使用者匯入操作的時候可以不進行匯入操作,僅僅生成建立的sql語句!

遠端匯出操作步驟:

遠端必須有資料庫,因為資料泵程式上伺服器程式!

僅僅做資料的移植問題較小,涉及到物件就比較容易出問題

1建立使用者

Sql> create user test identified by test

default tablespace users

quota unlimited on users;

2 授予許可權

Sql> grant connect to test;

Sql> grant create table, create database link to test;

Sql> grant read, write on directory test1 to test;

3,建立連線

Sql> conn test/test

Sql> create database link test113 connect to impcms identified by impcms

using 'test';

select * from global_name@test113;

4,匯出操作(問題多多,有很多東西暫時不清楚:版本,語言,平臺)

$expdp test/test directory=test1 dumpfile=test.dp network_link=test113 logfile=jiangsu.log content= data_only

5,遠端操作(會有很多容易失敗和依賴的東西,需要再做驗證)

$impdp test/test directory=test1 network_link=test113 logfile=jiangsu.log remap_schema=impcms:test content=data_only

如果有大物件操作,暫時還沒有做驗證!!!

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9879835/viewspace-1020732/,如需轉載,請註明出處,否則將追究法律責任。

相關文章