--21.1 Data Pump工具 Data Pump 從oracledatabase 10g開始引入了data pump(數(shù)據(jù)泵)工具,它提供了一種基于服務(wù)器的數(shù)據(jù)導(dǎo)出導(dǎo)入使用程序。 所有的data pump都作為一個(gè)服務(wù)器進(jìn)程,數(shù)據(jù)不再必須由一個(gè)客戶程序處理。Data Pump工具的導(dǎo)出和導(dǎo)入實(shí)現(xiàn) Oracle數(shù)據(jù)庫之間數(shù)據(jù)的傳輸。 Data Pump工具中包含Data Pump Export和Data Pump Import,所使用的命令行客戶程序?yàn)閑xpdp和impdp。 【注意】 在10g之前,傳統(tǒng)的導(dǎo)出導(dǎo)入分別使用exp工具和imp工具。從oracle database 10g開始,不僅保留了原有的 exp和imp工具,還提供了數(shù)據(jù)泵導(dǎo)出導(dǎo)入工具expdp和impdp。 從11g開始,在傳統(tǒng)的export和import應(yīng)用程序中可用的任何特性在data pump中都可用。 在使用expdp和impdp工具時(shí),應(yīng)該注意以下幾點(diǎn): 1 exp和imp是客戶端工具程序,它們既可以在客戶端使用,也可以在服務(wù)器端使用。 2 expdp和impdp是服務(wù)器工具程序,它們只能在oracle服務(wù)器端使用,不能再客戶端使用。 3 imp只適用于exp導(dǎo)出的文件,不適用于expdp導(dǎo)出文件;impdp只適用與expdp導(dǎo)出的文 件,不適用于exp導(dǎo)出文件。data pump導(dǎo)出導(dǎo)入所得到的文件跟傳統(tǒng)的import/export 應(yīng)用程序?qū)С鰧?dǎo)入的文件不兼容。 【pump特點(diǎn)】 與原有的export和import使用程序相比,oracle的data pump工具的功能特點(diǎn)如下: 1 在導(dǎo)出或者導(dǎo)入作業(yè)中,能夠控制用于此作業(yè)的并行線程的數(shù)量。 2 支持在網(wǎng)絡(luò)上進(jìn)行導(dǎo)出導(dǎo)入,而不需要是使用轉(zhuǎn)儲(chǔ)文件集。 3 如果作業(yè)失敗或者停止,能夠重新啟動(dòng)一個(gè)data pump作業(yè)。并且能夠掛起恢復(fù)導(dǎo)出導(dǎo)入作業(yè)。 4 通過一個(gè)客戶端程序能夠連接或者脫離一個(gè)運(yùn)行的作業(yè)。 5 空間估算能力,而不需要實(shí)際執(zhí)行導(dǎo)出。 6 可以指定導(dǎo)出導(dǎo)入對(duì)象的數(shù)據(jù)庫版本。允許對(duì)導(dǎo)出導(dǎo)入對(duì)象進(jìn)行版本控制,以便與低版本數(shù)據(jù)庫兼容。 【pump數(shù)據(jù)字典】 數(shù)據(jù)字典 說明 dba_datapump_jobs 顯示運(yùn)行數(shù)據(jù)泵作業(yè)的信息,也可以使用user_datapump_jobs變量 dba_datapump_sessions 提供數(shù)據(jù)泵作業(yè)會(huì)話級(jí)別的信息 datapump_paths 提供一系列有效的對(duì)象類型,可以將其與export或者impdp的include或者exclude參數(shù)關(guān)聯(lián)起來 dba_directories 提供一系列已定義的目錄
--21.2 使用datapump工具的準(zhǔn)備工作 1 在環(huán)境變量中隊(duì)bin目錄進(jìn)行配置。默認(rèn)情況下,安裝oracle數(shù)據(jù)庫時(shí),將自動(dòng)配置相應(yīng)的環(huán)境變量, 例如D:/oracle/product/10.2.0/db_1/BIN 2 在oracle安裝路徑的bin文件夾中,確定expdp.exe和impdp.exe文件的存在。 3 創(chuàng)建一個(gè)外部目錄。 data pump要求為將要?jiǎng)?chuàng)建和讀取的數(shù)據(jù)文件和日志文件創(chuàng)建目錄,用來指向 使用的外部目錄。在oracle中創(chuàng)建目錄對(duì)象時(shí),可以使用 create directory 語句。 【實(shí)例】 1,檢查,高級(jí)環(huán)境變量-pathpath里面有無bin目錄 2,檢查expdp.exe、impdp.exe文件是否存在。 3,建立目錄 c:/> sqlplus /nolog sql> conn sys/sys as sysdba sql> create directory mypump as 'd:/app/temp'; sql> grant read, write on directory mypump to scott; sql> select * from dba_directories; 查詢所有目錄 --21.3 數(shù)據(jù)泵導(dǎo)出選項(xiàng) 參數(shù) 說明 help 顯示用于導(dǎo)出的聯(lián)機(jī)幫助,默認(rèn)為n compress 指定要壓縮的數(shù)據(jù),可選值有:all、data_only、metadata_only和none content 篩選導(dǎo)出的內(nèi)容,可選值有:all、data_only和metadata_only directory 指定用于日志文件和轉(zhuǎn)儲(chǔ)文件集的目的目錄 dumpfile 為轉(zhuǎn)儲(chǔ)文件指定名稱和目錄 encryption 輸出的加密級(jí)別,可選值有:all、data_only、encrypted_columns_only、etadata_only和none exclude 排除導(dǎo)出的對(duì)象和數(shù)據(jù) flashback_sch 用于數(shù)據(jù)庫在導(dǎo)出過程中閃回的系統(tǒng)更改號(hào) flashback_time 用于數(shù)據(jù)庫在導(dǎo)出過程中閃回的時(shí)間戳 include 規(guī)定用于導(dǎo)出對(duì)象和數(shù)據(jù)的標(biāo)準(zhǔn) logfile 導(dǎo)出日志的名字和可選的目錄名字 parfile 指定參數(shù)文件名 query 在導(dǎo)出過程中從表中篩選行 reuse_dmupfiles 覆蓋已有的轉(zhuǎn)儲(chǔ)文件 status 顯示data pump作業(yè)的詳細(xì)狀態(tài) attach 將一個(gè)客戶會(huì)話連接到一個(gè)當(dāng)前運(yùn)行的data pumpexport作業(yè)上 transportable 只為表模式導(dǎo)出而導(dǎo)出元數(shù)據(jù) full 在一個(gè)full模式下通知data pump導(dǎo)出所有的數(shù)據(jù)和元數(shù)據(jù) schemas 在一個(gè)schemas模式導(dǎo)出中命名將導(dǎo)出的模式 tables 列出將用于一個(gè)table模式導(dǎo)出而導(dǎo)出的表和分區(qū) tablespaces 列出將導(dǎo)出的表空間 transport_tablespaces 指定一個(gè)transportable tablespace模式導(dǎo)出 transport_full_check 是否應(yīng)該驗(yàn)證正在導(dǎo)出的表空間是一個(gè)自包含集
expdp交互模式中的命令列表 參數(shù) 說明 add_file 向轉(zhuǎn)儲(chǔ)文件集中添加轉(zhuǎn)儲(chǔ)文件 exit_client 退出客戶機(jī)會(huì)話并使作業(yè)處于運(yùn)行狀態(tài) kill_job 分離和刪除作業(yè) paraliel 改變用戶data pump export作業(yè)的工作進(jìn)程的數(shù)量 start_job 啟動(dòng)、恢復(fù)當(dāng)前作業(yè) status 顯示data pump export的作業(yè)狀態(tài) reuse_dmpfiles 是否覆蓋現(xiàn)有的轉(zhuǎn)儲(chǔ)文件。設(shè)置為y時(shí),現(xiàn)有的轉(zhuǎn)儲(chǔ)文件將被覆蓋; 當(dāng)使用默認(rèn)值n時(shí),如果轉(zhuǎn)儲(chǔ)文件已經(jīng)存在就會(huì)產(chǎn)生一個(gè)錯(cuò)誤。 stop_job 依次關(guān)閉執(zhí)行的作業(yè)并退出客戶機(jī)。stop_job=immediate將立即關(guān)閉數(shù)據(jù)泵作業(yè)
【實(shí)例】 1,進(jìn)入目錄 D:/>cd D:/oracle/product/10.2.0/db_1/BIN 2,expdp help=y 列出所有參數(shù) 3,交互模式下 /BIN> expdp system/system 等待一會(huì),按下ctrl c 進(jìn)入export模式 Export>stop_job 停止作業(yè) /BIN>
--21.4 實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出 導(dǎo)出模式 模式 參數(shù) 說明 操作角色 full full 導(dǎo)出整個(gè)數(shù)據(jù)庫 exp_full_database schema schemas 導(dǎo)出一個(gè)或者多個(gè)用戶模式中的數(shù)據(jù)和元數(shù)據(jù) 擁有exp_full_database角色,可以導(dǎo)出任何模式, 否則只能導(dǎo)出自己的模式 table tables 導(dǎo)出一組特定的表 擁有exp_full_database角色,可以導(dǎo)出任何模式的表 tablespace tablespaces 導(dǎo)出一個(gè)或者多個(gè)表空間的數(shù)據(jù) exp_full_database transportable transport_tablespaces tablespace 導(dǎo)出表空間中對(duì)象的元數(shù)據(jù) exp_full_database
【實(shí)例】 1,進(jìn)入bin目錄 2,表模式導(dǎo)出 expdp scott/scott_2009 directory=mypump dumpfile=expdptab.dmp tables=dept,emp (select * from dba_tablespaces; alter tablespace testspace online;) 3,全庫模式導(dǎo)出 expdp system/system directory=mypump dumpfile=expdp.dmp full=y 4,schema模式導(dǎo)出 expdp system/system directory=mypump dumpfile=expdp.dmp schemas=scott nologfile=y 5,表空間數(shù)據(jù)導(dǎo)出 expdp system/system directory=mypump dumpfile=expdpspace.dmp tablespaces=users 6,可移動(dòng)表空間導(dǎo)出 1 將user表空間設(shè)置成只讀狀態(tài),然后執(zhí)行可移動(dòng)表空間元數(shù)據(jù)導(dǎo)出 sql> alter tablespace users read only; BIN> expdp system/system directory=mypump dumpfile=exptrans.dmp transport_tablespaces=users; sql> alter tablespace users online; --21.5 使用導(dǎo)出參數(shù) 1 使用exclude參數(shù) 在expdp命令中可以指定參數(shù)exclude,用來實(shí)現(xiàn)從data pump export中排除對(duì)象,如果排除了一個(gè)對(duì)象,也將排除 所有與它相關(guān)的對(duì)象。 使用exclude的格式如下: exclude=object_type[:name_clause][,...] 其中,object_type可以是任何oracle對(duì)象類型,包括權(quán)限、索引和表等;name_clause用來限制返回的值。 2 使用exclude參數(shù) 如果在data pump export中使用include,可以只導(dǎo)出符合要求的對(duì)象,其他所有對(duì)象均被排除。使用include 參數(shù)的格式如下: include=object_type[:name_clause][,...] 3 使用query參數(shù) 對(duì)于滿足exclude和include標(biāo)準(zhǔn)的對(duì)象,將會(huì)導(dǎo)出該對(duì)象的所有行。這時(shí),可以使用query參數(shù)來限制返回的行, 使用query參數(shù)格式如下: query=[schema.][table_name:]query_clause 其中,schema是指定表所屬的用戶名,或者所屬的用戶模式名稱; table_name指定表名;query_clause用來指定限制條件。
【實(shí)例】 1 exclude參數(shù),注意表名要大寫。 expdp system/system directory=mypump dumpfile=expdpexclude.dmp tablespaces=users exclude=table:"in('EMP')" exclude=table:"in('DEPT')" 2 include參數(shù),注意表名要大寫。導(dǎo)出users表空間的索引信息 expdp system/system directory=mypump dumpfile=expdpinclude.dmp tablespaces=users include=index 3 query參數(shù) expdp system/system directory=mypump dumpfile=expdpquery.dmp tables=scott.dept query=/"where deptno=10/" --21.6 數(shù)據(jù)泵導(dǎo)入選項(xiàng) 關(guān)鍵字 說明 (默認(rèn)) ------------------------------------------------------------------------------ ATTACH 連接到現(xiàn)有作業(yè), 例如 ATTACH [=作業(yè)名]。 CONTENT 指定要加載的數(shù)據(jù), 其中有效關(guān)鍵字為: (ALL), DATA_ONLY 和 METADATA_ONLY。 DIRECTORY 供轉(zhuǎn)儲(chǔ)文件, 日志文件和 sql 文件使用的目錄對(duì)象。 DUMPFILE 要從 (expdat.dmp) 中導(dǎo)入的轉(zhuǎn)儲(chǔ)文件的列表, 例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。 ENCRYPTION_PASSWORD 用于訪問加密列數(shù)據(jù)的口令關(guān)鍵字。 此參數(shù)對(duì)網(wǎng)絡(luò)導(dǎo)入作業(yè)無效。 ESTIMATE 計(jì)算作業(yè)估計(jì)值, 其中有效關(guān)鍵字為: (BLOCKS) 和 STATISTICS。 EXCLUDE 排除特定的對(duì)象類型, 例如 EXCLUDE=TABLE:EMP。 FLASHBACK_SCN 用于將會(huì)話快照設(shè)置回以前狀態(tài)的 SCN。 FLASHBACK_TIME 用于獲取最接近指定時(shí)間的 SCN 的時(shí)間。 FULL 從源導(dǎo)入全部對(duì)象 (Y)。 HELP 顯示幫助消息 (N)。 INCLUDE 包括特定的對(duì)象類型, 例如 INCLUDE=TABLE_DATA。 JOB_NAME 要?jiǎng)?chuàng)建的導(dǎo)入作業(yè)的名稱。 LOGFILE 日志文件名 (import.log)。 NETWORK_LINK 鏈接到源系統(tǒng)的遠(yuǎn)程數(shù)據(jù)庫的名稱。 NOLOGFILE 不寫入日志文件。 PARALLEL 更改當(dāng)前作業(yè)的活動(dòng) worker 的數(shù)目。 PARFILE 指定參數(shù)文件。 QUERY 用于導(dǎo)入表的子集的謂詞子句。 REMAP_DATAFILE 在所有 DDL 語句中重新定義數(shù)據(jù)文件引用。 REMAP_SCHEMA 將一個(gè)方案中的對(duì)象加載到另一個(gè)方案。 REMAP_TABLESPACE 將表空間對(duì)象重新映射到另一個(gè)表空間。 REUSE_DATAFILES 如果表空間已存在, 則將其初始化 (N)。 SCHEMAS 要導(dǎo)入的方案的列表。 SKIP_UNUSABLE_INDEXES 跳過設(shè)置為無用索引狀態(tài)的索引。 SQLFILE 將所有的 SQL DDL 寫入指定的文件。 STATUS 在默認(rèn)值 (0) 將顯示可用時(shí)的新狀態(tài)的情況下, 要監(jiān)視的頻率 (以秒計(jì)) 作業(yè)狀態(tài)。 STREAMS_CONFIGURATION 啟用流元數(shù)據(jù)的加載 TABLE_EXISTS_ACTION 導(dǎo)入對(duì)象已存在時(shí)執(zhí)行的操作。 有效關(guān)鍵字: (SKIP), APPEND, REPLACE 和 TRUNCATE。 TABLES 標(biāo)識(shí)要導(dǎo)入的表的列表。 TABLESPACES 標(biāo)識(shí)要導(dǎo)入的表空間的列表。 TRANSFORM 要應(yīng)用于適用對(duì)象的元數(shù)據(jù)轉(zhuǎn)換。 有效的轉(zhuǎn)換關(guān)鍵字: SEGMENT_ATTRIBUTES, STORAGE OID 和 PCTSPACE。 TRANSPORT_DATAFILES 按可傳輸模式導(dǎo)入的數(shù)據(jù)文件的列表。 TRANSPORT_FULL_CHECK 驗(yàn)證所有表的存儲(chǔ)段 (N)。 TRANSPORT_TABLESPACES 要從中加載元數(shù)據(jù)的表空間的列表。 僅在 NETWORK_LINK 模式導(dǎo)入操作中有效。 VERSION 要導(dǎo)出的對(duì)象的版本, 其中有效關(guān)鍵字為: (COMPATIBLE), LATEST 或任何有效的數(shù)據(jù)庫版本。 僅對(duì) NETWORK_LINK 和 SQLFILE 有效。
下列命令在交互模式下有效。 注: 允許使用縮寫 命令 說明 (默認(rèn)) ------------------------------------------------------------------------------ CONTINUE_CLIENT 返回到記錄模式。如果處于空閑狀態(tài), 將重新啟動(dòng)作業(yè)。 EXIT_CLIENT 退出客戶機(jī)會(huì)話并使作業(yè)處于運(yùn)行狀態(tài)。 HELP 總結(jié)交互命令。 KILL_JOB 分離和刪除作業(yè)。 PARALLEL 更改當(dāng)前作業(yè)的活動(dòng) worker 的數(shù)目。 PARALLEL=<worker 的數(shù)目>。 START_JOB 啟動(dòng)/恢復(fù)當(dāng)前作業(yè)。 START_JOB=SKIP_CURRENT 在開始作業(yè)之前將跳過 作業(yè)停止時(shí)執(zhí)行的任意操作。 STATUS 在默認(rèn)值 (0) 將顯示可用時(shí)的新狀態(tài)的情況下, 要監(jiān)視的頻率 (以秒計(jì)) 作業(yè)狀態(tài)。 STATUS[=interval] STOP_JOB 順序關(guān)閉執(zhí)行的作業(yè)并退出客戶機(jī)。 STOP_JOB=IMMEDIATE 將立即關(guān)閉 數(shù)據(jù)泵作業(yè)。
【實(shí)例】 查看命令:impdp help=y 1,表模式導(dǎo)入 impdp scott/scott_2009 directory=mypump dumpfile=expdptab.dmp tables=dept,emp table_exists_action=replace 2,全庫模式導(dǎo)入 impdp system/system directory=mypump dumpfile=expdp.dmp full=y 3,schema模式導(dǎo)入 impdp system/system directory=mypump dumpfile=expdp.dmp schemas=scott nologfile=y 4,表空間數(shù)據(jù)導(dǎo)入 impdp system/system directory=mypump dumpfile=expdpspace.dmp tablespaces=users 5,可移動(dòng)表空間導(dǎo)入 1 將user表空間設(shè)置成只讀狀態(tài),然后執(zhí)行可移動(dòng)表空間元數(shù)據(jù)導(dǎo)出 sql> alter tablespace users read only; BIN> impdp system/system directory=mypump dumpfile=exptrans.dmp transport_tablespaces=users; sql> alter tablespace users online;
|