web-dev-qa-db-ja.com

Oracle 11gR2 expが一部のテーブルをエクスポートしない

Linux(x64)で実行されているOracle 11g(11.2.0.1)データベースがあります。データベース内には、スキーマとそのための33個のテーブルがあります(すべて同じテーブルスペースにあります)。 sqlplus経由でログインすると、経由ですべてのテーブルを一覧表示できます。

SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE = 'TABLE';

しかし、を使用してテーブルスペースをエクスポートすると

exp ... BUFFER=65536 FULL=N COMPRESS=N CONSISTENT=Y TABLESPACES=... FILE=...

次に、33個のテーブルのうち24個のみをエクスポートします。不足しているテーブルを次の方法でエクスポートしようとしました

exp ... TABLES=<missing_table> ...

しかし、エラーが発生します。

 EXP-00011: <schema>.<missing_table> does not exist

ここで何が問題なのかを知るにはどうすればよいですか?
すべてのテーブルをエクスポートするにはどうすればよいですか?

更新:

ゲイリーの助言を聞いた後、私はエクスポートされたテーブルと欠落しているテーブルの間に以下の違いを見つけました。エクスポートされたテーブルのDDL:

CREATE TABLE "MY_SCHEMA"."EXPORTED_TABLE" ( ... ) TABLESPACE "MY_TS" PCTFREE 10 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 64K BUFFER_POOL DEFAULT) LOGGING NOCOMPRESS

そして今、エクスポートされていないテーブルのDDL:

CREATE  TABLE "MY_SCHEMA"."MISSING_TABLE" ( ... ) TABLESPACE "MY_TS" PCTFREE 10 INITRANS 1 MAXTRANS 255 STORAGE ( BUFFER_POOL DEFAULT) LOGGING NOCOMPRESS

上記のDDLは、EnterpriseManagerによって生成されました。 sqlplusで作成されたものには、不足しているテーブルのSTORAGEセクションはまったくありませんが含まれていました。

テーブルを再編成してSTORAGEINITIAL値を64Kに設定すると、テーブルがエクスポートされることがわかりました。

問題が解決しました。 (うまくいけば;))

4
Tilo Prütz

機能するテーブルと機能しないテーブルの1つに対してSELECT DBMS_METADATA.GET_DDL('TABLE','yourTableName')を実行します。次に、違いを見つけるプレイ。 (yourTableNameは大文字と小文字が区別されることに注意してください。)

BLOB/CLOBまたは別のテーブルスペース内のパーティション、エクスポートされていない別のスキーマが所有するTYPEへの依存関係などが考えられます...

1
Gary

Oracle 11gR2(11.2.0.1)以降、新機能があります。遅延セグメント作成:送信されるテーブルの作成は、最初の行が挿入されるまで延期されます。これにより、空のテーブルがdba_segmentsにリストされず、expユーティリティによってエクスポートされません。

最も簡単な解決策は、expdpユーティリティを使用することです。

Expユーティリティを使用する必要がある場合は、空のテーブルすべてに対してこのコマンドを実行する必要があります。

ALTER TABLE tablename ALLOCATE EXTENTS
6
user78141

テーブルはDBに存在しますが、このテーブルにエクステントを割り当てない限り、エクスポートすることはできません…。

経過:00:00:00.04 14:44:54 PIMUSER @mdmqa>テーブルの変更RECORDAPPROVALHISTORY割り当て範囲;

1
shahzada

同様のエラーが発生し、同義語にも関係があると思います。

データベース内の特定のテーブルを記述して、そこから選択できます(ゼロ行)。パブリックシノニムからの選択についても説明できます

しかし、そのテーブルをエクスポートすると、011が存在しないというエラー、名前、または概要が表示されます。 (1つの問題を解決する)行を挿入すると、テーブル名でエクスポートできますが、シノニムではエクスポートできません。

もちろん、これはすべて11.1で機能していました。

最初にexpdpについて聞いたことがあります。それを見ていきます

1
Mike Moxcey

割り当て範囲は機能します。次のステートメントでテーブルを見つけることができます。

select 'alter table '||table_Name||' allocate extent;' from user_Tables where temporary='N' and table_name not in (select segment_name from user_segments)

0
Korina Tolboom

これは、Oracle11の新機能です。 Enterpriseエディションのみ。空のテーブルはエクスポートされません。

0
Basil DBA

エクスポートするのと同じテーブルスペース内のテーブルはありますか?このクエリで確認してください:

SELECT table_name, tablespace_name FROM user_tables
0
Vincent