2016-12-13 1 views
-1

SQL 계획을 계획 테이블에로드 할 때 오류가 발생합니다. 누구든지 나를 도울 수 있습니까? 내가 오라클 EM에서 select 문을 붙여 복사하기 때문에최적화 된 SQL 실행을로드하는 중에 ORA 00907을 수신했습니다. 계획 테이블에 계획을

[email protected]> @xplan.sql 
      ((t2.productgroup_id = 15520) AND (t1.productgroup_id = 15520) /* 
           * 
ERROR at line 22: 
ORA-00907: missing right parenthesis 


[email protected]> host cat xplan.sql 
    explain plan into 

plan_table 
for 
SELECT /* ORDERED INDEX(t1) USE_HASH(t1) */  'B' || 
      t2.pg_featurevalue_13_id pg_featurevalue_13_id,  'B' || 
      t2.pg_featurevalue_02_id pg_featurevalue_02_id,  'r' || 
      t4.elementrange_id pg_featurevalue_15_id,  'B' || 
      t2.pg_featurevalue_08_id pg_featurevalue_08_id,  'B' || 
      t2.pg_featurevalue_01_id pg_featurevalue_01_id,  'r' || 
      t5.elementrange_id price_eur_id,  'B' || t2.productgroup_id 
      productgroup_id,  'G' || t6.elementgroup_id period_id,  
      SUM(t1.pd_sales_units*t1.pd_projection_factor*t1.pd_price_units_eur) 
      salesvalueeur FROM  lu_item_293 t2,  lu_pg_featurevalue_15 t3,  
      lu_elementrange_rel t4,  fact_pd_out_itm_293 t1,  
      lu_elementgroup_rel t6,  lu_elementrange_rel t5 WHERE /* Attribute 
      Joins */  ((t1.item_id = t2.item_id /* Customizing Begin */ AND 
      t1.productgroup_id = t2.productgroup_id) /* Customizing End */ AND 
      (t2.pg_featurevalue_15_id = t3.pg_featurevalue_15_id) AND 
      (t3.pg_featurevalue_15_num BETWEEN t4.lbound AND t4.ubound) AND 
      (t1.pd_price_units_eur BETWEEN t5.lbound AND t5.ubound) AND 
      (t1.period_id = t6.value_id)  ) /* Attribute Filters */ AND 
      ((t2.productgroup_id = 15520) AND (t1.productgroup_id = 15520) /* 
      Push Down Filters */ AND (t2.pg_featurevalue_01_id IN 
      (103,104,107,110,113,134,148,167,171,186,192,216,2259,236,241,2477,24958 
      ,27445,297,3891,71,76,89,92,95)) AND (t2.pg_featurevalue_08_id IN 
      (716,717)) AND (t2.pg_featurevalue_02_id IN (4165,4166)) AND 
      (t2.pg_featurevalue_13_id = 5424) AND (t4.elementrange_id IN 
      (3091,3092)) AND (t5.elementrange_id IN 
      (8658,8659,8660,8661,8662,8663,8664)) AND (t6.elementgroup_id = 
      14659) AND (t1.period_id IN (20030699999060,20030799999030,2003079999 
      9060,20030799999120)) /* Resolved ElementGroup Filters */  ) /* 
      Fact Filters */ AND (t1.project_type_id = '1'  ) GROUP BY  
      t2.pg_featurevalue_13_id,  t2.pg_featurevalue_02_id,  
      t4.elementrange_id,  t2.pg_featurevalue_08_id,  
      t2.pg_featurevalue_01_id,  t5.elementrange_id,  
      t2.productgroup_id,  t6.elementgroup_id; 

[email protected]> 

어떤 괄호 문제가있을 수 없습니다 다음은 내 코드입니다. sqls 문이 너무 길기 때문에 명령 줄의 기본 모드에서 v $ sql이 모든 sql_txt를 포착 할 수 없기 때문에 set linesize를 사용하여 sql_txt 열을 변경하는 것에 대해 들어 봤습니다. 그러나 나는 그것을 어떻게 바꿀 것인지 정확히 모른다. 누군가 나를 도울 수 있는가? 고마워요!

+2

을 실행하다. 환경 콘솔 출력을 제거하거나 다른 콘솔로 이동하십시오. 또한 출력에 표시된대로 프로덕션 시스템에서 직접 이해할 수없는 쿼리를 실제로 실행하려고하지 않기를 바랍니다. – gmiley

+0

아니요, 이것은 프로덕션 데이터베이스가 아닌 자체 랩 환경에 있습니다. 모든 SQL 문을 실행하려고하지 않고 최적화 된 SQL 실행 계획을 계획 테이블에로드하려고합니다. – Lily

+0

질문을 쉽게 처리 할 수 ​​있도록 * 프로덕션 데이터베이스 *가 필요하지 않습니다. 지금 우리가 보는 모든 것은 뒤죽박죽이다. 질문을보다 간결하게 만드십시오. – Jerrybibo

답변

0

는 쿼리를 재구성 한 후, 당신의 숫자 시퀀스 중 하나에서 줄 바꿈과 공백이 있었다 발견, 다음과 같은 포맷 쿼리하십시오 : 당신은 당신이하려고하는 경우에만 SQL을 포함하도록 질문을 수정할 수

SELECT /* ORDERED INDEX(t1) USE_HASH(t1) */  
    'B' || t2.pg_featurevalue_13_id pg_featurevalue_13_id, 
    'B' || t2.pg_featurevalue_02_id pg_featurevalue_02_id, 
    'r' || t4.elementrange_id pg_featurevalue_15_id, 
    'B' || t2.pg_featurevalue_08_id pg_featurevalue_08_id, 
    'B' || t2.pg_featurevalue_01_id pg_featurevalue_01_id, 
    'r' || t5.elementrange_id price_eur_id, 
    'B' || t2.productgroup_id productgroup_id, 
    'G' || t6.elementgroup_id period_id,  
    SUM(t1.pd_sales_units*t1.pd_projection_factor*t1.pd_price_units_eur) salesvalueeur 
FROM lu_item_293 t2, 
    lu_pg_featurevalue_15 t3,  
    lu_elementrange_rel t4, 
    fact_pd_out_itm_293 t1,  
    lu_elementgroup_rel t6, 
    lu_elementrange_rel t5 
WHERE  
    ((t1.item_id = t2.item_id 
    AND t1.productgroup_id = t2.productgroup_id) 
    AND (t2.pg_featurevalue_15_id = t3.pg_featurevalue_15_id) 
    AND (t3.pg_featurevalue_15_num BETWEEN t4.lbound AND t4.ubound) 
    AND (t1.pd_price_units_eur BETWEEN t5.lbound AND t5.ubound) 
    AND (t1.period_id = t6.value_id) 
    ) 
    AND 
    ((t2.productgroup_id = 15520) 
    AND (t1.productgroup_id = 15520) 
    AND (t2.pg_featurevalue_01_id IN 
      (103,104,107,110,113,134,148,167,171,186,192,216,2259,236,241,2477,24958 
      ,27445,297,3891,71,76,89,92,95)) 
    AND (t2.pg_featurevalue_08_id IN 
      (716,717)) 
    AND (t2.pg_featurevalue_02_id IN (4165,4166)) 
    AND (t2.pg_featurevalue_13_id = 5424) 
    AND (t4.elementrange_id IN (3091,3092)) 
    AND (t5.elementrange_id IN (8658,8659,8660,8661,8662,8663,8664)) 
    AND (t6.elementgroup_id = 14659) 
    AND (t1.period_id IN (20030699999060,20030799999030,20030799999060,20030799999120))  
    ) 
    AND (t1.project_type_id = '1') 
    GROUP BY t2.pg_featurevalue_13_id,  
     t2.pg_featurevalue_02_id,  
     t4.elementrange_id,  
     t2.pg_featurevalue_08_id,  
     t2.pg_featurevalue_01_id,  
     t5.elementrange_id,  
     t2.productgroup_id,  
     t6.elementgroup_id; 
+0

고맙습니다. 제 문제가 해결되었습니다. 그것은 공간이었습니다. – Lily

관련 문제