环境: ods 源用户 target 目标用户
做DI的例子Populating the Customer Dimension from a Relational Table 中遇到一个问题,直接execute失败,但是在debug状态下却可以执行成功。
下面是直接execute的报错信息:
4140 5784 JOB 2010-3-9 17:34:06 The initial environment locale <zho_cn.cp936> has been coerced to <Unicode (UTF-16)> ().
4140 5784 ORA_LIB 2010-3-9 17:34:06 Loaded Oracle Client library <OCI.DLL> is in the path: <d:/oracle/product/10.2.0/db_1/bin/OCI.DLL>.
4140 5784 JOB 2010-3-9 17:34:06 Reading job <aca86db3_4d8f_4d91_9a49_094d4dea36f8> from the repository; Server version is <12.1.1.0>; Repository version is
4140 5784 JOB 2010-3-9 17:34:06 <12.1.0.0000>.
4140 5784 JOB 2010-3-9 17:34:06 Current directory of job <aca86db3_4d8f_4d91_9a49_094d4dea36f8> is <D:/Program Files/Business Objects/BusinessObjects Data
4140 5784 JOB 2010-3-9 17:34:06 Services/bin>.
4140 5784 JOB 2010-3-9 17:34:06 Starting job on job server host <20100108-1137>, port <3500>.
4140 5784 JOB 2010-3-9 17:34:06 Job <JOB_CustDim2> of runid <2010030917340641405784> is initiated by user <SYSTEM>.
4140 5784 JOB 2010-3-9 17:34:06 Processing job <JOB_CustDim2>.
4140 5784 JOB 2010-3-9 17:34:06 Initializing transcoder for datastore <ODS_DS_2> to transcode between engine codepage<Unicode (UTF-16)> and datastore codepage
4140 5784 JOB 2010-3-9 17:34:06 <<DEFAULT>>
4140 5784 JOB 2010-3-9 17:34:06 Initializing transcoder for datastore <Target_DS> to transcode between engine codepage<Unicode (UTF-16)> and datastore codepage
4140 5784 JOB 2010-3-9 17:34:06 <<DEFAULT>>
4140 5784 JOB 2010-3-9 17:34:06 Optimizing job <JOB_CustDim2>.
4140 5784 JOB 2010-3-9 17:34:06 Job <JOB_CustDim2> is started.
4140 5784 WORKFLOW 2010-3-9 17:34:06 Work flow <WF_CustDim2> is started.
220 3776 DATAFLOW 2010-3-9 17:34:07 Process to execute data flow <DF_CustDim2> is started.
220 3776 JOB 2010-3-9 17:34:07 Initializing transcoder for datastore <ODS_DS_2> to transcode between engine codepage<Unicode (UTF-16)> and datastore codepage
220 3776 JOB 2010-3-9 17:34:07 <<DEFAULT>>
220 3776 JOB 2010-3-9 17:34:07 Initializing transcoder for datastore <Target_DS> to transcode between engine codepage<Unicode (UTF-16)> and datastore codepage
220 3776 JOB 2010-3-9 17:34:07 <<DEFAULT>>
220 3776 DATAFLOW 2010-3-9 17:34:07 Data flow <DF_CustDim2> is started.
220 3776 DATAFLOW 2010-3-9 17:34:07 Cache statistics determined that data flow <DF_CustDim2> uses <0> caches with a total size of <0> bytes. This is less than(or
220 3776 DATAFLOW 2010-3-9 17:34:07 equal to) the virtual memory <1609564160> bytes available for caches. Statistics is switching the cache type to IN MEMORY.
220 3776 DATAFLOW 2010-3-9 17:34:07 Data flow <DF_CustDim2> using IN MEMORY Cache.
220 3776 DATAFLOW 2010-3-9 17:34:07 Data flow <DF_CustDim2> is terminated due to error <70300>.
220 3776 DATAFLOW 2010-3-9 17:34:07 Process to execute data flow <DF_CustDim2> is completed.
4140 5784 WORKFLOW 2010-3-9 17:34:07 Work flow <WF_CustDim2> is terminated due to an error <70300>.
4140 5784 JOB 2010-3-9 17:34:07 Job <JOB_CustDim2> is terminated due to error <70300>.
---------------------------------------------------------------------------------------------
220 3776 DBS-070300 2010-3-9 17:34:07 |Dataflow DF_CustDim2|Reader Query
220 3776 DBS-070300 2010-3-9 17:34:07 SQL submitted to Oracle Server <orcl> resulted in error <ORA-00942: 表或视图不存在
220 3776 DBS-070300 2010-3-9 17:34:07 >. The SQL submitted is <INSERT /*+ APPEND */ INTO "TARGET"."CUST_DIM" ( "CUST_ID" , "CUST_CLASSF" , "NAME1" , "ADDRESS" ,
220 3776 DBS-070300 2010-3-9 17:34:07 "CITY" , "REGION_ID" , "ZIP" )
220 3776 DBS-070300 2010-3-9 17:34:07 SELECT "ODS_CUSTOMER"."CUST_ID" CUST_ID , "ODS_CUSTOMER"."CUST_CLASSF" CUST_CLASSF , "ODS_CUSTOMER"."NAME1" NAME1 ,
220 3776 DBS-070300 2010-3-9 17:34:07 "ODS_CUSTOMER"."ADDRESS" ADDRESS , "ODS_CUSTOMER"."CITY" CITY , "ODS_CUSTOMER"."REGION_ID" REGION_ID ,
220 3776 DBS-070300 2010-3-9 17:34:07 "ODS_CUSTOMER"."ZIP" ZIP
220 3776 DBS-070300 2010-3-9 17:34:07 FROM "ODS"."ODS_CUSTOMER" "ODS_CUSTOMER"
220 3776 DBS-070300 2010-3-9 17:34:07 >.
4140 5784 DBS-070300 2010-3-9 17:34:07 |Dataflow DF_CustDim2|Reader Query
4140 5784 DBS-070300 2010-3-9 17:34:07 SQL submitted to Oracle Server <orcl> resulted in error <ORA-00942: 表或视图不存在
4140 5784 DBS-070300 2010-3-9 17:34:07 >. The SQL submitted is <INSERT /*+ APPEND */ INTO "TARGET"."CUST_DIM" ( "CUST_ID" , "CUST_CLASSF" , "NAME1" , "ADDRESS" ,
4140 5784 DBS-070300 2010-3-9 17:34:07 "CITY" , "REGION_ID" , "ZIP" )
4140 5784 DBS-070300 2010-3-9 17:34:07 SELECT "ODS_CUSTOMER"."CUST_ID" CUST_ID , "ODS_CUSTOMER"."CUST_CLASSF" CUST_CLASSF , "ODS_CUSTOMER"."NAME1" NAME1 ,
4140 5784 DBS-070300 2010-3-9 17:34:07 "ODS_CUSTOMER"."ADDRESS" ADDRESS , "ODS_CUSTOMER"."CITY" CITY , "ODS_CUSTOMER"."REGION_ID" REGION_ID ,
4140 5784 DBS-070300 2010-3-9 17:34:07 "ODS_CUSTOMER"."ZIP" ZIP
4140 5784 DBS-070300 2010-3-9 17:34:07 FROM "ODS"."ODS_CUSTOMER" "ODS_CUSTOMER"
4140 5784 DBS-070300 2010-3-9 17:34:07 >.
根据SQL submitted to Oracle Server <orcl> resulted in error <ORA-00942: 表或视图不存在 判断,可能出现二种情况:
1、源表或源视图不存在
2、没有读取目标表或者insert目标表的权限
但是我想原来在创建的时候已经给ods和target赋予权限了啊,难道target需要select 从ods. ODS_CUSTOMER的权限???
报着试试看的心情,于是在sqlplus下面,执行grant select on ods.ods_customer to target; 命令,然后再执行JOB,成功!!!
呵呵~~~