web-dev-qa-db-ja.com

Oracleエクスポートからプロシージャ、関数などのソースコードを抽出する方法

次のコマンドを使用して、OracleデータベースのEXPDAT.DMPファイルを生成しました。

exp userid=usr/pass@db owner=own rows=n compress=n

次に、次のコマンドを実行して、「Create Table ...」ステートメントを含むファイルを生成しました。

imp userid=usr/pass@db full=y indexfile=output.sql

これはCreate Tableステートメントに最適ですが、Create Procedure/Create Function/Create View source codeも必要です。 .DMPファイルでそれらを見ることができますが、それらを抽出する方法が見つかりません。

EXPDAT.DMPファイルからこの情報を抽出することは可能ですか?または、別の方法を使用する必要がありますか?

目的は、ソース管理可能なファイルにソースをエクスポートできるようにすることです。

7
MatthewToday

元のデータベースにアクセスできる場合は、DBMS_METADATA.GET_DDLを使用します。

UTL_FILEを使用してスクリプトを作成し、(USER_OBJECTSからの)各オブジェクトを通過し、名前とタイプを使用してオブジェクトを抽出し、適切な命名規則を持つファイルに書き込むことができます。

単一のファイルを分割するよりもずっとクリーンになります。

8
Gary

[〜#〜] show [〜#〜] パラメータを使用して、DDLを確認します。

imp userid=usr/pass@db full=y show=y log=imp.log

従来のエクスポートの代わりにdatapump(expdp、impdp)ユーティリティを使用できる場合は、sqlfileコマンドを使用できます。

-expdpを取る

 expdp dumpfile=full.dmp logfile=full.log directory=EXP_DIR schemas=SCOTT

-以下のimpdpはインポートされません。fullcode.sqlファイルにすべてのオブジェクトコードが生成されます。

impdp dumpfile=full.dmp logfile=full.log directory=EXP_DIR schemas=SCOTT content=metadata_only sqlfile=fullcode.sql
0