1

この質問の簡単なバージョンは次のとおりです。4GBの最大サイズ制限に達したOracle10gXEデータベースからすべてのデータをエクスポートすることは可能ですか?

ここで、背景を説明します。私の(Windows)Oracle 10g XEデータベースは、最大許容データベースサイズである4GBに達しました。この問題に実装しようとした解決策は、最大サイズ制限が大きく、とにかく本番環境をより適切に反映するOracle11gXEにアップグレードすることでした。もちろん、典型的なOracleのやり方では、それらにはインプレースアップグレードオプションがありません(少なくともXEで見つけることができたものではありません)。そこで、 『Oracle 11g XEインストール・ガイド』の「10.2XEと11.2XE間のデータのインポートとエクスポート」セクションの指示に従うことにしました。しばらくSQLPlusと戦った後、私は最終的に、ユーザーに次のように入力するように指示する命令のステップ3dに到達しました(SQLPlusではなくコマンドラインを指定していませんが、コマンドラインを意味します)。

expdp system/system_password full=Y EXCLUDE=SCHEMA:\"LIKE \'APEX_%\'\",SCHEMA:\"LIKE \'FLOWS_%\'\" directory=DUMP_DIR dumpfile=DB10G.dmp logfile=expdpDB10G.log

このコマンドを実行すると、次の出力が得られます。

Export: Release 10.2.0.1.0 - Production on Thursday, 29 September, 2011 10:19:11


Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
ORA-31626: job does not exist
ORA-31633: unable to create master table "SYSTEM.SYS_EXPORT_FULL_06"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPV$FT", line 863
ORA-12952: The request exceeds the maximum allowed database size of 4 GB

USERS表領域からかなりの量のデータを削除しましたが、データの物理的な場所が原因でサイズを変更できません。そして、私が何をしても、私は常に同じ出力を取得します。管理Webアプリケーションから「コンパクトストレージ」を実行しようとしましたが、効果がありません。

だから私の質問は、私は何かが足りないのですか?それとも、Oracleは本当に無能なので、XEデータベースがいっぱいになった場合に人々は完全に運が悪くなりますか?

4

2 に答える 2

4

データをエクスポートする必要があるポイントに到達できます。データを結合するための助けが必要なように聞こえるので、USERS テーブルスペースのサイズを減らし、SYSTEM テーブルスペースのサイズを増やして問題を解決できます。

USERS テーブルスペースからデータを削除したが、サイズを変更できないとおっしゃいました。テーブルスペースのサイズを最大ブロックよりも小さくすることはできないため、テーブルごとに次のコマンドを実行して、テーブル データを再編成します。

ALTER TABLE <table_name> MOVE <tablespace_name>;

表領域名は、表が現在存在するのと同じ表領域にすることができますが、それでもデータが再編成され、データが結合されます。

このステートメントは、USERS テーブルスペースに存在するすべてのテーブルに対するこのコマンドのテキストを提供します。

select 'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' MOVE '||TABLESPACE_NAME||';' From dba_tables where tablespace_name='USERS';

行ごとに再配置するのではなく、テーブル データ (ブロック) の物理的な編成を変更するため、MOVE コマンドはインデックスを無効にするため、インデックスも再構築する必要があります (ALTER INDEX REBUILD;)。

データが結合されたら、データ サイズを反映するように USERS テーブルスペースのサイズを変更できます。

痛いですか?はい。Oracle はユーザーフレンドリーですか? 彼らはあなたがそう思うことを望んでいますが、実際にはそうではありません。特に、やりたいことの種類を実行できない奇妙なコーナーケースに遭遇した場合はなおさらです。

于 2011-09-30T17:19:27.683 に答える
0

ご覧のとおり、エクスポートするには SYSTEM テーブルスペースに空き領域が必要ですが、SYSTEM+USERS の合計が 4 Gb に達したため、Oracle XE はその割り当てを拒否しています。

同様のアーキテクチャに Oracle 10gR2 Standard Edition インスタンスをインストールしてから、Oracle XE をシャットダウンし、既存の USERS データ ファイルのコピーを作成します。標準版で「ALTER TABLESPACE」コマンドを使用すると、USERS テーブルスペースを既存のデータ ファイルにリンクし、データをエクスポートできるはずです。

于 2011-09-30T08:27:16.417 に答える