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 계획을 가져 오는 쿼리)를 통해 결과가 나옵니다. 그리고 때로는 그렇지 않습니다.
명령을 병렬로 실행해야하는 것 같습니다. 또는 뭔가 빠졌습니까?
아마 관련이 없지만 왜 dbms_xplan 대신 복잡한 SQL 문을 사용합니까? –
@a_horse_with_no_name 싶습니다. 그러나 ORACLE 패키지에서 사용할 방법이 없습니다. – dziki
'dbms_xplan.display_cursor'는 실행 계획이있는 CLOB를 리턴합니다. 반환 값은 다음과 같은 변수에 저장 될 수 있습니다 :'select dbms_xplan.display_cursor (...) in l_clob_variable from dual' –