>  기사  >  데이터 베이스  >  Oracle 데이터베이스에서 시간 초과를 설정하는 방법

Oracle 데이터베이스에서 시간 초과를 설정하는 방법

PHPz
PHPz원래의
2023-04-04 09:11:444539검색

Oracle 데이터베이스는 매우 널리 사용되는 관계형 데이터베이스이지만 사용 중에 데이터베이스 연결 시간 초과 문제가 자주 발생합니다. 이 문제는 데이터 전송 중단 및 성능 저하와 같은 일련의 문제로 이어질 수 있습니다. 그렇다면 Oracle 데이터베이스에서 시간 초과를 설정하는 방법은 무엇입니까? 이 기사에서는 구체적인 방법을 소개합니다.

1. 타임아웃 설정 원리

Oracle에서는 SQLnet 읽기 및 쓰기 타임아웃 매개변수를 통해 타임아웃 기간을 구현합니다. SQLnet은 클라이언트와 서버 간의 통신을 지원하는 Oracle Database의 네트워크 구성 요소입니다. 타임아웃을 실행할 때 클라이언트는 서버가 응답하지 않을 경우 지정된 시간 동안 대기하며 지정된 타임아웃을 초과하면 연결이 끊어집니다.

일반적으로 Oracle 시간 초과 설정에는 두 가지 유형이 있습니다.

1. 세션 수준 시간 초과

세션 수준 시간 초과는 단일 세션에 유효하며 ALTER SESSION 명령을 통해 설정됩니다.

2.SQLNET 레벨 타임아웃

SQLNET 레벨 타임아웃은 전체 SQLNET 연결의 모든 세션에 유효하며 SQLNET.ORA 파일을 수정하여 설정합니다. SQLNET.ORA는 SQLNET 수준 매개변수를 정의할 수 있는 Oracle의 네트워크 구성 파일입니다.

실제 상황에 따라 적절한 시간 제한 설정 방법을 선택할 수 있습니다.

2. 세션 수준 시간 초과 설정

Oracle에서는 ALTER SESSION 명령을 사용하여 세션 수준 시간 초과를 설정할 수 있습니다. 구문은 다음과 같습니다.

ALTER SESSION SET SQL_TRACE = TRUE | FALSE;

이 중 SQL_TRACE = TRUE는 추적 모드를 활성화한다는 의미입니다. 이 모드에서는 Oracle 데이터베이스가 모든 SQL 문의 실행을 기록합니다.

ALTER SESSION SET SQL_TRACE = FALSE;

SQL_TRACE = FALSE는 추적 모드를 비활성화한다는 의미입니다.

다음과 같이 SQL_TRACE = TRUE인 경우 TIMED_STATISTICS 매개변수를 true로 설정하여 추적 모드에서 통계 정보 출력을 활성화할 수 있습니다.

ALTER SESSION SET TIMED_STATISTICS = TRUE;

세션 수준 시간 초과의 경우 SQLNET을 설정할 수 있습니다. 이는 .ALLOWED_LOGON_VERSION 매개변수를 10 이상으로 설정하면 달성됩니다.

SQLNET.ALLOWED_LOGON_VERSION은 인증할 수 있는 Oracle 데이터베이스 버전을 정의하는 SQLNET.ORA 매개변수입니다. 예를 들어 인증을 위해 Oracle 10g를 허용하는 경우 다음 매개변수를 설정할 수 있습니다.

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 10

이렇게 하면 Oracle 10g 데이터베이스에 연결된 클라이언트가 연결할 수 있습니다.

3. SQLNET 레벨 타임아웃 설정

SQLNET 레벨 타임아웃은 SQLNET.ORA 파일의 매개변수 설정에 따라 구현됩니다. SQLNET.ORA 파일은 일반적으로 Oracle 클라이언트 또는 서버의 특정 디렉터리에 있습니다.

