麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

教你怎樣在Oracle數(shù)據(jù)庫中高速導(dǎo)出/導(dǎo)入

2019-09-08 23:30:43
字體:
供稿:網(wǎng)友

迄今為止,導(dǎo)出/導(dǎo)入工具集仍是跨多個平臺轉(zhuǎn)移數(shù)據(jù)所需勞動強度最小的首選實用工具,盡管人們常常抱怨它速度太慢。導(dǎo)入只是將每條記錄從導(dǎo)出轉(zhuǎn)儲文件中讀出來,然后使用常見的 INSERT INTO 命令將其插入到目標(biāo)表中,因此導(dǎo)入可能是個很慢的過程,這一點并不讓人感到吃驚。

進入 Oracle Data Pump,Oracle Database 10g 中的導(dǎo)出/導(dǎo)入工具包的更新更快的同類工具,它被設(shè)計來成倍地加速這個過程。

Data Pump 反映了整個導(dǎo)出/導(dǎo)入過程的徹底革新。它不是使用常見的 SQL 命令,而是應(yīng)用專用 API 來以更快得多的速度加載和卸載數(shù)據(jù)。在我的測試中,我看到導(dǎo)出性能比在直接模式下提高了 10-15 倍,導(dǎo)入過程性能提高了 5 倍。此外,與使用導(dǎo)出實用工具不同,它還能夠只取出特定類型的對象(如過程)。

Data Pump 導(dǎo)出

這個新的實用工具稱為 expdp,以和原來的導(dǎo)出 exp 區(qū)分開。在本例中,我們將用 Data Pump 來導(dǎo)出一個大表 CASES,大小約為 3GB。Data Pump 在服務(wù)器端使用文件處理來創(chuàng)建和讀取文件;因此,目錄作為位置使用。在這種情況下,我們將使用文件系統(tǒng) /u02/dpdata1 來保存轉(zhuǎn)儲文件。

create directory dpdata1 as '/u02/dpdata1';

grant read, write on directory dpdata1 to ananda;

接下來,我們將導(dǎo)出數(shù)據(jù):

expdp ananda/abc123 tables=CASES directory=DPDATA1

dumpfile=expCASES.dmp job_name=CASES_EXPORT

讓我們來分析該命令的各個部分。用戶 ID/口令組合、表和轉(zhuǎn)儲文件參數(shù)的意義是顯而易見的。與原來的導(dǎo)出不同,文件是在服務(wù)器(不是客戶端)上創(chuàng)建的。位置由目錄參數(shù)值 DPDATA1 指定,它指向之前創(chuàng)建的 /u02/dpdata1。這個進程還在目錄參數(shù)指定的位置上創(chuàng)建一個日志文件(同樣在服務(wù)器上)。默認地,這個進程使用一個名稱為 DPUMP_DIR 的目錄;因此可以創(chuàng)建它來代替 DPDATA1。

注意上面的參數(shù) job_name,這是個特殊的參數(shù),在原來的導(dǎo)出中沒有。所有的 Data Pump 工作都通過作業(yè)來完成。Data Pump 作業(yè) — 與 DBMS 作業(yè)不同 — 只是服務(wù)器進程,它代表主進程處理數(shù)據(jù)。主進程(稱為主控制進程)通過高級隊列 (AQ) 來協(xié)調(diào)這項工作;它通過在運行期內(nèi)創(chuàng)建的一個特殊的表(稱為主表)來實現(xiàn)這個目的。在我們的例子中,如果您在 expdp 運行時檢查用戶 ANANDA 的模式 ,您將注意到一個表 CASES_EXPORT 的存在(對應(yīng)參數(shù) job_name)。當(dāng) expdp 結(jié)束時,這個表被丟棄。

導(dǎo)出監(jiān)控

當(dāng) Data Pump Export (DPE) 運行時,按 Control-C;它將阻止消息在屏幕上顯示,但不停止導(dǎo)出進程本身。相反,它將顯示 DPE 提示符(如下所示)。進程現(xiàn)在被認為處于“交互式”模式:

Export>

這種方法允許在這個 DPE 作業(yè)上輸入幾條命令。要查看概要,在提示符下使用 STATUS 命令:

Export> status

