2014-06-16 2 views
0

내가 OBIEEOBIEE와 바인딩 변수

내 필요가 바인드 변수의 모든 문자 값을 변경하는 것입니다하지만 난 바인드 변수를 사용하는 방법을 찾을 수 없습니다에 의해 일부 쿼리를 다시 작성해야 할 필요성에있어

누군가 나를 도울 수 있습니까?

감사

+0

OBIEE가 Oracle DB에 생성하는 쿼리에 바인드 변수를 사용하도록 설정하려고합니까? –

+0

예, 이것이 올바른 방법입니다. 지금 OBIEE 기능을 잘 모르겠다. dba oracle이고 OBIEE의 일부 함수를 변경하여 리터럴이 아닌 바인드 변수를 사용해야한다. – LordMax

답변

1

첫째, 문 :

당신이 OBIEE와 ADF (오라클 애플리케이션 개발 프레임 워크)를 사용하는 경우는, 우리가 어떻게보기를 지정할 수있는 ADF 층의 설정이 VO에서 실행 된 쿼리에 사용 된 조건 및 WHERE 절을 처리해야합니다.

기본적으로 useBindVarsForViewCriteriaLiterals 설정은 adf-config.xml에서 "False"으로 설정됩니다. 이 설정이 False이면 ADF는 뷰 조건에 대한 리터럴이있는 SQL을 생성하며 이로 인해 데이터베이스의 공유 풀 영역에서 경합이 발생할 수 있습니다. adf-config.xml의 설정을 "True"으로 변경하면 ADF는 모든보기 기준에 대한 바인드 변수로 SQL을 생성합니다.

BI는 쿼리의 바인딩 변수를 지원하지 않으므로 BI (OBIEE)의 경우이 설정을 변경하면 안됩니다. OBIEE 쿼리/보고서에서 Bind 변수를 사용하는 쿼리 (또는 관련 로그)가 있으면 위의 설정 때문일 수 있습니다. BI를 들어

,이 설정은 기본 값으로 즉 "False"

빠른 대답을 두어야 : OBIEE 리터럴 대신 바인드 변수를 사용할 수없는 것으로 보인다. 이제

, 바인드 변수에 대한 제한 뒤에 추론 : 데이터웨어 하우스에서

대신 실행의 하나를 실행하는 백초의 평균을, 그들은 뭔가를 할 1,000 문 초당 말 질문. 이러한 시스템에서 쿼리는 적지 ​​만 커다란 질문입니다. 여기서 구문 분석 시간의 오버 헤드는 전체 실행 시간 중 아주 작은 부분입니다. 에 수천 명의 사용자가 있더라도 쿼리를 구문 분석하기 위해 서로를 기다리지 않고 오히려 쿼리가 응답을 받기를 기다리고 있습니다.

이러한 시스템에서 바인드 변수를 사용하는 것은 비생산적 일 수 있습니다. 여기에서 의 런타임은 초, 분, 시간 또는 그 이상으로 길다. 궁극적으로는 쿼리 최적화 계획을 실행 시간을 줄이기 위해 가능한 한 많이 얻고 OLTP는 가능한 한 많이 수행합니다 ( 1/10 초). 옵티마이 저의 목표가 다르므로 규칙이 변경됩니다.

때때로 바인드 변수를 사용하면 최적화 프로그램이 최적의 일반 계획을 세워야하는 경우가 있습니다. 실제로는 특정 쿼리에 대한 최악의 계획 일 수 있습니다. 쿼리가 실행하는 데 상당한 시간이 걸리는 시스템에서 바인드 변수는 옵티마이 저가 우수한 계획을 제시하는 데 사용할 수있는 정보를 제거합니다. 실제로 일부 데이터웨어 하우스 관련 기능은 바인드 변수를 사용하여 무효화됩니다. 예를 들어, Oracle은 쿼리 시간을 크게 단축 할 수있는 데이터웨어 하우스의 별 변환 기능을 지원합니다.그러나 별 변환을 방해하는 한 가지 제한 사항은 바인드 변수를 포함하는 쿼리를 갖는 것입니다.