2017-12-05 4 views
0

SQL 개발자 (oracle)에 4 개의 데이터베이스 연결이 있습니다. 저녁에는 같은 서버에있는 4 개의 모든 연결에서 일부 스크립트를 정기적으로 실행해야합니다. 스크립트를 한 번만 실행하고 일부 DB에 연결된 모든 연결에 반영되는 바로 가기가 있습니까?여러 데이터베이스에서 일괄 Oracle 쿼리 실행

(참고 : 모든 4 연결이 정확히 같은 정보를 개최한다.)

사람이이 작업을 수행하는 방법을 제안 할 수 있습니다?

답변

0

내가하는 일은 다음과 같습니다. GUI가 아닌 명령 프롬프트 기능을 사용하십시오. 유일한 전제 조건은 SQL * Plus를 컴퓨터에 설치하는 것입니다.

예를 들어, 실행하려는 SQL 스크립트를 작성하여 C : \ Temp 디렉토리에 저장하십시오. "my_script.sql"이라고 부르 자. SQL과 PL/SQL을 모두 포함 할 수 있습니다 (이 경우 슬래시로 종료하는 것을 잊지 마십시오!).

connect &2 
spool &1 
set echo on 
set define off 

-- Your SQL statements go here: 

select to_char(sysdate, 'dd.mm.yyyy hh24:mi') vrijeme from dual; 

begin 
    pkg_payments.p_gimme_my_money; 
    commit; 
end; 
/

-- End of your SQL statements 

spool off 
exit 

는 그런 다음 DOS 배치 스크립트를 작성의이 "run_my_script.bat을"이름을하자 거기에 같은 코드를 넣어 : 당신으로

@echo on 
set SCRIPT=C:\Temp\my_script.sql 
set SCRIPT_LOG=C:\Temp\my_script 

if not exist %SCRIPT% goto END 

start sqlplus.exe /nolog @%SCRIPT% %SCRIPT_LOG%.site_1.log "username_1"/"password_1"@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host_1_name)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=service_name_1))) 
start sqlplus.exe /nolog @%SCRIPT% %SCRIPT_LOG%.site_2.log "username_2"/"password_2"@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host_2_name)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=service_name_2))) 
start sqlplus.exe /nolog @%SCRIPT% %SCRIPT_LOG%.site_3.log "username_3"/"password_3"@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host_3_name)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=service_name_3))) 
start sqlplus.exe /nolog @%SCRIPT% %SCRIPT_LOG%.site_4.log "username_4"/"password_4"@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host_4_name)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=service_name_4))) 

:END 

여기

는 것처럼 보일 것입니다 방법 볼 수 있습니다, 그것은

  • 세트 지역 변수와 SCRIPT_LO (A .SQL를 가리키는 스크립트는 당신이 만든 파일) G 스크립트의 실행에 대한 로그 정보 포함)
  • 은 SQL * Plus를 호출합니다 (병렬로; 당신이 그 (것)들을 순차적으로 을 실행하려면, 단지 각 데이터베이스 에 연결하고 스크립트

는 .BAT 파일을 두 번 클릭하는 것입니다 테스트하는 가장 간단한 방법을 실행) 시작 키워드를 제거; SQL 스크립트가 끝나면 4 개의 "검은 색"명령 프롬프트 창을 열고 종료합니다. 로그 파일을 확인하십시오!

결과에 만족하면 Task Scheduler에서 .BAT 파일의 실행을 예약하여 정기적으로 &이 자동으로 실행되도록하십시오.

그게 전부 일 겁니다.