延迟段创建功能未启用 (ORA-00439)
Deferred Segment Creation feature not enabled (ORA-00439)
我有 .sql
个带有 DDL 的脚本文件超过 60 table 秒。我正在尝试将脚本复制粘贴到 SQL Developer 中,连接到 "Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production" 的数据库。
示例 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" ;
这行得通。但我无法在每个 table 脚本中手动删除它。
如果我有 .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
但是我没有.dmp
文件,我只有.sql
文件。
哪种方法最好?
延迟段创建选项is not available in Oracle 11g Express Edition (XE), which is what you are using. It's only available in Enterprise Edition (EE)。
如果您不想执行 export/import 并且只能使用您已经拥有的提供的脚本文件,您唯一的选择是查找并删除 SEGMENT CREATION DEFERRED
子句的所有实例。
当然,任何文本编辑都可以做到这一点,SQL 开发人员 has its own find/replace SQL 工作表 window。
只需使用 SEGMENT CREATION IMMEDIATE
代替 SEGMENT CREATION DEFERRED
我有 .sql
个带有 DDL 的脚本文件超过 60 table 秒。我正在尝试将脚本复制粘贴到 SQL Developer 中,连接到 "Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production" 的数据库。
示例 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" ;
这行得通。但我无法在每个 table 脚本中手动删除它。
如果我有 .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
但是我没有.dmp
文件,我只有.sql
文件。
哪种方法最好?
延迟段创建选项is not available in Oracle 11g Express Edition (XE), which is what you are using. It's only available in Enterprise Edition (EE)。
如果您不想执行 export/import 并且只能使用您已经拥有的提供的脚本文件,您唯一的选择是查找并删除 SEGMENT CREATION DEFERRED
子句的所有实例。
当然,任何文本编辑都可以做到这一点,SQL 开发人员 has its own find/replace SQL 工作表 window。
只需使用 SEGMENT CREATION IMMEDIATE
代替 SEGMENT CREATION DEFERRED