2016-06-21 26 views
3

.sqlスクリプト・ファイルに60を超えるテーブル用のDDLがあります。私は、 "Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production"というデータベースに接続されたスクリプトをSQL Developerにコピー・ペーストしようとしています。遅延セグメント作成機能が有効になっていません(ORA-00439)

サンプルDDLスクリプト:

CREATE TABLE UserName."Table_Name" 
    ( "Col1" NUMBER(*,0), 
    "Col2" VARCHAR2(50 BYTE), 
    "Col3" VARCHAR2(50 BYTE) 
    ) SEGMENT CREATION DEFERRED 
    PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING 
    TABLESPACE "USERS" ; 

Error report - 
SQL Error: ORA-00439: feature not enabled: Deferred Segment Creation 
00439. 00000 - "feature not enabled: %s" 
*Cause: The specified feature is not enabled. 
*Action: Do not attempt to use this feature. 

私はDDLスクリプトでSEGMENT CREATION DEFERREDを削除する場合:

CREATE TABLE UserName."Table_Name" 
    ( "Col1" NUMBER(*,0), 
    "Col2" VARCHAR2(50 BYTE), 
    "Col3" VARCHAR2(50 BYTE) 
    ) 
    PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING 
    TABLESPACE "USERS" ; 

これは動作します。しかし、私は手動でそれを各テーブルスクリプトで削除することはできません。

もし私が.dmpダンプファイルを持っていれば、次の構文も問題を解決します。ソース・インスタンス上:

EXPDP user/pwd dumpfile=somename.dmp directory=DATA_DUMP_DIR nologfile=Y version=10.2 

とターゲット・インスタンス上

IMPDP user/pwd dumpfile=somename.dmp directory=DATA_DUMP_DIR nologfile=Y version=10.2 

しかし、私は唯一の.sqlファイルを持って、.dmpファイルを持っていません。

これを実行する最善の方法はどれですか?

+1

あなたの '.sql'ファイルはどこから来ていますか?XEがサポートしていない句がないとそれを生成できない場合、なぜセグメント作成句を編集できませんか?それはかなり些細な発見/交換のように思えますか? –

+0

編集/返信ありがとうございます。 * .sqlファイルは、DBがインストールされているローカルシステムにあります。 Find/Replaceは、私が今行っていることがうまく動作します。しかし、「XEはサポートしていません」とは何を意味しますか? – MAX

答えて

6

遅延セグメント作成オプションis not available in Oracle 11g Express Edition (XE)は、使用しているものです。唯一available in Enterprise Edition (EE)です。

エクスポート/インポートを実行せず、既に提供されているスクリプトファイルのみを使用できる場合は、唯一の方法はSEGMENT CREATION DEFERRED句のすべてのインスタンスを検索して削除することです。

もちろん、テキスト・エディットでもSQL WorksheetウィンドウのSQL Developer has its own find/replaceを実行できます。

関連する問題