今天对一张表进行迁移的时候发现报以下错误,参考飞总处理过程,原文链接:http://www.xifenfei.com/2012/07/%E4%BD%BF%E7%94%A8copy%E5%AE%9E%E7%8E%B0long%E7%B1%BB%E5%9E%8B%E8%BD%AC%E7%A7%BB%E8%A1%A8%E7%A9%BA%E9%97%B4.html
SQL> alter table PMLBIN move tablespace ZNJK;
alter table PMLBIN move tablespace ZNJK
*
ERROR at line 1:
ORA-00997: illegal use of LONG datatype
alter table PMLBIN move tablespace ZNJK
*
ERROR at line 1:
ORA-00997: illegal use of LONG datatype
生成ddl语句
SQL> select dbms_metadata.get_ddl('TABLE','PMLBIN','ZNJK') from dual;
CREATE TABLE "ZNJK"."PMLBIN"
( "LBIN" NUMBER(*,0) NOT NULL ENABLE,
"NUMR" NUMBER(*,0) NOT NULL ENABLE,
"BDAT" LONG RAW
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS
1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLA
SH_CACHE DEFAULT)
CREATE TABLE "ZNJK"."PMLBIN"
( "LBIN" NUMBER(*,0) NOT NULL ENABLE,
"NUMR" NUMBER(*,0) NOT NULL ENABLE,
"BDAT" LONG RAW
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS
1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLA
SH_CACHE DEFAULT)
TABLESPACE "SYSTEM"
修改后
CREATE TABLE "ZNJK"."PMLBINBAK"
( "LBIN" NUMBER(*,0 ) NOT NULL ENABLE ,
"NUMR" NUMBER(*,0 ) NOT NULL ENABLE ,
"BDAT" LONG RAW
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE( INITIAL 65536 NEXT 1048576 MINEXTENTS
1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "ZNJK"
;
SQL> copy from znjk/xxx@xyxdb INSERT PMLBINBAK using select * from PMLBIN;
Array fetch/bind size is 15. (arraysize is 15)
Will commit when done. (copycommit is 0)
Maximum long size is 1000. (long is 1000)
47 rows selected from znjk@xyxdb.
47 rows inserted into PMLBINBAK.
47 rows committed into PMLBINBAK at DEFAULT HOST connection.
Array fetch/bind size is 15. (arraysize is 15)
Will commit when done. (copycommit is 0)
Maximum long size is 1000. (long is 1000)
47 rows selected from znjk@xyxdb.
47 rows inserted into PMLBINBAK.
47 rows committed into PMLBINBAK at DEFAULT HOST connection.
SQL>
SQL> alter table PMLBIN rename to PMLBIN_OLD;
Table altered.
SQL> alter table PMLBINBAK rename to PMLBIN;
Table altered.
SQL> alter table PMLBINBAK rename to PMLBIN;
Table altere
SQL> select table_name,tablespace_name from user_tables t where t.table_name='PMLBIN';
PMLBIN ZNJK
SQL> drop table PMLBIN_OLD purge;
Table dropped.
Table dropped.
SQL>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24486203/viewspace-1805605/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24486203/viewspace-1805605/
本文介绍了解决Oracle数据库中ORA-00997错误的方法,该错误通常发生在尝试移动包含LONG类型字段的表到不同表空间时。通过创建新表并使用COPY命令完成数据迁移。
721

被折叠的 条评论
为什么被折叠?



