2011-12-15 6 views
10

Mam problem z DBMS_DATA_MINING.CREATE_MODEL w wersji 11.2. Na 10g poniższy kod działa poprawnie i jestem pewien, że na 11.1 też działa.DBMS_DATA_MINING.CREATE_MODEL powoduje "ORA-40103: niepoprawna kolumna case-id: TID" na 11.2.0.1.0 64b, ale na 10g OK

CREATE OR REPLACE VIEW "SH"."ITEMS" AS SELECT PROD_ID AS item FROM SALES GROUP BY PROD_ID; 
CREATE OR REPLACE VIEW "SH"."TRANSACTIONS" AS SELECT "SH"."SALES"."PROD_ID" AS item , "SH"."SALES"."CUST_ID" tid FROM "SH"."SALES" where cust_id between 100001 AND 104500 GROUP BY cust_id, prod_id; 
CREATE TABLE "SH"."AR_SETTINGS" ("SETTING_NAME" VARCHAR2(30 BYTE), "SETTING_VALUE" VARCHAR2(128 BYTE)); 
INSERT INTO SH.AR_SETTINGS (SETTING_NAME, SETTING_VALUE) VALUES ('ASSO_MAX_RULE_LENGTH', '6'); 
INSERT INTO SH.AR_SETTINGS (SETTING_NAME, SETTING_VALUE) VALUES('ASSO_MIN_CONFIDENCE', TO_CHAR(0.7)); 
INSERT INTO SH.AR_SETTINGS (SETTING_NAME, SETTING_VALUE) VALUES('ASSO_MIN_SUPPORT', TO_CHAR(0.1)); 

BEGIN DBMS_DATA_MINING.CREATE_MODEL(model_name => 'AR_sh', mining_function => DBMS_DATA_MINING.ASSOCIATION, data_schema_name => 'sh', data_table_name => 'transactions', case_id_column_name => 'tid', settings_schema_name => 'sh', settings_table_name => 'ar_settings'); END; 

przyczyny:

ORA-40103: invalid case-id column: TID 
ORA-06512: at "SYS.DBMS_DATA_MINING", line 1779 
ORA-06512: at line 1 
40103. 00000 - "invalid case-id column: %s" 
*Cause: The column designated as case-id is not of one of CHAR, VARCHAR2, 
NUMBER data type. Case-id columns of type CHAR and VARCHAR2 must 
be of length less than or equal to 128 bytes. 
*Action: Change the schema of your input data to supply a case-id column 
of appropriate data type and/or length. 

aby mieć pewność:

describe "SH"."TRANSACTIONS" 
Name Null Type 
-- 
ITEM NOT NULL NUMBER 
TID NOT NULL NUMBER 

i

select * from v$version; 

Powroty:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 
PL/SQL Release 11.2.0.1.0 - Production 
CORE 11.2.0.1.0 Production 
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production 
NLSRTL Version 11.2.0.1.0 - Production 

The sample code z dmardemo.sql powoduje ten sam błąd. Nie wiem, co jest nie tak. Proszę pomóż.

Odpowiedz

1

Dzięki za pomoc. Po kilku ponownych uruchomieniach systemu zaczęło działać. Bez żadnego powodu (bez zmian konfiguracji).

4

Twój kod i próbki działają dla mnie. Używam również 11.2.0.1.0, z wyjątkiem tego, że używam 32-bitowego zamiast 64-bitowego.

Nie jestem pewien, co to oznacza. Może wystąpił problem z twoją instalacją? Możesz spojrzeć na Verifying Your Data Mining Installation.

+0

thx. Nie wiem, czy to ważne, ale używam Windows 7. – zacheusz

+1

Wątpię, żeby Vista/7 robił różnicę. Kiedy wydaje się, że Oracle radzi sobie bardzo dobrze, zachowuje spójność swojego oprogramowania pomiędzy systemami operacyjnymi. Jestem zaskoczony, że różnica w "cust_id" również byłaby istotna; Twój przykład nadal pracował dla mnie, nawet gdy zmieniłem zakres, aby nie zwracać żadnych wyników. Czy możesz odtworzyć swój problem w innej bazie danych, jednej ze świeżej instalacji 11g? Jeśli twoja baza danych została zaktualizowana z 10g, wygląda na to, że musisz wykonać dodatkowe czynności w celu eksploracji danych: http://docs.oracle.com/cd/E18283_01/datamine.112/e16807/upgrade_odm.htm#sthref285 –

+0

it dzieje się na świeżej instalacji 11.2 (bez aktualizacji) – zacheusz

2

czy może zakres where cust_id between 100001 AND 104500 zmienił się pomiędzy wersjami?

2

Tylko zgadnij, ale czy synonim TRANSAKCJI nie wskazuje na SH.TRANSACTIONS, ale na inny stół? Wiem, że określasz nazwę schematu SH, ale nadal możesz powodować problemy, jeśli tak jest (opisz TRANSAKCJE, aby zobaczyć).

+2

Sprawdziłem używając opisu i było OK – zacheusz

Powiązane problemy