SQLNET.ORA 파일에서는 SQLNET.INBOUND_CONNECT_TIMEOUT 및 SQLNET.OUTBOUND_CONNECT_TIMEOUT이라는 두 매개변수를 설정하여 SQLNET 수준 시간 초과를 제어할 수 있습니다.

SQLNET.INBOUND_CONNECT_TIMEOUT은 서버 측 매개변수로, 서버가 클라이언트 세션을 수락하는 시간을 제어하는 ​​데 사용됩니다.

SQLNET.OUTBOUND_CONNECT_TIMEOUT은 클라이언트의 매개변수로, 클라이언트가 서버에 연결하는 시간을 제어하는 ​​데 사용됩니다.

이 두 매개변수를 설정하면 클라이언트와 서버 간의 긴 연결을 방지하여 연결에 너무 많은 시간과 리소스를 낭비하는 것을 방지할 수 있습니다.

SQLNET.ORA 파일에 다음 매개변수를 추가하여 SQLNET.INBOUND_CONNECT_TIMEOUT을 설정하세요.

INBOUND_CONNECT_TIMEOUT_LISTENER = 120

서버가 클라이언트 세션을 수락하는 시간 제한을 120초로 설정하세요.

SQLNET.ORA 파일에 다음 매개변수를 추가하여 SQLNET.OUTBOUND_CONNECT_TIMEOUT을 설정하세요.

SQLNET.OUTBOUND_CONNECT_TIMEOUT=10

클라이언트가 Oracle 서버에 연결하는 데 필요한 시간 제한을 10초로 설정하세요.

SQLNET.ORA 파일을 수정하여 매개변수를 수정할 때 매개변수를 적용하려면 Oracle 데이터베이스 또는 Oracle 리스너를 다시 시작해야 합니다.

4. 타임아웃 설정이 유효한지 확인하는 방법

오라클 타임아웃 설정을 완료한 후, 유효한지 확인하는 방법은 무엇인가요? 이는 Oracle의 v$session 동적 뷰나 SQL 문 추적을 통해 확인할 수 있습니다.

  1. v$session view로 확인됨

다음 SQL 문을 통해 사용자의 현재 세션을 볼 수 있습니다.

SELECT * FROM v$session WHERE sid = '&sid';

여기서 &sid는 SID입니다. 현재 사용자의 정보는 다음 SQL 문 쿼리를 통해 얻을 수 있습니다.

SELECT sid, serial# FROM v$session WHERE username = '&username';

지정된 SESSION이 발견되면 SESSION의 CONNECT_TIME 및 IDLE_TIME 매개변수 적용 여부를 확인하기 위해 쿼리할 수 있습니다.

  1. SQL 문 추적

Oracle 데이터베이스의 SQL 문을 추적해야 하는 경우 SESSION의 TRACEFILE_IDENTIFIER 매개변수를 설정하고 Oracle Trace 도구를 사용하여 SQL 문을 추적할 수 있습니다. 추적 작업을 수행하려면 SYSDBA 또는 SYSOPER 권한이 필요하다는 점에 유의하세요.

위의 두 가지 방법을 통해 Oracle 타임아웃 설정이 유효한지 확인할 수 있습니다. 설정이 유효하지 않은 경우 SQLNET.ORA 파일이 완전히 구성되고 올바른지 확인하여 문제를 해결할 수 있습니다.

요약

Oracle 데이터베이스에서는 장기간 연결이 시스템 성능 및 기타 요소에 영향을 미치므로 연결을 제어해야 합니다. ALTER SESSION 명령과 이 문서에 소개된 SQLNET.ORA 파일의 설정을 통해 Oracle 데이터베이스에 대한 시간 초과를 설정할 수 있습니다. 물론 실제 사용에서는 다양한 환경과 실제 요구에 따라 적절한 시간 초과 설정 방법을 선택해야 합니다.

참고: 이 글은 다수의 우수한 자료를 언급하고 있으며, 침해 내용이 있는 경우 당사에 연락하여 삭제해 주시기 바랍니다.

위 내용은 Oracle 데이터베이스에서 시간 초과를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.