質問: 電話番号やクレジットカード番号など、機密データをSQLで加工してマスキングした後、そのデータをData Pumpを使ってエクスポート/インポートする場合、インポートした先で元の値に戻す方法は存在しますか。 例えばupdate文などで「1x3x5x7x9」のような感じで特定のカラムにマスキングを施した場合、普通にそのデータを転送すれば当然加工したままのデータがインポートされるだけですよね? また、マスキングという作業自体テーブル単位どころかカラム単位での作業になると思うのですが、膨大なデータ量であった場合、マスキング作業も大変だとは思いますがそれを元に戻していく作業も現実的でないように感じます。 仮に100スキーマぐらいあったとして、そのうち大半のスキーマの特定の数千テーブルの特定のカラムに同じマスキングを施すなんてPL/SQLを使っても無理...ではなくとも気が遠くなる作業に思えますし。 何故このような質問をさせて頂いたかと申しますと、量はどのくらいか把握してないんですが、マスキングを施した状態のデータを移行することになってしまったからです。 どなたかご経験がおありの方がいらっしゃいましたらご教授願いたく思います。
回答: 2つの疑問点があるように見受けられます。 1. 大量のデータ移行とその加工に対する課題意識 2. マスクデータの戻し 1.について 通常、加工を伴う大量一括データ移行にDataPumpは向かないと思います。この場合では専用の製品を検討されるべきです。普通に考えて、大量のデータを瞬時に加工、移行、確認することは難しく。期間をとって少しづつ同期させていくなどの方式を検討する必要があります。ことのきDataPumpやPL/Sqlなどを使って、「自分で」加工しながら移していくことも(できるかできないかでいえば)可能ですが、結局専用製品の一部機能を「自分で」作るため、品質も性能も悪いものを作って失敗するというのが目に見えています。リスクと引き換えにお金で解決するほうが堅実でしょう。 #もちろん、データの価値と規模によります。5円の価値もないものに数百万かけるのは馬鹿ですから。 #その場合はデータをあきらめるというのが現実的な選択肢です。一方でuser31658さんの投稿を見ていると規模も重要度も高いように見受けられます。その場合は。。。ということです。 2.について どうやってマスクするかによります。このマスクというのが文字通り「マスク」であれば情報欠落しているので元に戻す方法ってないですよ(戻せるならマスクしている意味ないですよね。。)。。。「難読可」「暗号化」の意味で使われているのであれば、たとえば公開鍵暗号化方式などを使ってやればいいのでしょうが、これも計算コストかかりすぎるのでどう対応するかはケースによるかと。。1の製品のよってやれることが変わるので、まずはOracleあたりに連絡を取るのが良いのかと思います。 #PowerCenterとかGolden Gateでしたっけ。。