【Data Pump】理解expdp中的ESTIMATE和ESTIMATE_ONLY引數
理解expdp 中的 ESTIMATE 和 ESTIMATE_ONLY 引數
透過ESTIMATE 引數,我們可以估計作業需要消耗多少的磁碟空間。這個估計值會列印在日誌檔案中,並顯示在輸出裝置上。這個引數的值可以選擇 BLOCKS (預設)和 STATISTICS 。
· BLOCK :塊,透過將目標物件使用的資料庫塊數量與塊大小相乘來計算。
· STATISTICS :統計資訊,使用每個表的統計資訊來估算。為了使這種方法準確計算,所有的表都應該在最近進行分析。
使用EXTIMATE 引數時,需要考慮以下情況:
首先,BLOCK 的估計是最不準確的。如果指定的表是最近進行統計分析的,那麼 STATISTICS 是最準確的,所以在使用 ESTIMATE=STATISTICS 方法進行估算之前生成統計資訊是很重要的。此外 EXTIMATE=BLOCKS 方法可能在以下情況時不準確:
· 建立的表具有比實際表資料所需的更大的初始區大小
· 從表中刪除了很多行,或者每個塊中使用了非常小的百分比
當透過DBMS_STATS 包顯式設定統計資訊,用以強制執行某些最佳化器執行計劃時,而不是直接從資料中收集統計資訊時, EXTIMATE=STATISTICS 可能報告不正確的結果。
expdp 匯出包括匯出資料和後設資料,後設資料包括 table,grants,indexes 和其他物件。使用 CONTENT=DATA_ONLY 或 CONTENT=METADATA_ONLY 執行相同的匯出,用來檢視 dump 檔案中有多少是用於後設資料的。換句話說, ESTIMATE 只會獲得表的大小而不是 dump 檔案的大小。因此,如果 expdp 命令沒有顯式地設定 CONTENT=DATA_ONLY, 則 dump 檔案大小與其估計的大小將不匹配。
如果一個表設計LOB 欄位,那麼 dump 檔案的大小可能會有所不同,因為 ESTIMATE 沒有考慮 LOB 的大小。可以透過以下的一個簡單的測試,檢視出更完整的資訊。
實驗測試
在本實驗中,我們使用CONTENT=DATA_ONLY 來進行 expdp , dump 檔案的大小與表的估計大小相差很遠,我們需要檢查表的定義來檢查 LOB 。
expdp 引數如下:
TABLES=<TABLE_NAME>
DUMPFILE=dir:<DUMP_NAME>.dmp
LOGFILE=dir:<LOG_NAME>.log
CONTENT=data_only
最後匯出dump 檔案大小為 16G 。
表是最近進行統計資訊分析過,並且EXTIMATE=STATISTICS 方式估算出表的大小為 201MB 。
以下是用過查詢dba_segments 得出的結果
SQL> select segment_name, segment_type, bytes, blocks, extents, initial_extent from dba_segments
where segment_name = '<TABLE_NAME>' and owner = '<SCHEMA_NAME>' ;
SEGMENT_NAME SEGMENT_TYPE BYTES BLOCKS EXTENTS INITIAL_EXTENT
------------ ------------ --------- ------ ------- --------------
<TABLE_NAME> <TYPE> 211222528 25784 82 3145728
檢查表結構
SQL> desc <TABLE_NAME>
Name Null? Type
-------------- ------------ ----------------
COLUMN_NAME1 NOT NULL NUMBER(10,0)
COLUMN_NAME2 VARCHAR2(255)
COLUMN_NAME3 BLOB
COLUMN_NAME4 NUMBER(10,0)
檢查LOB 欄位大小
SQL> SELECT SUM(BYTES)/1024/1024 "MB",segment_type from DBA_EXTENTS
where segment_name IN (SELECT SEGMENT_NAME FROM DBA_LOBS
WHERE TABLE_NAME = '<TABLE_NAME>' and owner = '<SCHEMA_NAME>');
MB SEGMENT_TYPE
------------ ---------------
19968 LOBSEGMENT
發現LOB 大小接近 20G ,因此,我們可以看到 LOB 在 DataPump 中沒有一起計入。
EXTIMATE_ONLY 引數
透過EXTIMATE_ONLY 引數,我們可以在不實際執行匯出的情況下進行估算消耗的空間大小。此引數不會生成 dump 檔案,而只會生成日誌檔案(如果指定) 該引數的值是Y (yes) 或 N (no = default) 。
例如:
expdp scott/PASSWORD NOLOGFILE=y ESTIMATE_ONLY=y
...
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. estimated "SCOTT"."EMP2" 128 KB
. estimated "SCOTT"."DEPT" 64 KB
. estimated "SCOTT"."DEPT2" 64 KB
. estimated "SCOTT"."EMP" 64 KB
. estimated "SCOTT"."SALGRADE" 64 KB
. estimated "SCOTT"."BONUS" 0 KB
Total estimation using BLOCKS method: 384 KB
Job "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully completed at 14:51
---- end ----
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529886/viewspace-2739315/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Data Pump】Data Pump的並行引數原理並行
- 使用隱含Trace引數診斷Oracle Data Pump(expdp)故障Oracle
- 【EXPDP】使用EXPDP備份資料時預估大小——ESTIMATE引數
- 【移動資料】data pump(中) EXPDP 應用
- Exp和資料泵(Data Pump)的query引數使用
- expdp impdp Data Pump(資料泵)使用解析
- 使用隱含Trace引數診斷Oracle Data Pump故障Oracle
- Oracle 12c新特性 - Data Pump (expdp/impdp) 功能增強Oracle
- EXPDP的parallel引數Parallel
- oracle data pumpOracle
- EXPDP/IMPDP 中的並行度PARALLEL引數並行Parallel
- data pump總結
- Oracle Data Pump 研究(一)Oracle
- 初探data pump export (二)Export
- 初探data pump export(一)Export
- Data Pump with Network importImport
- 有關Data Pump的學習
- 使用data pump前的設定
- Oracle expdp 排除表引數Oracle
- Data pump學習筆記筆記
- 【EXPDP】使用expdp的QUERY引數限定備份資料的範圍
- 1.5 - Numpy的方法中,axis引數的理解
- 【EXPDP】運用PARALLEL 和FILESIZE引數提高備份效率Parallel
- 【EXPDP】不使用DIRECTORY引數完成expdp資料備份
- exp和expdp的filesize引數的使用--匯出多個檔案
- 高速的匯出/匯入:Oracle Data PumpOracle
- data pump (資料抽取)測試
- 文件筆記--Oracle Data Pump 2筆記Oracle
- 文件筆記--Oracle Data Pump 1筆記Oracle
- Oracle 10g Data Pump IOracle 10g
- Oracle 10g Data Pump IIOracle 10g
- Oracle expdp impdp dump引數介紹Oracle
- Oracle 10g Data Pump ComponentsOracle 10g
- 10g新特性——Data Pump(轉)
- GoldenGate<二> configure data pumpGo
- v$session中LAST_CALL_ET引數的理解SessionAST
- 關於 Oracle 10g EXPDP 的 EXCLUDE 引數Oracle 10g
- jmeter 引數理解JMeter