Oracle移行exp/impのブロックサイズ相違による容量オーバー

このQ&Aのポイント
  • OracleのDBを9iから10gへ、インポート・エクスポートユーティリティを使用して移行しようとした際に、ブロックサイズの相違により容量が足りずにインポートできませんでした。
  • 9i環境のブロックサイズが4KB、10g環境では8KBであるため、同じ表領域サイズでも容量が不足する問題が発生しました。
  • ブロックサイズが異なるため、PCTFREEで指定した空き領域分はサイズが大きくなることになりますが、インポートされるブロック数は同じであり、空き領域の問題は解決している可能性があります。
回答を見る
  • ベストアンサー

Oracle移行 exp/imp ブロックサイズ相違 容量オーバー

Oracle移行 exp/imp ブロックサイズ相違 容量オーバー お世話になります。 OracleのDBを9iから10gへ、インポート・エクスポートユーティリティを使用して 移行しようとしているのですが、 9i環境のブロックサイズが4KB、10g環境では8KBであるせいか、 同じ表領域サイズにもかかわらず、容量が全く足らずにインポートできません。 dba_tablesでインポートできた表のブロック数を確認すると9i、10gとも同じサイズとなっております。 ブロック構成はそのままの状態でインポートされるということでしょうか? ブロックサイズが異なるので、PCTFREEで指定した空き領域分はサイズが大きくなる と思いますが、同じブロック数になるということは、4KB単位でインポートされ、 残りの4KB分は空きができているということでしょうか。 表領域管理は9iではディクショナリ管理、10gはAUTOALLOCATEのローカル管理です。 ご教授いただけると幸いです。 以上、よろしくお願いいたします。

  • Oracle
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

9iの時はエクステントの単位が小さく、10gになるとローカル管理となって エクステントが大きくなっているため容量が小さな表がたくさん表領域に存在すると 領域の利用効率が悪くなっているのではないかと思います。 なお、export/importはブロック単位の情報を取り出しているわけではなく 表の定義や生データを取っているので4KB単位でimportしているわけではありません。

fushululu
質問者

お礼

ご回答ありがとうございます。 根本的な原因は全く別のところにありました。 移行元と先で表領域名がことなり、また、表とINDEXを別表領域で管理しているため、 INDEXも同じ表領域に入ってしまったためでした。 また、expで出力されたダンプファイルが発行するCREATE文のINITIAL句の指定が 若干移行元環境よりも大きめに指定されていたのも一因と思われます。 ブロックの仕様については勉強になりました。 ありがとうございました。

