ORA-03001 unimplemented feature未实现的功能
Aug022015
同事在并行创建主键的时候,遇到了ORA-03001错误。数据库版本11.2.0.4.0。
ORA-03001: unimplemented feature
我模拟了半天才模拟出来,以下是案例模拟的过程,首先先创建一张测试表。
SQL> create table chgshs.dbdream_test as select * from chgshs.ord_pay where rownum<=100000; Table created. SQL> desc chgshs.dbdream_test Name Null? Type ----------------------------------------- -------- ---------------------------- ORD_ID NOT NULL VARCHAR2(40) PAY_SEQ NOT NULL VARCHAR2(5) PAY_MNS_CD NOT NULL VARCHAR2(7) PAY_ORD_PTR_CD NOT NULL VARCHAR2(7) PAY_ARR_AMT NOT NULL NUMBER(21,2) PAY_AMT NUMBER(21,2) PAY_DTM DATE PAY_MNS_RLTD_ID VARCHAR2(40) RFN_AMT NUMBER(21,2) RFN_PSS_AMT NUMBER(21,2) ORG_ORD_ID NOT NULL VARCHAR2(40) ORG_PAY_SEQ NOT NULL VARCHAR2(5) ORG_MNS_CD NOT NULL VARCHAR2(7) INST_ID NOT NULL VARCHAR2(40) INST_DTM NOT NULL DATE MDF_ID NOT NULL VARCHAR2(40) MDF_DTM NOT NULL DATE
并行创建主键,并没有遇到这个问题。
SQL> alter table CHGSHS.DBDREAM_TEST add constraint PK_DBDREAM_TEST primary key (ORD_ID) PARALLEL 2; Table altered.
删除这个主键,使用默认的名字,看看是否能遇到这个错误。
SQL> alter table CHGSHS.DBDREAM_TEST DROP constraint PK_DBDREAM_TEST; Table altered. SQL> alter table CHGSHS.DBDREAM_TEST add primary key (ORD_ID) PARALLEL 2; Table altered.
也是可以的,那他是怎么遇到的问题呢?难道是指定了using index选项?
SQL> alter table CHGSHS.DBDREAM_TEST DROP constraint SYS_C0044021; Table altered. SQL> alter table CHGSHS.DBDREAM_TEST add constraint PK_DBDREAM_TEST primary key (ORD_ID) USING INDEX PARALLEL 2; alter table CHGSHS.DBDREAM_TEST add constraint PK_DBDREAM_TEST primary key (ORD_ID) USING INDEX PARALLEL 2 * ERROR at line 1: ORA-03001: unimplemented feature
可以理解成指定了using index是说如果主键字段上存在索引,那么创建主键的时候直接使用索引,不需要额外创建索引,既然索引都存在了,还有必要开并行吗?但是ORACLE竟然抛出ORA-03001未实现的功能错误,难道在未来的版本要实现这个功能吗?