MAX*_*MAX 4 oracle oracle-xe oracle11g
我有.sql超过60个表的DDL脚本文件.我正在尝试将脚本复制粘贴到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.
Run Code Online (Sandbox Code Playgroud)
如果我SEGMENT CREATION DEFERRED在DDL脚本中删除:
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" ;
Run Code Online (Sandbox Code Playgroud)
这有效.但我无法在每个表脚本中手动删除它.
如果我有.dmp转储文件,那么以下语法也将解决问题; 在源实例上:
EXPDP user/pwd dumpfile=somename.dmp directory=DATA_DUMP_DIR nologfile=Y version=10.2
Run Code Online (Sandbox Code Playgroud)
并在目标实例上
IMPDP user/pwd dumpfile=somename.dmp directory=DATA_DUMP_DIR nologfile=Y version=10.2
Run Code Online (Sandbox Code Playgroud)
但是我没有.dmp文件,我只有一个.sql文件.
这是最好的方法吗?
延迟段创建选项在Oracle 11g Express Edition(XE)中不可用,这是您正在使用的.它仅适用于企业版(EE).
如果您不想进行导出/导入并且只能使用已提供的脚本文件,则唯一的选择是查找并删除该SEGMENT CREATION DEFERRED子句的所有实例.
当然,任何文本编辑都可以这样做,SQL Developer 在SQL Worksheet窗口中有自己的查找/替换.