DB Connection 유지를 위한 방안

Java에서 DB에 대한 연결을 미리 맺어두고 사용하는 Connection Pool을 활용하고 있습니다. 그런데 문제는 Connection이 일정 시간 아무런 사용이 없을 경우 서버 단에서 해당 Connection의 연결을 끊는 경우인데요. 이는 서버 단의 DB 설정값을 변경해서 해결할 수 있지만, 여러가지 정책 상 DB 설정값을 변경할 수 없을 때가 있습니다. 예를 들어, DB 관리자가 전에 사귀다가 이별한 여자친구라던지……..

이러한 경우!! 에 Connection Pool을 운영하는 어플리케이션 단에서 해당 Connection에 대해 일정 시간 간격으로 어떤 연산을 주기적으로 호출함으로써 연결을 계속 유지하도록 할 수 있습니다. 이러한 연결 유지는 스레드를 통해 구동되는 것이 적당한데요. 아래의 코드는 이러한 목적으로 이번에 도입한 스레드 코드입니다.

코드는 매우 단순하지만 향후 급할때 기억을 쉽게 더듬을 수 있도록 저장해 둡니다.

package control;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import model.DBConnection;

public class DBConnectionMaintainerThread extends Thread {
    private volatile boolean bGoOn = true;
	
    public void run() {
        DBConnection conn = null;
        Connection rConn = null;
        ResultSet RS = null;
        Statement readStmt = null;
		
        while(bGoOn) {
            try {
                Thread.sleep(10000);
	        	          
                conn = MainEntry.dbMan.getResource("cim");           
                rConn = conn.getRawConnection();
                readStmt =  rConn.createStatement();
    	        RS = readStmt.executeQuery("select 1");   
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if(RS != null) {
                    try {
                        RS.close();
                        if(readStmt != null) readStmt.close();
                        if(conn != null) MainEntry.dbMan.putResource("cim", conn);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}

위의 코드는 10초 간격으로 Connection Pool에서 Connection을 꺼내와 가장 간단한 쿼리인 SELECT 1;을 주기적으로 호출해 주고 있습니다. 참고로 Connection Pool의 코드와 섞여 있으니 필요한 코드만 쏙쏙 골라 보시기 바랍니다.

CentOS 7에서 Postgresql 9.6.2, Postgis 2.3.2-1 설치(인터넷 환경)

인터넷이 되는 환경에서 PostgreSQL(9.6.2)와 PostGIS(2.3.2)를 설치하는 절차입니다.

PostgreSQL 9.6.2 설치

1. PostgreSQL과 PostGIS 설치를 위한 yum 저장소 업데이트

rpm -Uvh https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

2. PostgreSQL 설치

yum install postgresql96-server postgresql96

3. 데이터베이스 저장소 생성

./postgresql96-setup initdb

4. PostgreSQL 서비스 실행

systemctl enable postgresql-9.6
systemctl enable postgresql-9.6.service
systemctl start postgresql-9.6.service

5. 방화벽에서 port 5432번 개방

firewall-cmd --zone=public --add-port=5432/tcp

6. 외부에서 DBMS 접근 허용 설정

vi postgresql.conf

아래처럼 편집

listen_addresses = "*"

7. postgres 사용자 암호 설정

su - postgres
psql
\password postgres
\q

8. 이전 사용자로 복귀
su - root

9. 외부 접속을 위한 보안설정 변경

vi pg_hba.conf

아래처럼 편집

local all all peer 문자열을 local all all md5 로 변경
host all all 127.0.0.1/32 ident 문자열을 host all all 0.0.0.0/0 md5 로 변경
host all all ::1/128 ident 문자열을 host all all ::1/128 md5 로 변경

10. PostgreSQL 서비스 재기동

systemctl stop postgresql-9.6.service
systemctl start postgresql-9.6.service

11. [2017-07-08 추가] UUID 확장 기능 설치를 위해 다음 명령이 필요함

systemctl stop postgresql-9.6.service
yum install postgresql96-contrib.x86_64
systemctl start postgresql-9.6.service

PostGIS 설치

yum install epel-release
yum install postgis2_96.x86_64
systemctl restart postgresql-9.6.service

DuraMap-Xr 설치자(Installer)

GIS 엔진인 DuraMap-Xr을 쉽고 간단하게 설치할 수 있는 설치 프로그램입니다. 아래의 파일을 다운로드 받아 실행해 클릭만으로 간단히 DuraMap-Xr을 설치할 수 있습니다.



좀더 자세히 설명 드리면, 먼저 설치 프로그램을 실행하면 다음과 같은 프로그램이 표시됩니다.

처음 설치할 경우 Install 버튼을 클릭해 설치하면 되고, 버전업 등과 같은 업데이트는 Update 버튼을 클릭하면 됩니다. 그리고 깨끗히 제거 하기 위해서 Remove 버튼을 클릭하면 됩니다.

이 설치자는 Windows 10 64Bits에서 정상적인 작동을 확인하였습니다. 설치나 삭제 등에서 문제가 발생할 경우에 대한 기술지원은 댓글을 이용해 주시기 바랍니다.

전력용어

출처 : 전력신문(http://www.epnews.co.kr)

◆ 송변전 분야

△경간(徑間)→지지물간 거리 △지상고(地上高)→전선 높이 △재폐로→(자동)재투입 △쇄정→잠금 △응동→동작 △이면 배선→내부 배선 △뇌써지→낙뢰충격전압 △(발전기)감발→(발전기)출력감소 △(발전기)증발→(발전기)출력증가 △조류(潮流)→전력 흐름 △HVDC 케이블→고압직류송전케이블 △회선긍장(回線亘長→회선길이 △반도(反跳)→되튐 △철탑 도괴→철탑 넘어짐 △밧데리(Battery),축전지→축전지 △블랙아웃(Blackout)→대정전 △제로에너지하우스(zero-energy house)→에너지 자급주택 △가선(架線)→전선 설치 △연선(延線)→전선 펴기 △긴선(緊線)→전선 당기기 △Relay, 보호계전기→보호계전기 △써모비전(Thermo Vision)→열화상 측정기 △방압변(Pressure Relief Device)→과압 방출장치 △MCCB,Auto Breaker→배선용 차단기 △병가→병행 가선 △조상설비→무효전력 보상장치 △CT, 변류기→전류변성기 △MOF→전압전류변성기 △PT→전압변성기 △전선 실장→전선 실제길이 △수트리→수분침투 균열 △어스, Ground→접지 △뇌격→낙뢰 △로드 쉐딩(Load Shedding)→일부 부하차단

◆ 배전 분야

△원방제어(遠方制御)→원격제어(遠隔制御) △인입선(引入線)→고객공급선(顧客供給線) △연접인입선(連接引入線)→이웃고객 공급선 △애자 두부→애자 머리 △긍장(亘長)→선로 길이 △말구(末口), 말구경(末口徑)→윗동, 윗동지름 △지선→지지선 △승주(昇柱)하다→(전주에) 오르다 △재폐로→재투입 △E-type 계기→E형 전력량계 △DM 수동복귀버튼→최대수요전력 초기화 버튼 △건전구간(健全區間)→정상구간(正常區間) △잠바선→점퍼선 △가공지선(架空地線)→공중 낙뢰유도선 △구배(勾配)→기울기 △이도(弛度)→늘어짐(정도) △휴즈→퓨즈 △호광시간(弧光時間)→아크 발생시간 △철탑정부(鐵塔頂部)→철탑꼭대기 △타이(Tie)→연계 △프레샤→시험용 단자 △변대주→변압기주 △단가업체→협력회사 △오계량→계량 오류 △섹셔널라이저(Sectionalizer)→선로구분 자동개폐기 △리클로저, 자동재폐로차단기→자동재투입 차단기 △직결(直結)→직접 연결 △내장(耐張)→장력 견딤 △콘넥타→연결기 △랙크(Rack)→랙 △입상주→케이블 오름전주 △암타이→완철 지지대

◆ 신기술분야

△Smart Meter, 스마트 미터→스마트 전력량계 △BEMS(Building Energy Management System), 건물에너지관리시스템→빌딩에너지관리시스템(BEMS) △PLC(Power Line Communication)→전력선 통신 △ESS(Energy Storage System), 에너지 저장장치, 전력저장장치→에너지 저장장치 △BMS(Battery Management System)→축전지 관리장치 △DR(Demand Response)→수요반응 △CPP(Critical Peak Pricing),피크요금제→피크요금제 △RTP(Real Time Pricing)→실시간 요금제 △EV(Electric Vehicle)→전기차 △Smart Thermostat→스마트 온도조절기 △우드팰릿→압착나무연료 △비회(Fly Ash)→날림재 △저회(Bottom Ash)→바닥재 △개거(開渠)→개방 수로 △그린 프라이스(Green Price)→녹색가격제도 △블레이드(Blade)→날개 △그리드 패리터(Grid Parity)→그리드 평형점 △부하 평준화, Load leveling→부하 평준화 △첨두부하 저감, Peak Shaving→피크부하 저감 △총체적 품질경영, 전사적 품질경영, TQM→전사적 품질경영 △연돌→굴뚝 △연도→연소가스 통로 △Off-taker→생산품구매자 △풍도→공기 통로 △제매장치→그을음 제거장치 △런백(Run Back)→출력 감소 △BOP(Balance Of Plant)→보조설비 △가바나프리(Governor free)→조속기 개방

◆ ICT분야

△AMI(Advanced Metering Infrastructure)→지능형 전력계량시스템 △AMR(Automatic Meter Reading)→원격 검침 △VoIP(Voice over Internet Protocol)→인터넷전화 △HDTV→고화질 텔레비전 △DR(Disaster Recovery)→재해 복구 △GIS(Geographic Information System)→지리정보시스템 △In-house 개발→자체 개발 △SRM(Supplier Relationship Management)→공급자관계관리(SRM) △Batch→일괄 △ISP(Information Strategic Planning)→정보화 전략계획

◆ 전력수급분야

△소내 소비전력→발전소내 소비전력 △PPA(Power Purchase Agreement)→직접구매계약 △절전규제→전력사용규제 △축열→열저장 △축냉→냉기저장 △민간부문 공급능력 활용→민간발전기 활용

[스마트그리드] IEC 61850 표준규격에서 정의된 SCL 예

IEC 61850은 변전소의 모니터링, 제어 등을 위한 표준화된 통신기술로써, 변전소에 대한 재원을 기술하는 언어인 SCL(Substation Configuration description Language)을 정의하고 있습니다. XML 기반이므로 쉽게 읽을 수 있고 쓸 수 있습니다.

아래는 SCL에 대한 코드 예인데요.


    
        
            
                
                
            
            
                
                
            
        
    

위의 SCL에 대해 기술된 변전소의 재원은 E1-Q1이라는 이름의 Bay에서 차단기 QA1과 단로기 QB1은 모두 L1이라는 노드에 연결되어 있다는 내용입니다. QA1이 차단기라는 것은 CBR Type 속성을 갖기 때문이고, QB1이 단로기라는 것은 DIS Type 속성을 갖기 때문입니다.

이 글은 차세대전력기술연구센터의 김태완님이 작성한 IEC 61850에 대한 소개에서 가져왔습니다.