プロが教える店舗&オフィスのセキュリティ対策術

ストアド、ファンクション、viewをあるスキーマ丸ごとエクスポートするのを
バッチで(手順化)したいのですが、どのようにすれば可能でしょうか。

テーブルはエクスポートしたくないです。
現在方法がわからないのでobject browserでそれぞれのスクリプトを
指定してエクスポートしています。

どなたか教えていただけないでしょうか。
よろしくお願い致します。

A 回答 (3件)

こんにちわ。



> ストアド、ファンクション、viewをあるスキーマ丸ごとエクスポートするのを
> バッチで(手順化)したいのですが、どのようにすれば可能でしょうか。
9i 以上であれば、dbms_metadata.get_ddl を使うのはどうでしょう?
現在の定義からCreate 文を作成してくれます。

SQL*Plus からこんな感じ (確認はしていませんが) のスクリプトを
実行すれば、良いかと思います。

-------------------------------------------------------------------
set trimspool on
set echo off
set pages 0
set lines 1000
set long 99999999
spool view_define.sql

select
dbms_metadata.get_ddl('VIEW', view_name, owner) as create_ddl
from dba_views
where owner = 'エクスポートするView の所有者'
order by view_name;
spool off
exit
-------------------------------------------------------------------

dba_views ではなく、dba_object を使用すれば複数のオブジェクトを
作成するDDL を一発で取得できます。

詳細が、PL/SQL パッケージ・リファレンス を確認して下さい。
    • good
    • 0
この回答へのお礼

回答どうもありがとうございました。
近いものはできました。ただ、
(1)最初の実行SQLと最後の取得した件数までテキストに抜かれてしまった。
(2)SQLを元々tabを入れて見やすくしてあったのですが、スペースに変換されているようで
 ちょっと見づらくなってしまった。

ちょっと工夫してみます。
どうもありがとうございました。

お礼日時:2011/09/06 09:18

exp(従来からのエクスポートユーティリティ)ならOWNERパラメータとROWS=Nパラメータ(表の定義は出力されるが中身はスキップされる)を使う、expdp(データ・ポンプ・エクスポート)ならSCHEMASパラメータとEXCLUDEパラメータを使えば、出来そうな気がします。

    • good
    • 0
この回答へのお礼

回答どうもありがとうございました。
oracle11で実行してみたのですが、確かにテーブルは抜かれていないようですが
(エクスポート中で件数表示されてないので)時間は通常にエクスポートするくらいかかっている
ようでした。

とりあえず別の方法考えてみます。

お礼日時:2011/09/06 09:20

SYS.ALL_SOURCEビューのTEXTを取得してみてはどうですか。


ただし、テーブルがないとコンパイルエラー起こす可能性があります。
    • good
    • 0
この回答へのお礼

回答どうもありがとうございました。
テーブルは存在しているものだけです。
試してみます。

お礼日時:2011/09/06 09:16

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

関連するカテゴリからQ&Aを探す