Set ANSI_NULLS ON
Go
Create Proc spXXXX as
v$ses_optimizer_env
LAG MODE (백그라운드 실행)
http://www.dbguide.net/db.db?cmd=view&boardUid=13767&boardConfigUid=9&boardIdx=66&boardStep=1
################################################## 제일 먼저 확인할 사항 #######################################
덕분에 NLS_COMP = LINGUISTIC 이 느리게 실행 된 이유였습니다. 따라서 java는 문제의 원인이 아닙니다. Oracle 구성 오류가 문제의 원인이었습니다.
솔루션은 인스턴스 레벨에서 NLS_COMP = BINARY 에 올바른 값을 설정해야합니다 .
그러나 제 경우에는이 값으로 잘 작동하는 여러 응용 프로그램이 있습니다. 따라서 응용 프로그램의 순서 및 비교 문제를 피하기 위해 인스턴스 NLS 설정을 무시할 수 없습니다.
임시 솔루션은 저장 프로 시저가 시작될 때 실행됩니다.
execute immediate 'alter session set NLS_COMP=''BINARY''';
완료되면 이전 값으로 돌아갑니다.
execute immediate 'alter session set NLS_COMP=''LINGUISTIC''';
이제 저장 프로 시저가 쿼리 창에서 직접 실행되는 것처럼 빠르게 실행됩니다 (ORACLE SQL DEVELOPER).
##################################################### 아래는 참고사항 #########################################
이삭 메 지아 :
다른 경우 (ides 또는 java 프로그램)에서 nls 매개 변수를 가져 와야합니다.
select * from NLS_SESSION_PARAMETERS
그런 다음 저장 프로 시저 내에서 변수를 가장 빠른 경우와 동일하게 설정하십시오.
execute immediate 'alter session set NLS_SORT=''SPANISH''';
SP에 모든 nls 매개 변수가 있으면 빨리 달린다.
방금 최근 Alter 세션 에서 비슷한 경우가 Hibernate를 통해 쿼리 속도를 늦추는 것을 발견했습니다 . 그러나 그들의 경우 그들은 매개 변수를 변경 한 다음 느려졌습니다.
NLS_COMP y NLS_SORT 매개 변수는 Oracle이 문자열에 대한 실행 계획을 사용하는 방법에 영향을 줄 수 있음을 조사하고 발견했습니다 (비교 또는 주문시)
NLS_COMP가 LINGUISTIC으로 정의되면 NLS_SORT에 정의 된 언어를 사용합니다.
예를 들어 NLS_COMP = LINGUISTIC 및 NLS_SORT = BINARI_AI 인 경우 쿼리는
select * from table where string_column like 'HI%'
내부적으로
select * from table where
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('324242432')
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('675757576')
따라서 NLSSORT (column, 'BINARI_AI')에 대한 인덱스가 없으면 속도가 매우 느립니다.
NLS_SORT = BINARY_AI는 주문 및 비교시 악센트를 구분하지 않고 대소 문자를 구분하지 않습니다.
################################################################################################################
select s.sid,s.serial#,s.username, s.machine,replace(q.SQL_FULLTEXT,chr(0)) sql_text, s.program, s.logon_time, s.status, s.OSUSER
from v$session s, v$sql q
where
s.status='ACTIVE'
and s.username is not null
and s.sql_hash_value = q.hash_value
order by s.LOGON_TIME, s.username;
|