Oracle SQL Developer가 DB 연결을 닫지 않도록 하려면 어떻게 해야 합니까?
Oracle SQL Developer가 DB 연결을 닫지 않도록 하거나 시간 초과를 늘릴 수 있는 방법이 있습니까?장시간 쿼리 실행 중에 SQL Dev가 연결을 닫기만 하면 서버에서 쿼리가 실행되지만 결과가 없는 경우가 있습니다.서버에 RDP를 삽입하여 SQL Dev를 로컬로 실행해도 이 문제는 발생하지 않습니다.
정답.
SQL Developer와 데이터베이스 사이에 방화벽이 있어 문제가 발생할 수 있습니다.SQL Developer Keepalive 플러그인을 사용하여 SQL Developer에서 이 문제를 해결할 수 있습니다.
데이터베이스 서버에서 Thomas 및 David Mann의 답변을 사용하여 이 문제를 해결할 수도 있습니다.
Oracle Net은 SQLNET(Dead Connection Detection)으로 구성할 수 있습니다.EXPERE_TIME)을 참조해 주세요.EXPREAD_를 설정합니다.데이터베이스 서버의 TIME 값을 방화벽 연결 타임아웃보다 작은 값으로 설정하면 DCD는 데이터베이스와의 연결을 유지할 수 있습니다.주 151972.1 "Dead Connection Detection(DCD) 설명" 참조
원답
저는 이에 대한 답을 모르지만, 같은 문제를 겪고 있습니다.
SQL Developer와 데이터베이스 사이의 방화벽은 자동으로 "비액티브" 세션을 닫습니다.장시간 실행되는 쿼리는 방화벽에 따라 비활성 세션이므로 세션을 닫습니다.SQL Developer가 장시간 실행 쿼리가 있는 연결을 통해 패킷을 보내 방화벽이 연결을 닫지 않도록 하는 방법을 아직 찾지 못했습니다.그리고 이게 가능한지 전혀 모르겠어요.
SQL Developer의 문제가 아니라 방화벽의 문제라고 생각합니다.
-- 갱신
SQL Developer에는 연결을 활성 상태로 유지할 수 있는 확장 기능이 있습니다.http://sites.google.com/site/keepaliveext/
아직 완전히 끝난 것은 아니지만(예를 들어 지정한 타임아웃에 관계없이 동일한 타임아웃 상태가 통지됩니다).아직 최신 SQL Developer 프리릴리스와 비교하여 테스트한 적은 없지만 SQL Developer 2.2.x에서 동작했습니다.
-- 갱신
SQL Developer 4+의 경우는, http://scristalli.github.io/SQL-Developer-4-keepalive/ 를 사용할 수 있습니다.
Keep Connection Active 확장기능을 사용할 수 있습니다.(위의 확장기능에는 이 확장기능에서 해결된 많은 문제가 포함되어 있습니다.)
http://sites.google.com/site/keepconnext/
방화벽 문제처럼 들리네요
EXPREAD_를 설정하는 것은 행운일 수 있습니다.서버의 SQLNET의 TIME 파라미터.ORA 파일매뉴얼에서 다음 항목을 참조하십시오.
SQLNET 매개 변수를 사용합니다.EXPERE_TIME: 클라이언트/서버 접속이 액티브한 것을 확인하기 위한 프로브를 송신하는 시간 간격(분단위)을 지정합니다.0보다 큰 값을 설정하면 비정상적인 클라이언트 종료로 인해 연결이 무기한 열린 상태로 유지되지 않습니다.프로브가 종료된 연결 또는 사용되지 않는 연결을 발견하면 오류가 반환되어 서버 프로세스가 종료됩니다.이 파라미터는 주로 한 번에 여러 연결을 처리하는 데이터베이스 서버를 대상으로 합니다.
SQL 개발자의 문제는 아닌 것 같습니다만, 실제로 본 적이 없습니다.네트워크와 같은 다른 것이 아닌 것이 확실합니까?데스크톱에서 SQL Plus로 연결하면 어떻게 됩니까?
이에 대한 임시 해결책으로 'Data Grid' 옆에 'DBMS Output' 탭이 있으며, DBMS 출력을 켜고 폴링 빈도를 적절한 시간으로 설정할 수 있습니다.
델의 DBA는 이에 대한 해결책을 찾은 것 같습니다.
2.2. OC4J 인스턴스와 데이터베이스 사이에 방화벽이 존재하는 경우 방화벽은 데이터베이스 서버에 대한 비활성 jdbc 연결을 드롭할 수 있습니다.단, OC4J 인스턴스는 방화벽이 데이터베이스에 대한 접속이 타임아웃되었음을 검출할 수 없습니다.Oracle Net은 SQLNET(Dead Connection Detection)으로 구성할 수 있습니다.EXPERE_TIME)을 참조해 주세요.EXPREAD_를 설정합니다.데이터베이스 서버의 TIME 값을 방화벽 연결 타임아웃보다 작은 값으로 설정하면 DCD는 데이터베이스와의 연결을 유지할 수 있습니다.주 151972.1 "Dead Connection Detection(DCD) 설명"을 참조하십시오.이 설정은 미드레어가 아닌 데이터베이스 서버에 설정되어 있기 때문에 모든 데이터베이스 연결(OCI 및 씬 JDBC)에 적용됩니다.대체 솔루션: 방화벽의 아이돌타임아웃 파라미터를 비활성화하거나 늘립니다.또는 데이터베이스 및 미드티어 서버의 TCP 킵얼라이브 시간 설정을 방화벽 접속 타임아웃보다 작은 값으로 설정합니다.TCP 킵얼라이브 시간을 설정하면 접속을 유지하기 위해 지정된 분 후에 머신은 늘패킷을 반복해서 송신합니다.패킷은 방화벽아이돌 타임아웃 내에서 매번 송신되기 때문에 접속은 닫히지 않습니다.
#1. 3 DBA에게 사용자 프로필이 무엇인지 확인합니다.다음으로 프로파일의 비액티비티 타임아웃을 클릭합니다.
#2. SQL Developer의 연결 설정을 Connection Type=Basic으로 변경하고 SID(서비스명이 아님)를 사용합니다.
연결 유형=을 사용하는 경우SID 대신 TNSNAMES 또는 서비스 이름 - 연결이 끊어집니다.
언급URL : https://stackoverflow.com/questions/1309254/how-can-i-keep-oracle-sql-developer-from-closing-the-db-connection
'programing' 카테고리의 다른 글
"REM INSERTING in TAB" 명령어는 정확히 어떤 기능을 합니까?Oracle의 LE_NAME"? (0) | 2023.03.19 |
---|---|
TypeScript: 객체.키 반환 문자열[ ] (0) | 2023.03.19 |
워드프레스 개수 위젯 (0) | 2023.03.19 |
$wpdb->update 또는 $wpdb->insert 결과 슬래시가 따옴표 앞에 추가됩니다. (0) | 2023.03.19 |
Angular에서 "config"에 "$window" 객체를 "injection"하는 방법JS (0) | 2023.03.19 |