source

Oracle sqlplus에서 sql 스크립트의 실행 시간 가져오기

manycodes 2023. 6. 25. 20:15
반응형

Oracle sqlplus에서 sql 스크립트의 실행 시간 가져오기

Oracle 테이블에 데이터를 로드하는 데 사용하는 스크립트가 있습니다(삽입문 목록 기준).전체 로딩 프로세스의 실행 시간을 어떻게 얻을 수 있습니까?와 해본 적이 있습니다.set timing on전체 프로세스가 아니라 각 삽입문에 대한 기간을 제공합니다.스크립트는 다음과 같습니다.

spo load.log
prompt '**** load data ****'
set termout off
@@inserts.sql
commit;
set termout on
prompt '**** done ****'
spo off
exit;

왜 모든 사람들이 그것을 그렇게 복잡하게 만드는지 잘 모르겠습니다.다음과 같이 간단:

SQL> set timing on
SQL> select 1 from dual;

         1
----------
         1

1 row selected.

Elapsed: 00:00:00.00
SQL> 

오래된 질문이지만 sqlplus에서 스크립트 실행 시간을 측정하는 쉬운 방법을 찾았습니다.당신은 이것을 처음에 추가하기만 하면 됩니다.

timing start timing_name

그리고 이것은 대본의 끝에 있습니다.

timing stop

이 명령에 대한 자세한 내용은 Oracle의 SQL*Plus® 사용자 가이드 및 참조: 타이밍 통계 수집에서 확인할 수 있습니다.

시작할 때 다음을 추가하면 현재 시간이 기억됩니다.

set serveroutput on
variable n number
exec :n := dbms_utility.get_time

마지막에 이 값을 추가하면 경과 시간이 계산됩니다.

exec :n := (dbms_utility.get_time - :n)/100
exec dbms_output.put_line(:n)

유닉스에 있는 경우 다음과 같이 수행할 수도 있습니다.

time sqlplus @inserts.sql

다음과 같이 인쇄됩니다.

real    0m9.34s
user    0m2.03s
sys     0m1.02s

첫 번째 줄은 총 실행 시간을 나타냅니다.

설명하는 것은 기본적으로 스크립트의 실행을 감사하는 방법입니다.경과된 시간인지 캡처 중인 특정 시작 및 종료 시간인지 여부에 관계없이 해당 시간을 올바르게 기록하여 문제가 잘 해결되었는지 여부를 확인합니다(또는 그렇지 않은 경우에는 그렇지 않은 이유는 무엇입니까?

다음은 구현 중인 모든 데이터베이스 활동을 캡처하고 기록하는 데 사용하는 것과 유사한 템플릿입니다.우리는 그것을 사용합니다.sqlplus.exe모든 DDL 업데이트(예:CREATE TABLE) 및 설정 테이블에 삽입하는 경우.

--Beginning of all SQL scripts:
set serveroutput on feedback on echo on verify on sqlblanklines on timing on define on
col time new_v v_time
col name new_v v_name
col user new_v v_user

select name, USER, to_char(sysdate, 'YYYYMMDD-HH24MISS') time  from v$database;

--Creates a new log file every time the script is run, and it's immediately
--obvious when it was run, which environment it ran in, and who ran it.
spool &v_time._&v_name._&v_user..log 

--Run the select again so it appears in the log file itself
select name, USER, to_char(sysdate, 'YYYYMMDD-HH24MISS') time  from v$database;

작업 본문을 여기에 배치합니다.

--End of all SQL scripts:
select name, USER, to_char(sysdate, 'YYYYMMDD-HH24MISS') time  from v$database;
spool off

언급URL : https://stackoverflow.com/questions/8401270/get-execution-time-of-sql-script-in-oracle-sqlplus

반응형