アプリ版:「スタンプのみでお礼する」機能のリリースについて

オラクルの環境をコピーして全く別の所に構築したい。
ただ、以下のような条件があります。

1.実体の無い物(ビュー、ファンクション、シノニムなど)は
  そのままコピーしたい。また、Create文の情報もほしい。

2.実体のあるテーブルですが、非常に件数が多い物があります。
  その為、ある特定の件数(例えばMax1000件まで)でコピーしたい。
  また、Create文の情報もほしい。

3.テーブルの中身ですが、機密性の高い情報がある可能性があります。
  なので、そのようなカラムにはマスキング(データ変更)したい。
  そのようなカラムがどこにあるかは事前に分かりませんので、
  作業中に判断しながら行っていきたい。
  (作業はお客様先で、時間的な制約があります)

これらを実現する為には、どのようなツールで、どのようなコマンドで
行うのが適切でしょうか?

A 回答 (2件)

私の勤務する会社で、協力会社に業務依頼する場合、DB環境も、相手先に贈るのですが、以下の方法で行っています。


1)本番用ユーザー全体をExportします。
2)テストユーザーAを作成し、Exportしたデータを、ユーザーAにインポートします。
3)データ件数を絞りたいテーブルは、不要なレコードを削除します。
4)ダミーデータに置換したい場合は、Update文にて個別にダミーデータに置き換えます。
5)加工が終わったユーザーAをExportします。

5)でExportしたデータを協力外医者に送付します。

ダミーデータに置き換えるべきフィールドが何か、テーブル定義書などで事前に入手できませんか?
お客様での作業時間を減らすことができます。
テストユーザーAを作成することで、本番ユーザーに影響する時間の短縮になります。

この回答への補足

ご解答ありがとうございました。
シンプルな方法ですね。
置き換えるフィールドの事前入手は可能か分かっていません。

補足日時:2012/05/13 17:43
    • good
    • 0

こんにちわ。



Create DDL については、dbms_metadata を使うと簡単に取得できます。
以下のようにすると、HOGEHOGE が所有者になっているView のCreate DDL
を纏めて取得する事ができます。
後は、出力されたSQL をCopy&Paste すればOk です。
詳細は、PL/SQL Package Reference を参照して下さい。
sqlplus system/manager
SQL> set pages 10000
SQL> set lines 200
SQL> set long 999999
SQL> set longchunk 999999
SQL> col sql_txt format a200
SQL> exec DBMS_METADATA.SET_FILTER(DBMS_METADATA.SESSION_TRANSFORM, SQLTERMINATOR, true);
SQL> select DBMS_METADATA.GET_DDL('VIEW', view_name, owner) as sql_txt
from dba_views
where owner = 'HOGEHOGE';

2 については、DB Link を作って、
Create table <Tab名> as select * from <Tab名>@dblink where rownum <= 1000
又は、Insert into <Tab名> select * from <Tab名>@dblink where rownum <= 1000
で最大1000件移行できます。
但し、LONG データ型を含んでいるテーブルについては、使用できません。

マスキングについては、Oracle Masking Pack なる製品がありますが、
有償だし、事前にマスキングパターンを登録しておくものなので
お探しの者ではないと思います。
https://blogs.oracle.com/oracle4engineer/entry/p …

データのカーディナリティ等を無視して、単純にランダムな数値/文字列
が欲しいだけであれば、dbms_random Package が使えます。
ダミーデータを大量に登録する場合は、私も良く使います。

この回答への補足

ご解答ありがとうございました。
マスキングは難しそうですね。
イメージとしては、マスキングしながらエクスポートみたいな事が出来ればなと思います。

補足日時:2012/05/13 17:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!