2014-12-04 3 views
1

SQL 계획을 가져 오는 데 문제가 있습니다.SQL 실행 계획을 가져 오는 중입니다. PL/SQL Developer = 이상한 행동. SQL * Plus = 선택된 행이 없습니다

마지막 형식에서 PL * SQL을 통해 가져와야합니다.

sqlplus -s /nolog > /dev/null 2>&1 <<EOF 
CONNECT BLAH/[email protected] 

*CLEAR AND SET COMMANDS HERE* 

VARIABLE RC REFCURSOR; 
SPOOL ${BERICHT}_${configArray[0]}.DATA 
SET TIMING ON; 
EXEC :RC := $aktuellesBericht; 
SET TIMING OFF; 
PRINT RC; 
DISCONNECT 
QUIT 
EOF 

그리고 두 번째 부분 : (SYS로 로그인하지만, SYSDBA없이를

그래서 나는 bash는 스크립트, SQL 계획 이름과 매개 변수를 통해 반복하는 루프,이 같은 코드를 권한) ... 내가 그들을 해달라고 나는 내가 그들을있을 것이라는 점을 생각 해달라고

sqlplus -s /nolog > /dev/null 2>&1 <<EOF 
CONNECT SYSBLAH/[email protected] 
SPOOL ${BERICHT}_${configArray[0]}.SQLPLAN.TXT 
CLEAR BREAK 
CLEAR COMP 
CLEAR COL 
select 
     sqlplan.operation, 
     sqlplan.options, 
     sqlplan.object_name, 
     sqlplan.cost, 
     sqlplan.depth 
    from v\$sqlarea sqlarea, 
     v\$session sesion, 
     v\$sql_plan sqlplan 
where sesion.sql_hash_value = sqlarea.hash_value 
    and sesion.sql_address = sqlarea.address 
    and sqlarea.plan_hash_value = sqlplan.plan_hash_value 
    and sesion.username = 'BLAH' order by sqlplan.depth; 
QUIT 

EOF

나는이에서 얻을 수있는 모든 하나를 포함 *.SQLPLAN.TXT 파일 전송 ence : no rows selected

PL/SQL Developer에서 동일한 작업을 수행 할 때 동일한 결과가 발생하지만 두 SQL 창에서 자동 새로 고침 타이머 버튼을 클릭하면 두 쿼리가 모두 실행됩니다. 그리고 두 번째 쿼리 (SQL 계획을 가져 오는 쿼리)를 통해 결과가 나옵니다. 그리고 때로는 그렇지 않습니다.

명령을 병렬로 실행해야하는 것 같습니다. 또는 뭔가 빠졌습니까?

+0

아마 관련이 없지만 왜 dbms_xplan 대신 복잡한 SQL 문을 사용합니까? –

+0

@a_horse_with_no_name 싶습니다. 그러나 ORACLE 패키지에서 사용할 방법이 없습니다. – dziki

+0

'dbms_xplan.display_cursor'는 실행 계획이있는 CLOB를 리턴합니다. 반환 값은 다음과 같은 변수에 저장 될 수 있습니다 :'select dbms_xplan.display_cursor (...) in l_clob_variable from dual' –

답변

2

내 질문에 sql 쿼리가 필요하지 않았습니다.

V$SQL_PLAN, V$SESSION

내 질문에 대한 답변 V$SQL_PLAN_STATISTICS_ALLhere을 발견 :

내가 필요한 모든

은에 나에게 SELECT premissions을 부여하여 관리 팀에 작성하는 것입니다.

앞으로는이 문제에 대해 더 깊이 이해해야 할 것이지만, FWIK는 dbms_xplan 패키지를 자세히 살펴보면서 나에게 아이디어를주었습니다.

SYSACC 계정에서 쿼리를 가져 오는 방법은 잘못된 생각이었습니다. 이 ACC는 모든 쿼리 기록에 액세스 할 수 있으며 필요할 경우 SQL 계획을 껍질하기가 어렵고 힘들 수 있습니다.