日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

PLSQL_数据泵Datapump导入导出数据IMPDP / EXPDP(概念)(Oracle数据导入导出工具)(转)...

發布時間:2025/7/14 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PLSQL_数据泵Datapump导入导出数据IMPDP / EXPDP(概念)(Oracle数据导入导出工具)(转)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、摘要


在平常備庫和數據庫遷移的時候,當遇到大的數據庫的時候在用exp的時候往往是需要好幾個小時,耗費大量時間。oracle10g以后可以用expdp來導出數據庫花費的時間要遠小于exp花費的時間,而且文件也要小很多。

二、exp/imp與expdp/impdp區別


(1) 把用戶usera的對象導到用戶userb,用法區別在于fromuser=usera touser=userb ,remap_schema=’usera’:'usera’ 。

例如:imp system/passwd fromuser=usera touser=userb file=/oracle/exp.dmp log=/oracle/exp.log;

????? impdp system/passwd directory=expdp dumpfile=expdp.dmp remap_schema=’usera’:'userb’ logfile=/oracle/exp.log;

(2) 更換表空間,用exp/imp的時候,要想更改表所在的表空間,需要手工去處理一下,

如alter table xxx move tablespace_new之類的操作。

用impdp只要用remap_tablespace=’tabspace_old’:'tablespace_new’

(3) 當指定一些表的時候,使用exp/imp 時,tables的用法是 tables=(‘table1′,’table2′,’table3′)。

expdp/impdp的用法是tables=’table1′,’table2′,’table3′

(4) 是否要導出數據行

exp (ROWS=Y 導出數據行,ROWS=N 不導出數據行)

expdp content(ALL:對象+導出數據行,DATA_ONLY:只導出對象,METADATA_ONLY:只導出數據的記錄)

(5) expdp是[10g]的新特性而且只能在服務器執行。而exp/imp是通用的。

(6) oracle11g中有個新特性,當表無數據時,不分配segment,以節省空間,所以exp導不出空表。解決的辦法是用expdp, 當然也可以設置deferred_segment_creation 參數 或者 insert一行,再rollback,但是這樣很麻煩。

三、導出數據


1. 導出expdb的過程

(1). 按用戶導

??????? expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;

(2). 并行進程parallel

??????? expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3

(3). 按表名導

??????? expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;

(4). 按查詢條件導

??????? expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';

(5). 按表空間導

??????? expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;

(6). 導整個數據庫

??????? expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;

2. 參數說明 - 導出expdb

(1). CONTENT:該選項用于指定要導出的內容.默認值為ALL

????? CONTENT={ALL | DATA_ONLY | METADATA_ONLY}

????? 當設置CONTENT為ALL 時,將導出對象定義及其所有數據.為DATA_ONLY時,只導出對象數據,為METADATA_ONLY時,只導出對象定義

(2). DIRECTORY:指定轉儲文件和日志文件所在的目錄:DIRECTORY=directory_object

(3). EXCLUDE:該選項用于指定執行操作時釋放要排除對象類型或相關對象

????? EXCLUDE=object_type[:name_clause] [,….]

????? Object_type用于指定要排除的對象類型,name_clause用于指定要排除的具體對象.EXCLUDE和INCLUDE不能同時使用

????? Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW

(4). INCLUDE:導出時包含指定的類型

??????? (例:INCLUDE=TABLE_DATA,

???????????? INCLUDE=TABLE:"LIKE 'TAB%'"

???????????? INCLUDE=TABLE:”NOT LIKE ‘TAB%’”…)

???????????? EXCLUDE:導出時排除的數據類型(例:EXCLUDE=TABLE:EMP)

(5). FILESIZE:指定導出文件的最大尺寸,默認為0,(表示文件尺寸沒有限制)(單位為bytes).

(6). JOB_NAME:此次導出進程使用的名稱,方便跟蹤查詢(可選)

(7). FLASHBACK_SCN:指定導出特定SCN時刻的表數據

?????? FLASHBACK_SCN=scn_value:Scn_value用于標識SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同時使用

?????? Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp

?????? FLASHBACK_SCN=358523

(8). FLASHBACK_TIME:指定導出特定時間點的表數據:FLASHBACK_TIME=“TO_TIMESTAMP(time_value)”

?????? Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME=“TO_TIMESTAMP(’25-08-2004 14:35:00’,’DD-MM-YYYY HH24:MI:SS’)”

(9). TABLESPACE:指定一個表空間導出.

(10). QUERY=[schema.] [table_name:] query_clause

??????? Schema用于指定方案名,table_name用于指定表名,query_clause用于指定條件限制子句.QUERY選項不能與 CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES等選項同時使用.

??????? Expdp scott/tiger directory=dump dumpfiel=a.dmp Tables=emp query=’WHERE deptno=20’

(11). PARALLEL:并行操作: 指定執行導出操作的并行進程個數,默認值為1

