Ora-22809 Nonexistent Attribute Creating Table With Sde.St_geometry Type (文档 ID 1411854.1)

APPLIES TO:

Oracle Spatial and Graph – Version 11.2.0.3 and later
Information in this document applies to any platform.

SYMPTOMS

Unable to import Spatial data as it fails with:

ORA-600 error [kpudpxcs_ctxConvertStream_ref_1], [SYS_TYPEID(“SHAPE”)], [], [], [], [], [], [], [], [], [], [].

But it is confirmed that the table itself cannot be created even from the SQL command line:

SQL> CREATE TABLE SDE.GDB_ITEMS
2 (
3 OBJECTID INTEGER NOT NULL,
4 UUID CHAR(38 BYTE) NOT NULL,
5 TYPE CHAR(38 BYTE) NOT NULL,
6 NAME NVARCHAR2(226),
7 PHYSICALNAME NVARCHAR2(226),
8 PATH NVARCHAR2(512),
9 URL NVARCHAR2(255),
10 PROPERTIES INTEGER,
11 DEFAULTS BLOB,
12 DATASETSUBTYPE1 INTEGER,
13 DATASETSUBTYPE2 INTEGER,
14 DATASETINFO1 NVARCHAR2(255),
15 DATASETINFO2 NVARCHAR2(255),
16 DEFINITION INTEGER,
17 DOCUMENTATION INTEGER,
18 ITEMINFO INTEGER,
19 SHAPE SDE.ST_GEOMETRY
20 )
21 LOB (“SHAPE”.”POINTS”) STORE AS (
22 TABLESPACE SDE
23 ENABLE STORAGE IN ROW
24 CHUNK 8192
25 RETENTION
26 CACHE
27 LOGGING
28 STORAGE (
29 INITIAL 64K
30 NEXT 1M
31 MINEXTENTS 1
32 MAXEXTENTS UNLIMITED
33 PCTINCREASE 0
34 BUFFER_POOL DEFAULT
35 FLASH_CACHE DEFAULT
36 CELL_FLASH_CACHE DEFAULT
37 ))
38 LOB (DEFAULTS) STORE AS (
39 TABLESPACE SDE
40 ENABLE STORAGE IN ROW
41 CHUNK 8192
42 RETENTION
43 NOCACHE
44 LOGGING
45 STORAGE (
46 INITIAL 64K
47 NEXT 1M
48 MINEXTENTS 1
49 MAXEXTENTS UNLIMITED
50 PCTINCREASE 0
51 BUFFER_POOL DEFAULT
52 FLASH_CACHE DEFAULT
53 CELL_FLASH_CACHE DEFAULT
54 ))
55 TABLESPACE SDE
56 RESULT_CACHE (MODE DEFAULT)
57 PCTUSED 0
58 PCTFREE 0
59 INITRANS 4
60 MAXTRANS 255
61 STORAGE (
62 INITIAL 40K
63 NEXT 1M
64 MINEXTENTS 1
65 MAXEXTENTS UNLIMITED
66 PCTINCREASE 0
67 BUFFER_POOL DEFAULT
68 FLASH_CACHE DEFAULT
69 CELL_FLASH_CACHE DEFAULT
70 )
71 LOGGING
72 NOCOMPRESS
73 NOCACHE
74 NOPARALLEL
75 MONITORING;
LOB (“SHAPE”.”POINTS”) STORE AS (
*
ERROR at line 21:
ORA-22809: nonexistent attribute

CAUSE

Bug 13693393 – ORA-600: [KPUDPXCS_CTXCONVERTSTREAM_REF_1], [SYS_TYPEID(“SHAPE”)] DURING IMPORT closed as duplicate of:

BUG 14026888 – DATAPUMP IMPORT HITTING ORA-600 [KPUDPXCS_CTXCONVERTSTREAM_REF_1] INTERNAL ERROR

SOLUTION

Apply Patch 14026888

登录到https://support.oracle.com
点击修补程序ID或号码
补丁ID或号码是:14026888
点击搜索
点击与您的平台关联的Bug编号
点击下载

如果修补程序不适用于您的平台,请记录服务请求并请求回送。

或者,您可以使用以下解决方法:

导入了整个模式并创建了表,但数据没有导入,因此在第二次导入时使用ignore = y来加载数据

来自ESRI:

http://forums.arcgis.com/threads/25980-Oracle-data-pump-import-of-ArcSDE-9.3.1-ST_GEOMETRY-tables-fails-%2810g-to-11g%29

我在那里看到的有效建议是:
1.创建一个新的数据库和新的ArcGIS安装
2.完全导出/完全导入,而不是模式导出

其他客户提供的替代方案具有相同的错误:

在ESRI案例#129251上打开案例,他们发现了另一种解决方法,我们已经成功通过了测试。使用imp导入,
1.首先使用Oracle imp导入SDE模式
2.重新编译无效对象
3.使用以下脚本重建ST_GEOMETRY索引。
4.将SDE对象的权限授予public。

5.使用Oracle imp导入有ST_GEOMETRY数据的用户

DECLARE
    v_index_name sde.st_geometry_index.index_name%type;
    v_table_name sde.st_geometry_index.table_name%type;
    v_column_name sde.st_geometry_index.column_name%type;
    v_srid sde.st_geometry_index.srid%type;
    v_grid_info sde.st_geometry_index.grid%type;
    v_sql VARCHAR2(255);
    cursor cv_spindx is
        select index_name,table_name,
        column_name,srid,grid 
        from sde.st_geometry_index where owner=user; BEGIN
    OPEN cv_spindx;
    LOOP
        FETCH cv_spindx 
        INTO v_index_name,v_table_name,v_column_name,v_srid,v_grid_info;
        EXIT WHEN cv_spindx %NOTFOUND;

        BEGIN
            v_sql := ‘DROP INDEX ‘ || v_index_name;
            DBMS_OUTPUT.PUT_LINE(v_sql);
            EXECUTE IMMEDIATE(v_sql);
        EXCEPTION
            WHEN OTHERS THEN
                DBMS_OUTPUT.PUT_LINE(‘Index does not exist’);
        END;
        v_sql := ‘CREATE INDEX ‘ || v_index_name 
            || ‘ ON ‘ || v_table_name  
            || ‘(‘ || v_column_name 
            || ‘) INDEXTYPE IS SDE.ST_SPATIAL_INDEX PARAMETERS (”’
            || ‘st_grids=’ || v_grid_info.grid1 || ‘,’ || v_grid_info.grid2 || ‘,’ || v_grid_info.grid3    
            || ‘ st_srid=’ || v_srid || ”’)’;
        DBMS_OUTPUT.PUT_LINE(v_sql);
        EXECUTE IMMEDIATE(v_sql);
    END LOOP;
    CLOSE cv_spindx;
END;

/

测试数据这里拿不到,但是,使用数据泵是首选路线。

转载自:https://blog.csdn.net/qq_21127313/article/details/80523423

You may also like...

退出移动版