オラクルの環境をコピーして全く別の所に構築したい。
ただ、以下のような条件があります。
1.実体の無い物(ビュー、ファンクション、シノニムなど)は
そのままコピーしたい。また、Create文の情報もほしい。
2.実体のあるテーブルですが、非常に件数が多い物があります。
その為、ある特定の件数(例えばMax1000件まで)でコピーしたい。
また、Create文の情報もほしい。
3.テーブルの中身ですが、機密性の高い情報がある可能性があります。
なので、そのようなカラムにはマスキング(データ変更)したい。
そのようなカラムがどこにあるかは事前に分かりませんので、
作業中に判断しながら行っていきたい。
(作業はお客様先で、時間的な制約があります)
これらを実現する為には、どのようなツールで、どのようなコマンドで
行うのが適切でしょうか?
No.1ベストアンサー
- 回答日時:
こんにちわ。
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 が使えます。
ダミーデータを大量に登録する場合は、私も良く使います。
この回答への補足
ご解答ありがとうございました。
マスキングは難しそうですね。
イメージとしては、マスキングしながらエクスポートみたいな事が出来ればなと思います。
No.2
- 回答日時:
私の勤務する会社で、協力会社に業務依頼する場合、DB環境も、相手先に贈るのですが、以下の方法で行っています。
1)本番用ユーザー全体をExportします。
2)テストユーザーAを作成し、Exportしたデータを、ユーザーAにインポートします。
3)データ件数を絞りたいテーブルは、不要なレコードを削除します。
4)ダミーデータに置換したい場合は、Update文にて個別にダミーデータに置き換えます。
5)加工が終わったユーザーAをExportします。
5)でExportしたデータを協力外医者に送付します。
ダミーデータに置き換えるべきフィールドが何か、テーブル定義書などで事前に入手できませんか?
お客様での作業時間を減らすことができます。
テストユーザーAを作成することで、本番ユーザーに影響する時間の短縮になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
異なるサーバのDBデータ同士を...
-
テーブルの存在チェックについて
-
importについて
-
変数が選択リストにありません
-
Timestampの値を自動的に挿入す...
-
データベース内のテーブル名の取得
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
セルの右クリックで出る項目を...
-
Accessクエリでの、LIKE条件
-
accessのレポートで元になるテ...
-
FROM の中で CASE を使えるでし...
-
アクセス エラーを数値「0」に...
-
INSERT INTO ステートメントに...
-
Accessでテーブル名やクエリ名...
-
エクセルVBAで5行目からオート...
-
Access テキスト型に対する指定...
-
Accessのクエリでデータの入力...
-
【Access】フォームで自動計算...
-
ACCESSのクエリで集計で、先頭...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数が選択リストにありません
-
テーブルの存在チェックについて
-
異なるサーバのDBデータ同士を...
-
importについて
-
データがある場合のカラムの削除
-
Timestampの値を自動的に挿入す...
-
既存DBのテーブル情報をCR...
-
データベース内のテーブル名の取得
-
1ヶ月に土日は何日あるか
-
Object Browser相関タブの見方...
-
PostgreSQLのカラムに"user"と...
-
NLS_LENGTH_SEMANTICS変更の影響
-
オンラインREDOログ障害からの...
-
どれがPrimary Key、ForeignKey...
-
10gより前のバージョンからRECY...
-
Oracl[10g]の SQL文について(No.6)
-
ビュー表等の修正について
-
Oracleのトリガーについて
-
コラム名でテーブルを検索でき...
-
既存テーブルの属性変更方法に...
おすすめ情報