exclude パラメータを使用して、Oracle Data Pump でのエクスポート中にスキーマ オブジェクトを除外できます。
EXCLUDE=object_type[:name_clause] [, ...]
はtable partition
有効ですobject_type
か?
つまり、エクスポート中に選択したテーブル パーティションを除外することは可能ですか?
エクスポート操作中のフィルタリングをカバーするドキュメントのセクションには、次のように記載されています。
メタデータ フィルタリングは、EXCLUDE および INCLUDE パラメータを通じて実装されます...
メタデータ フィルタは、エクスポートまたはインポート操作に含める、または除外する一連のオブジェクトを識別します...
有効なオブジェクト タイプのリストを表示するには、次のビューをクエリします。フル モードの場合は DATABASE_EXPORT_OBJECTS、スキーマ モードの場合は SCHEMA_EXPORT_OBJECTS、テーブルおよびテーブルスペース モードの場合は TABLE_EXPORT_OBJECTS。OBJECT_PATH 列にリストされている値は、有効なオブジェクト タイプです。
私の 11gR2 (EE) インスタンスの最初の 2 つのビューには、パーティションへの参照がありません。3 番目には、 PL/SQL パッケージおよびタイプのリファレンスセクションにDBMS_PLUGTS
は表示されないを参照するものがありますが、トランスポータブル テーブルスペース用のようです。
決定的ではありませんが、少なくとも個別のオブジェクト タイプとしては、ノーと言わざるを得ません。
では、句table:partition
で有効な構文を使用するのはどうですか? TABLES
これは機能しません。EXCLUDE
句にパーティション名を含めようとすると、次のようになります。
expdp tables=MY_TABLE exclude=table:"= 'MY_TABLE:SOME_PARTITION'" ...
...無視され、テーブル全体がエクスポートされます-:
テーブル名の一部として扱われているようですが、引用符で囲まれているため、完全に不合理ではなく、エクスポートしているテーブルと一致しませんまったく。そのテーブルだけでなく、エクスポートするスキーマを指定する場合も同じです。
あなたが持っていると思われる唯一のオプションは、句で必要なパーティションを指定することです。TABLES
TABLEキーワードを使用して、テーブルパーティションを除外することはできません。必要なのは、を除外することTABLE_DATA
です。
exclude=table_data:"in ('SOME_PARTITION','SOME_OTHER_PARTITION')"
マニュアルは実際にそれを説明しています。
残念ながら、table_dataに一致するものはすべて除外されます。これは、次のようにテーブルをピリオドでパーティション化する場合に非常に便利です
。TRANSACTION.PD2010
TRANSACTION.PD2011 TRANSACTION.PD2012 TRANSACTION.PD2013
TRANSACTION_DETAIL.PD2010
TRANSACTION_DETAIL.PD2011TRANSACTION_DETAIL.PD2012TRANSACTION_DETAIL.PD2013
パーティション
名
は
他
のテーブル名と同じであってはなりません。 、しかし、もちろん、パーティション分割を計画したときにそれを処理しました。
これで、次のように除外を実行できます。
exclude=table_data:"in (select partition_name from user_partitions where partition_name like 'PD%' and partition_name < 'PD' || to_char(sysdate,'YYYY'))"
テーブルのリストの代わりにselectステートメントを使用して、同じ方法でインクルードを実行することもできます。これにより、4000文字の行制限を回避できます。これは、複数のincludeステートメントによって、またはテーブルのリストに改行を追加することによって回避することもできますが、リストにinがある場合、そのリストには1000個のオブジェクトしか存在できないため、テーブルのエクスポートも実行できると思います。 、モジュール、トリガーなどではなく、テーブルのみをエクスポートします。このリストは1000に制限されておらず、改行を追加することで4000文字の制限を回避できます。
エクスポート中に選択したパーティションを含める/除外する唯一の方法は、datapump API を使用することです。次に例を示します。
http://www.acehints.com/2011/06/data-pump-expdp-how-to-exclude-table.html