可以通過PARALLEL 參數為導出使用一個以上的線程來顯著地加速作業。每個線程創建一個單獨的轉儲文件,因此參數dumpfile 應當擁有和并行度一樣多的項目。

可以指定通配符作為文件名,而不是顯式地輸入各個文件名,例如:

expdp ananda/abc123 tables=CASES directory=DPDATA1 dumpfile=expCASES_%U.dmp parallel=4 job_name=Cases_Export

注意:dumpfile 參數擁有一個通配符%U,它指示文件將按需要創建,格式將為expCASES_nn.dmp,其中nn 從01 開始,然后按需要向上增加。

在并行模式下,狀態屏幕將顯示四個工作進程。(在默認模式下,只有一個進程是可見的)所有的工作進程同步取出數據,并在狀態屏幕上顯示它們的進度。

分離訪問數據文件和轉儲目錄文件系統的輸入/輸出通道是很重要的。否則,與維護Data Pump 作業相關的開銷可能超過并行線程的效益,并因此而降低性能。并行方式只有在表的數量多于并行值并且表很大時才是有效的。

四、還原數據


1. 導入impdp的過程

(1). 導到指定用戶下

??????? impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;

(2). 改變表的owner

??????? impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;

(3). 導入表空間

??????? impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;

(4). 導入數據庫

??????? impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;

(5). 追加數據

??????? impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION

2. 參數說明 - 導入impdp

(1). TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | FRPLACE }

當設置該選項為SKIP時,導入作業會跳過已存在表處理下一個對象;

當設置為APPEND時,會追加數據;

當設置為TRUNCATE時,導入作業會截斷表,然后為其追加新數據;

當設置為REPLACE時,導入作業會刪除已存在表,重建表病追加數據;

注意,TRUNCATE選項不適用與簇表和NETWORK_LINK選項;

(2). REMAP_SCHEMA

該選項用于將源方案的所有對象裝載到目標方案中:REMAP_SCHEMA=source_schema:target_schema

(3). REMAP_TABLESPACE

將源表空間的所有對象導入到目標表空間中:REMAP_TABLESPACE=source_tablespace:target:tablespace

(4). REMAP_DATAFILE

該選項用于將源數據文件名轉變為目標數據文件名,在不同平臺之間搬移表空間時可能需要該選項.

REMAP_DATAFIEL=source_datafie:target_datafile

四、案例 - 從PROD中導出數據,后導入SIT環境中


Step1. 創建邏輯目錄,該命令不會在操作系統創建真正的目錄,最好以system等管理員創建。

create directory dpdata as '/home/oracle/expdb';

Step2. 查看管理理員目錄(同時查看操作系統是否存在,因為Oracle并不關心該目錄是否存在,如果不存在,則出錯)

select * from dba_directories;

Step3. 給scott用戶賦予在指定目錄的操作權限,最好以system等管理員賦予。

grant read,write on directory dpdata to oracle;

Step4. 在PROD測試表中導入10條記錄,并導出

create table scott.emp (emp_id number,name varchar2(50), sex varchar(2),age number,country varchar(10),salary number );

begininsert into scott.emp values (1, 'baoxinjian1', 'M', 27, 'China', 10000);insert into scott.emp values (1, 'baoxinjian1', 'M', 27, 'China', 20000);insert into scott.emp values (1, 'baoxinjian1', 'M', 27, 'China', 30000);insert into scott.emp values (1, 'baoxinjian1', 'M', 27, 'China', 40000);insert into scott.emp values (1, 'baoxinjian1', 'M', 27, 'China', 50000);insert into scott.emp values (1, 'baoxinjian1', 'M', 27, 'China', 60000);insert into scott.emp values (1, 'baoxinjian1', 'M', 27, 'China', 70000);insert into scott.emp values (1, 'baoxinjian1', 'M', 27, 'China', 80000);insert into scott.emp values (1, 'baoxinjian1', 'M', 27, 'China', 90000); end; commit;

Step5. 導出為dmp文件,上傳至SIT

expdp sys/oracle@gavinprod TABLES=scott.emp dumpfile=empexpdp.dmp DIRECTORY=dpdata;

Step6. 查看導出log內容

Step7. 將數據文件上傳至SIT環境

Step8. 進行上傳

impdp sys/oracle DIRECTORY=dpdata DUMPFILE=empexpdp.dmp SCHEMAS=sys;

Step9. 查看導入Log日志內容

Step10. 查看數據庫表是否成功

?

參考: http://blog.chinaunix.net/uid-16844439-id-3213672.html

參考:http://www.2cto.com/database/201202/120126.html

參考:http://czmmiao.iteye.com/blog/2041703

轉載于:https://www.cnblogs.com/zhangtao/p/3967661.html

總結

以上是生活随笔為你收集整理的PLSQL_数据泵Datapump导入导出数据IMPDP / EXPDP(概念)(Oracle数据导入导出工具)(转)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。