2011-12-15 14 views
10

Ho un problema con DBMS_DATA_MINING.CREATE_MODEL sulla versione 11.2. Su 10g questo codice qui sotto funziona bene, e sono abbastanza sicuro che su 11.1 funziona anche.DBMS_DATA_MINING.CREATE_MODEL causa "ORA-40103: colonna ID caso non valido: TID" su 11.2.0.1.0 64b, ma su 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; 

cause:

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. 

per essere sicuri:

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

e

select * from v$version; 

restituisce:

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 da dmardemo.sql causa lo stesso errore. Non so cosa c'è che non va. Per favore aiuto.

risposta

1

Grazie per l'aiuto. Dopo un paio di riavvii del sistema, ha iniziato a funzionare. Senza alcun motivo (nessuna modifica alla configurazione).

4

Il tuo codice e gli esempi funzionano entrambi per me. Sto anche usando 11.2.0.1.0, tranne che sto usando 32-bit anziché 64-bit.

Non sono sicuro di cosa significhi. Forse c'è stato un problema con la tua installazione? Potresti voler dare un'occhiata a Verifying Your Data Mining Installation.

+0

thx. Non so che sia importante, ma io uso Windows 7. – zacheusz

+1

Dubito che Vista/7 faccia la differenza. Una volta la cosa che Oracle sembra fare molto bene è mantenere il loro software coerente tra i sistemi operativi. Sono sorpreso che una differenza in 'cust_id' farebbe la differenza; il tuo esempio ha funzionato ancora per me anche quando ho cambiato l'intervallo per non restituire risultati. Puoi riprodurre il tuo problema su un altro database, uno da una nuova installazione 11g? Se il tuo database è stato aggiornato da 10g, sembra che ci siano alcuni passaggi aggiuntivi da eseguire per il data mining: http://docs.oracle.com/cd/E18283_01/datamine.112/e16807/upgrade_odm.htm#sthref285 –

+0

it succede sulla nuova installazione 11.2 (senza aggiornamento) – zacheusz

2

o forse l'intervallo where cust_id between 100001 AND 104500 è cambiato tra le versioni?

2

Solo un'ipotesi, ma è possibile che un sinonimo di TRANSACTIONS non stia puntando a SH.TRANSACTIONS ma a un altro tavolo? So che specifichi il nome dello schema SH, ma potresti comunque causare problemi se questo è il caso (descrivi TRANSAZIONI per vedere).

+2

ho controllato usando descrive ed era OK – zacheusz