Job:CASES_EXPORT

Operation:EXPORT

Mode:TABLE

State:EXECUTING

Degree: 1

Job Error Count: 0

Dump file:/u02/dpdata1/expCASES.dmp

bytes written = 2048

Worker 1 Status:

State:EXECUTING

Object Schema:DWOWNER

Object Name:CASES

Object Type:TABLE_EXPORT/TBL_TABLE_DATA/TABLE/TABLE_DATA

Completed Objects: 1

Total Objects: 1

Completed Rows: 4687818

記住,這只是狀態(tài)顯示。導(dǎo)出在后臺工作。要繼續(xù)在屏幕上查看消息,從 Export> 提示符下使用命令 CONTINUE_CLIENT。

并行操作

您可以通過 PARALLEL 參數(shù)為導(dǎo)出使用一個以上的線程來顯著地加速作業(yè)。每個線程創(chuàng)建一個單獨的轉(zhuǎn)儲文件,因此參數(shù) dumpfile 應(yīng)當(dāng)擁有和并行度一樣多的項目。您可以指定通配符作為文件名,而不是顯式地輸入各個文件名,例如:

expdp ananda/abc123 tables=CASES directory=DPDATA1

dumpfile=expCASES_%U.dmp parallel=4 job_name=Cases_Export

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

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

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

數(shù)據(jù)庫監(jiān)控

您還可以從數(shù)據(jù)庫視圖獲得關(guān)于運行的 Data Pump 作業(yè)的更多信息。監(jiān)控作業(yè)的主視圖是 DBA_DATAPUMP_JOBS,它將告訴您在作業(yè)上有多少個工作進程(列 DEGREE)在工作。另一個重要的視圖是 DBA_DATAPUMP_SESSIONS,當(dāng)它與上述視圖和 V$SESSION 結(jié)合時將給出主前臺進程的會話 SID。

select sid, serial#

from v$session s, dba_datapump_sessions d

where s.saddr = d.saddr;

這條指令顯示前臺進程的會話。更多有用的信息可以從警報日志中獲得。當(dāng)進程啟動時,MCP 和工作進程在警報日志中顯示如下:

kupprdp:master process DM00 started with pid=23,

OS id=20530 to execute -

SYS.KUPM$MCP.MAIN('CASES_EXPORT', 'ANANDA');

kupprdp:worker process DW01 started with worker

id=1, pid=24, OS id=20532 to execute -

SYS.KUPW$WORKER.MAIN('CASES_EXPORT', 'ANANDA');

kupprdp:worker process DW03 started with worker

id=2, pid=25, OS id=20534 to execute -

SYS.KUPW$WORKER.MAIN('CASES_EXPORT', 'ANANDA');

它顯示為數(shù)據(jù)泵操作啟動的會話的 PID。您可以用以下查詢找到實際的 SID:

select sid, program from v$session where paddr in

(select addr from v$process where pid in (23,24,25));

PROGRAM 列將對應(yīng)警報日志文件中的名稱顯示進程 DM (為主進程)或 DW (為工作進程)。如果一個工作進程使用了并行查詢,比如說 SID 23,您可以在視圖 V$PX_SESSION 中看到它,并把它找出來。它將為您顯示從 SID 23 代表的工作進程中運行的所有并行查詢會話:

select sid from v$px_session where qcsid = 23;

從視圖 V$SESSION_LONGOPS 中可以獲得其它的有用信息來預(yù)測完成作業(yè)將花費的時間。

select sid, serial#, sofar, totalwork

from v$session_longops

where opname = 'CASES_EXPORT'

and sofar != totalwork;

列 totalwork 顯示總工作量,該列的 sofar 數(shù)量被加和到當(dāng)前的時刻 — 因而您可以用它來估計還要花多長時間。

Data Pump 導(dǎo)入

不過,數(shù)據(jù)導(dǎo)入性能是 Data Pump 真正出色的地方。要導(dǎo)入先前導(dǎo)出的數(shù)據(jù),我們將使用

impdp ananda/abc123 directory=dpdata1

dumpfile=expCASES.dmp job_name=cases_import

