私
Datapump のエクスポートをする前に、どのぐらいのサイズのダンプファイルが生成されるのか事前に知りたい!
Datapump のエクスポート実行時に作成されるダンプファイルのサイズはデータサイズに依存するが、見積もり方法は2つ存在する。
方法1:使用済みブロックの数 × ブロックサイズ で計算する
実際に使用済みのブロック数から算出が可能。
実行例
SQL> select count(distinct(substr(rowid,1,15))) blocks_used from test;
BLOCKS_USED
-----------
36
SQL> show parameter db_block_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
SQL> select 36*8192 from dual;
36*8192
----------
294912
PCTFREE/PCTUSED 等のオーバーヘッドが含まれるので、完全なデータサイズではない
方法2:EXPDP の estimate_only = y オプションを利用する
Datapump を使ってダンプファイルを生成せずに概算値を見積もることが可能。
実行例
SQL> ! expdp scott/tiger directory=dumpdirectory tables=test estimate_only=y;
Export: Release 12.1.0.1.0 - Production on 金 2月 23 09:52:10 2021
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
"SCOTT"."SYS_EXPORT_TABLE_01"を起動しています: scott/******** directory=dumpdirectory tables=test estimate_only=y
BLOCKSメソッドを使用して見積り中です...
オブジェクト型TABLE_EXPORT/TABLE/TABLE_DATAの処理中です
. 見積"SCOTT"."TEST" 384 KB
BLOCKSメソッドを使用した見積り合計: 384 KB
ジョブ"SCOTT"."SYS_EXPORT_TABLE_01"が金 2月 23 09:52:12 2021 elapsed 0 00:00:02で正常に完了しました
対象は表の行データのみとなりメタデータは含まれない