2011-12-15 28 views
10

我有在11.2版本DBMS_DATA_MINING.CREATE_MODEL一個問題。在10g下面的代碼工作正常,我很確定在11.1上它也可以工作。DBMS_DATA_MINING.CREATE_MODEL導致 「ORA-40103:無效的情況下,ID列:TID」 的11.2.0.1.0 64B,但萬兆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; 

原因:

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. 

可以肯定的:

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

select * from v$version; 

回報:

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 codedmardemo.sql導致相同的錯誤。 我不知道什麼是錯的。請幫忙。

回答

1

感謝您的幫助。系統重啓後,它開始工作。沒有任何理由(沒有配置更改)。

4

您的代碼和示例都適合我。我也使用11.2.0.1.0,除了我使用32位而不是64位。

我不知道這意味着什麼。也許你的安裝有問題?你可能想看看Verifying Your Data Mining Installation

+0

thx。我不知道它的重要性,但我使用Windows 7. – zacheusz 2011-12-27 11:01:30

+1

我懷疑Vista/7有什麼不同。一旦Oracle似乎做得很好,就是在操作系統之間保持軟件的一致性。我很驚訝,`cust_id`中的差異也會產生影響;即使當我更改範圍以返回任何結果時,您的示例仍然適用於我。你能否在另一個數據庫上重現你的問題,一個來自新鮮的11g安裝?如果您的數據庫是從10g升級的,則您需要執行一些額外的步驟才能進行數據挖掘:http://docs.oracle.com/cd/E18283_01/datamine.112/e16807/upgrade_odm.htm#sthref285 – 2011-12-28 23:16:33

2

或可能的範圍內where cust_id between 100001 AND 104500版本之間改變了嗎?

2

純粹是一種猜測,但是否有可能TRANSACTIONS的同義詞不是指向SH.TRANSACTIONS而是其他表?我知道你指定了模式名稱SH,但如果情況如此,可能仍然會導致問題(請描述TRANSACTIONS)。

相關問題