dポイントプレゼントキャンペーン実施中!

Oracle10gを使用しています。Oracle8iから特定のテーブルを抽出してOracle10gに入れようとしましたが、Oracle10gのexpコマンドは互換性の問題で8iに対して使えませんでした。そこでOracle8iのexpコマンドを使用しようかと考えましたが、テーブルごとのエクスポートができないとのことで不可(データベースが大きすぎるため、そもそも8iのExpコマンドを実行できる権限を持っていないのでできませんが)。

仕方がないのでExpコマンドはあきらめて、テーブル定義抽出→データをCSVまたはSQLで抽出という手順でデータを移そうかと考えています。データの抽出はできたのですが、テーブル定義の取得は10gで使えるdbms_metadata.get_ddlが使用できないので取得できずにこまっています。8iでテーブル定義を取得するにはどうしたらいいのでしょうか?

なお当方8iのデータベースのSystem/Sys権限を所有していないません。また8iがインストールされているサーバへログインすることもできません。それを考慮した上で実現可能な方法をご提示願います。

A 回答 (2件)

Oracle8iへは、対象テーブルの所有者でログインすることもできないのでしょうか?それだとどうしようもないのですが・・・



対象テーブルの所有者でログインできるのならば、expコマンドでその所有者でログインし、tables,rowsパラメータを指定すればテーブル単位で定義のみエクスポートできるはずです。
    • good
    • 0

Oracle8iですと、定義を抜き出すのはexpで「rows=n」オプションを指定してCreate文のみ抜き出すことが可能です。


あとはimpの際に「show=y」を指定するとCreate文が表示されます。

しかし権限がないので上記ができないということですよね。

>また8iがインストールされているサーバへログインすることもできません。それを考慮した上で実現可能な方法をご提示願います。

上記はSQLを発行する事自体ができないということでしょうか。
データの抽出はできたということなので、SQL文は発行できると仮定するとディクショナリから設定を抜き出してCreate文を作るしかないでしょう。
※昔、PL/SQLで作ったことがあります。

以下のようなディクショナリから情報を抜き出します。

user_tables
user_tab_columns
user_indexes
user_ind_columns
user_constraints

そえもダメならテーブル定義を管理している部署にCreate文をもらうしかないと思います。
    • good
    • 0

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