導(dǎo)入進程的默認行為是創(chuàng)建表和所有相關(guān)的對象,然后在表已存在時產(chǎn)生一個錯誤。如果您想把數(shù)據(jù)添加到一個現(xiàn)有的表中,您可以在上述命令行中使用 TABLE_EXISTS_ACTION=APPEND。

和使用 Data Pump 導(dǎo)入一樣,在進程中按 Control-C 將進入 Date Pump Import (DPI) 的交互模式;同樣,提示符是 Import>。

處理特定對象

您是否有過只需要從一個用戶導(dǎo)出特定的過程,以在一個不同的數(shù)據(jù)庫或用戶中重新創(chuàng)建這些過程的情況?與傳統(tǒng)的導(dǎo)出實用工具不同,Data Pump 允許您只導(dǎo)出特定類型的對象。例如,以下命令讓您只導(dǎo)出過程,而不導(dǎo)出其它任何東西 — 不導(dǎo)出表、視圖、甚至函數(shù):

expdp ananda/iclaim directory=DPDATA1

dumpfile=expprocs.dmp include=PROCEDURE

要只導(dǎo)出一些特定的對象 — 比如說,函數(shù) FUNC1 和過程 PROC1 — 您可以使用

expdp ananda/iclaim directory=DPDATA1 dumpfile=expprocs.dmp

include=PROCEDURE:/"=/'PROC1/'/",FUNCTION:/"=/'FUNC1/'/"

這個轉(zhuǎn)儲文件充當(dāng)了源對象的一個備份。您甚至可以用它來創(chuàng)建 DDL 腳本,以供之后使用。一個稱為 SQLFILE 的特殊參數(shù)允許創(chuàng)建 DDL 腳本文件。

impdp ananda/iclaim directory=DPDATA1

dumpfile=expprocs.dmp sqlfile=procs.sql

該指令在 DPDATA1 指定的目錄中創(chuàng)建一個名稱為 procs.sql 的文件,并將對象的腳本包含在導(dǎo)出轉(zhuǎn)儲文件中。這種方法幫助您快速地在另一個模式中創(chuàng)建源對象。

利用參數(shù) INCLUDE 允許您從轉(zhuǎn)儲文件中定義要包含或排除的對象。您可以使用子句 INCLUDE=TABLE:"LIKE 'TAB%'" 來僅導(dǎo)出那些名稱以 TAB 開頭的表。類似地,您可以使用結(jié)構(gòu) INCLUDE=TABLE:"NOT LIKE 'TAB%'" 來排除所有名稱以 TAB 開頭的表。作為另一種選擇,您可以使用 EXCLUDE 參數(shù)來排除特定的對象。

通過外部表,Data Pump 還可以用來傳輸表空間;它非常強大,能夠即時地重定義并行方式,將更多的表添加到一個現(xiàn)有的進程中等等。

Oracle數(shù)據(jù)庫

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美日韩电影在线 | 久久精品视频日本 | 欧美性生交zzzzzxxxxx | 成人综合免费视频 | 亚洲成人久久精品 | 成人性生活视频在线观看 | 久久精品亚洲国产奇米99 | 羞羞视频免费网站含羞草 | 亚洲第一页中文字幕 | 国产成人自拍视频在线观看 | 逼特逼视频在线观看 | 亚洲午夜在线 | 欧美1| 国产精品久久久久久久不卡 | 久久国产精品久久久久久 | 福利一区二区三区视频在线观看 | 27xxoo无遮挡动态视频 | va免费视频 | 久久精品国产亚洲7777小说 | 深夜激情视频 | 中文字幕专区高清在线观看 | av影院在线播放 | 黄色高清视频网站 | 美女久久久久久久久 | 国产一区二区视频在线播放 | 鲁丝一区二区三区不属 | 亚洲成人在线免费 | 国产精品剧情一区二区三区 | 欧美成人免费在线视频 | 久久久久女人精品毛片九一 | 中文字幕欧美视频 | 久久国产精品久久久久久 | 亚洲精品久久久久www | 国产一级午夜 | 羞羞的视频免费在线观看 | 小情侣嗯啊哦视频www | chinese乱子伦xxxx国语对白 | 国产日韩在线 | 北京一级毛片 | 成年人高清视频在线观看 | 色淫网站免费视频 |