DBMS_DATA_MINING.CREATE_MODEL 导致“ORA-40103:无效的 case-id 列:TID”在 11.2.0.1.0 64b 上,但在 10g 上正常
我在版本 11.2 上遇到 DBMS_DATA_MINING.CREATE_MODEL 问题。在 10g 上,下面的代码可以正常工作,而且我很确定在 11.1 上它也可以工作。
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
来自 < 的示例代码 code>dmardemo.sql 会导致相同的错误。 我不知道出了什么问题。请帮忙。
I have a problem with DBMS_DATA_MINING.CREATE_MODEL on version 11.2. On 10g this code below works OK, and I'm quite sure that on 11.1 it works too.
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;
causes:
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.
to be sure:
describe "SH"."TRANSACTIONS"
Name Null Type
--
ITEM NOT NULL NUMBER
TID NOT NULL NUMBER
and
select * from v$version;
returns:
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 from dmardemo.sql
causes the same error.
I don't know what is wrong. Please help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您的代码和示例都适合我。我也在使用 11.2.0.1.0,只不过我使用的是 32 位而不是 64 位。
我不确定这意味着什么。也许你的安装有问题?您可能需要查看验证数据挖掘安装。
Your code and the samples both work for me. I'm also using 11.2.0.1.0, except I'm using 32-bit instead of 64-bit.
I'm not sure what this means. Maybe there was a problem with your installation? You might want to look at Verifying Your Data Mining Installation.
或者也许 cust_id 在 100001 和 104500 之间的范围在版本之间发生了变化?
or maybe the range
where cust_id between 100001 AND 104500
changed between versions?纯粹是猜测,但 TRANSACTIONS 的同义词是否有可能不是指向 SH.TRANSACTIONS 而是指向其他表?我知道您指定了架构名称 SH,但如果是这种情况,仍然可能会导致问题(请描述 TRANSACTIONS 来查看)。
Purely a guess, but is it possible that a synonym for TRANSACTIONS is not pointing to SH.TRANSACTIONS but some other table? I know you specify the schema name SH, but may still cause issues if this is the case (describe TRANSACTIONS to see).
感谢您的帮助。系统重新启动几次后,它开始工作。没有任何原因(没有配置更改)。
Thanks for the help. After couple of system restarts it started to work. Without any reason (no configuration changes).