プロが教えるわが家の防犯対策術!

ご覧頂きありがとうございます。
サーバーの移行がうまくいかず困っているのでご質問させていただきます。

やりたいことは、本サーバーにあるOracleデータベースのデータをエクスポートして、開発環境にインポートさせようと思っています。

以下、行った作業です。

windowsのコマンドプロンプトから以下のコマンドを実行してエクスポート
C:\>emp sadmin/password@sid file=C:\ora_data\empsid.dmp consistent=y owner=sadmin

開発環境にて、表領域の作成とユーザの作成、権限の付与を行う。
SQL>CREATE TABLESPACE HOGE
datafile 'C:\temp\HOGE1.dbf' size 800M reuse
logging
online
segment space management auto;

SQL>CREATE TEMPORARY TABLESPACE HOGE_TEMP
tempfile 'C:\temp\HOGE_TEMP1.dbf' size 800M
extent management local uniform size 10M;

SQL>CREATE USER sadmin
IDENTIFIED BY hogehoge
DEFAULT TABLESPACE HOGE
TEMPORARY TABLESPACE HOGE_TEMP
QUOTA UNLIMITED ON HOGE;

SQL>GRANT DBA TO sadmin;
GRANT IMP_FULL_DATABASE TO sadmin;

以下のコマンドを実行して、windowsのコマンドプロンプトからインポート。
C:\>imp sadmin/password@sid file=C:\ora_data\empsid.dmp log=C:\ora_data\impsid.log fromuser=sadmin touser=sadmin ignore=y

状況としましては、エクスポートは問題なく終了しています。(確信はありませんが(汗))
インポート実行時、トリガーの箇所だと思うのですが処理が止まってしまいインポートが完了しません。
画面上では、「制約を使用可能にします・・」と表示されて止まってしまいます。
ログには以下のようなエラーが出ています。
IMP-00003: Oracleエラー439が発生しました。
ORA-00439: 機能は有効ではありません: Partitioning

IMP-00041: 警告: オブジェクト作成の際、コンパイル・エラーが発生しました。

DBを見てみると、データのインポートはできているようなのですが、トリガーのインポートができていないみたいです。

当方Oracleを触るのは初めてで、書籍やGoogle検索などで調べているのですが、原因解明できず途方にくれています。
どなたかご助言頂けないでしょうか?
宜しくお願いします。

A 回答 (2件)

Partitioningオプションはエンタープライズエディションに、更に


オプションとして購入しないと使用できないものです。
OracleXEでは使用できませんし、有効にできる方法はないです。

方法としては以下が考えられます。

(1)
開発環境を本番と同一バージョンにする。

(2)
該当するパーティションテーブルを手動で通常のテーブルに作り直す。
パーティションを操作するSQLはすべてエラーになりますし実行計画も異なるため厳密な検証はできません。あまりお勧めできません。

開発と本番は環境を同一にするのがベストなのですが……。
    • good
    • 0
この回答へのお礼

ご返事遅くなりました。

親切にお答え頂きありがとうございます。
やはりOracleXEではパーティションは使えないですか。

自分としても、開発環境と本番環境は完全に同一にしたいのですが(むしろそうしなければ開発環境とはいえないですよね)
自分の力ではどうすることもできず・・

とりあえず今回は手作業で一つづつテーブルを作成していくことにしました。

今回は親切にお答え頂きありがとうございました。

お礼日時:2008/01/21 18:17

>IMP-00003: Oracleエラー439が発生しました。


>ORA-00439: 機能は有効ではありません: Partitioning

単にエラーコードだけ見ると「Partitioning」オプションが
有効ではないというエラーです。
パーティション絡みのところでエラーが出ているようです。

移行元DBと移行先DBのバージョン、オプションを確認しましょう。
systemユーザーからv$versionとv$optionを確認。
多分、移行先のDBが「Standard Edition」だと思います。

本当にテーブルが全てインポートできているのでしょうか?
パーティションテーブルはインポートできていないような気がします。
user_tablesやuser_objectsなどで差がないか確認してください。

テーブルが存在しないため、関連するトリガー等がエラーになっている可能性はあります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
v$optionを確認してみたところ、移行先のpartitioning項目がfalseになっていました。
テーブルも確認してみたところパーティションテーブルのインポートはできていないようです。

DBのバージョンですが、以下のようになっております。

移行元DB
Enterprise Edition 10.1.0.2.0

移行先DB
Express Edition 10.2.0.1.0

移行先DBのパーティションを有効にしたいのですが、マニュアルには「パーティション機能はサポートされていません」となっています。

ですが、文字コードについてもJA16SJISはサポートされていませんがDBを再構築することによって可能にできました。

再質問になってしまうのですが、OracleXEにおいてパーティション機能を有効にすることはできるのでしょうか?

ご面倒かとは思いますが、ご回答頂ければと思います。
宜しくお願いします。

お礼日時:2008/01/18 19:20

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

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