関連するQ&A

  • oracleの順序のexp/impにつて

    oracleの順序のEXP/IMPについてです。 oracle 11gでlinuxなのですが、別サーバ上にあるAというスキーマ(例:hon1)の シーケンスを、別サーバ上にあるBというスキーマ(例:dev1)に、expdp/impdp コマンドで、sequenceのみを、export/importをしようとしています。 expdpコマンドでsequenceのみはexportできたのですが、impdpコマンドで、sequence をimportするとエラーがでて失敗します。 SEQUENCEの処理はできるのですが、OBJECT_GRANTの作成でエラーで失敗します。 別環境の別スキーマに入れようとしているので、権限の作成で失敗するのは当たり前 かもしれませんが。 回避する方法、grantを実行しない方法はないのでしょうか。 また、表のimportみたいに、記述したテーブルのみをimportするような、ターゲットの sequenceのみをimportするような記述はできないのでしょうか。 宜しくお願い致します。 環境:oracle 11g、Linux

  • oracle ダンプファイルのサイズとインポート先の表領域の使用サイズ

    oracle ダンプファイルのサイズとインポート先の表領域の使用サイズの関係 あるダンプファイル(2.5GB)をオラクルDBへimportしたら、 そのDBの表領域が10GBほど使用されました。 2.5GBのものをimportしたのに、なぜここまで表領域を消費するのでしょうか? (これまでこのようなことはありませんでした。) 表領域の使用サイズをもっと少なくするにはどうすればよいのでしょうか? エクスポート時のコマンド exp aaaa/aaaa file=bbbb.dmp log=exp_cccc.log consistent=y インポート時のコマンド imp aaaa/aaaa file=bbbb.dmp log=imp_cccc.log エクスポート時に「compress=n」をつけたり、 インポート時に「ignore=y」をつけたりしたのですが、 とくに変化はありませんでした。

  • Access2000から Oracleへの移行

    いつも利用させて頂いています。 ある業務でAccessの.mdbファイルを Oracle8.1.7への移行作業をしているのですが、 Accessの各データ型に対する Oracleのデータ型を選ぶのに、どれがいいのか判断がつきません。 またフィールドサイズ等の決め方もわかりません。 Oracle Migration Workbenというツールを使ってもいいのですが、 自動で判別される為に、説明を求められると出来ないので 自分でテーブル定義を決めて行きたいと考えています。 Oracle使い始めてまだまだ勉強不足ですが、 上記のような移行に関しての記述されているURLがあれば教えて下さい。 (Oracle8i~Oracle10gであれば嬉しいです。) また、移行に関しての注意点があればあわせてご教授ください。 宜しくお願い致します。

  • エクステントについて

    データベースをOracle8i→Oracle10gへ移行しました。 10gのデフォルトであるローカル管理で表領域を管理していますが、 これまでディクショナリ管理にしか接していなかったため困っています。 で、疑問が出てきました。 ローカル管理でも、フラグメンテーションは発生するとは思いますが それに対してはどのように対応したらよいでしょう。 データをDrop/Createすればデータの並びはきれいになると思いますが もし、そのように対応するならどのような基準で対象となるテーブルを選んだらよいでしょうか。 もちろん、簡単に対応する方法があったら教えてください。 これまでは複数エクステントにデータがまたがっているテーブルをディクショナリからSelectし、 第1エクステント内にデータが収まるようテーブルをDrop/Createして データをインポートしていました。 サーバ環境は OS:Windows2003Server StandardEdition DB:Oracle Database 10g 10.2.0.1.0 StandartEdition

  • Oracle でのデータベースサイズの調べ方

    Oracle9i を使ってます。 関係表のサイズを調べるにはどのようにすればよろしいのでしょうか? マニュアルもあるのですが、なんせ膨大なためどこを見るとよいのやら さっぱり分からなくて困っています。 OS は Miracle Linux 2.0 です。 よろしくお願いいたします。

  • Oracle9iデータベースのサーバ間移行について

    現在使用しているサーバが古くなった為、新しいサーバを購入しそちらにデータベースの移行を考えております。 そこで、できるだけシンプルに以前の環境を変えずにサーバ間の移行を行いたいのですが、どのような方法がいいでしょうか? 最初は、エクスポートインポートで行おうとしたのですが、データのみ移動だとチューニングを行った内容まで移行できなそうなので、データと現在の設定まで移行できる方法を探しております。 コールドバックアップというのがあるようなのですが、当方初心者のためいまいちわかりませんでした。 現環境と新環境ともにOS、Oracleのバージョンは同じです。 オラクルスペシャリストの方々ご教授お願いします。 環境 OS:Windows2003Server Oracle:9i (9.2.0.1.0)

  • oracleのimp-00002エラーについて

    こんにちは shohei3728と申します。 会社にてoracleのシステムの一部を担当している者です。 現在、顧客先に導入しているシステムにて、エラーが発生し困っております。 知恵をお借りしたくこちらに相談させて頂きます。 具体的には下記の現象が発生しております。 ----------------------------------------------------------- バッチ処理にて下記のoracleのimportを行うと下記のエラーが発生しました。 imp user/password@sid file=filename full=y imp-00002:読み取り用のfilenameのopenに失敗しました。 インポート・ファイル:EXPDAT.DMP > ----------------------------------------------------------- また、現状わかっている内容は以下になります。 ・ファイルはバッチと同じ階層にあり、パスが間違っている事はありませんでした。 ・oracle9i cl と oracle 10g express editionの同居 ・windows XP(32bit) 遠方の顧客なため、実際のコンソールを操作する事は難しいです。 (現状わかっている情報は顧客に電話にて操作して貰った内容になります。) 質問内容のレベルは低いかもしれませんが、顧客先にてトラブルが発生しているため、 藁をも掴む思いで書かせて頂いています。 当方の技術レベルもそこまで高くないので、噛み砕いてご助言いただければ幸いです。 ご教授の程、よろしくお願い致します。

  • Oracleデータベース

    Oracleのデータベース設計についてです。なん点かあります。 1.CREATE DATABASE文で表領域の指定の箇所でEXTENT MANAGEMENT LOCAL UNIFORM SIZEとあるのですがここではエクステントの管理方式を指定していると思うのですが、SIZEは何を基準にきめたらよいのでしょうか?データブロックサイズは8KBです。 2.SYSTEM,SYSAUX,UNDO,TEMP,USERの中で表領域の自動拡張を選ぶときに何か決める基準があれば教えてください。 3.SYSAUX表領域をCREATE DATABASE文で作成時にサイズを設定する個所では何を基準に決めたらよいですか? ひとつでも教えていただけたら嬉しいです。

  • ORACLEアーカイブログのサイズについて

    ORACLEアーカイブログのサイズを調べたのですが、「ブロック単位」の意味がわかりません。 やりたいことは、出力した「ブロック単位のアーカイブログサイズ」を「GBで表したい」です。 ご教授願います。 私の調査結果を記載します。 以下のビューがアーカイブログ情報を保持していると判明した。 【V$ARCHIVED_LOG】 このビューが保持しているカラム「BLOCKS」が、アーカイブのログサイズを持っている。 【BLOCKS NUMBER アーカイブ・ログのサイズ(ブロック単位) 】 ※ここがブロック単位であるため、○GBに変換できない・・・。 上記のカラムの情報をSELECTした結果、「ブロック単位のサイズ」が出力された。 BLOCKS = 1028995 これをGBに直したいのですが、どうしたらよいのでしょうか? 参考にしたサイト:http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19228-04/dynviews_1.htm

  • テーブルサイズについて

    環境 Oracle9i 9.2.0 OS Windows2003 Server 言語 Visual Basic6.0 自社の事務所移転に伴ってDB環境の再構築をすることになりました。 DB環境を作成し、インポート程度ならできますが、DBの見積もりなどの設計は未経験です。 DB管理者もいますので構築は進むとは思いますが、自分の知識が進まないと困るのでいろいろと質問したいと思います。 とりあえず、漠然と疑問点となっていることを以下に並べてみました。 1.表領域のサイズを決定する判断 2.データファイルサイズを決める判断 3.DBブロックサイズの判断 4.再構築する為にチェックする内容 3についてはマニュアル参照したのですが、設定が必要なブロックサイズは「標準ブロックサイズ」のみとなっており、ほとんどの場合、オペレーティングシステム固有のデフォルト・データブロックサイズで大丈夫と記述がありますが、その根拠はなんでしょうか? ちなみにDBの詳細ですが、 マスタ系のテーブル数:43 トランザクション系のテーブル数:50 です。 200万件程度のテーブル数が15ぐらいです。 最大で800万件のテーブルがあります。 件数程度じゃ詳細にならないと思いますが、こういうときのテーブルのサイズはどう調べたらよいのでしょうか?各テーブルごとの容量とかわかるのでしょうか? その他気になることなどございましたらご指摘ください。 ご教授お願い致します。