전체 글 32

MTK를 활용한 Oracle to EPAS EDB, PostgreSQL 데이터 마이그레이션

MTK 설치 및 마이그레이션1. MTK 설치yum -y install edb-migrationtoolkit 2. /usr/edb/migrationtoolkit/etc/toolkit.properties 파일 작성SRC_DB_URL=jdbc:oracle:thin:@{ip}:{port}:ora11g SRC_DB_USER=아이디 SRC_DB_PASSWORD=비밀번호 TARGET_DB_URL=jdbc:{rdbms종류}://localhost:{설정한 포트}/{db명} TARGET_DB_USER=mig_test TARGET_DB_PASSWORD=mig_test 3. JDBC 다운로드SRC 오라클 버전에 호환되는 jdbc 설치 https://repo1.maven.org/maven2/com/oracle/database/..

EPAS EDB 설치 및 설정

EDB란?오픈소스인 PostgreSQL 위에 상용버전으로 커스텀을 해서 배포한 솔루션 기반의 DB이다.함수나 프로시저등 Oracle과의 호환성이 좋다. (변환을 잘 해준다.)카카오뱅크에서 2023년 오라클에서 EDB로 데이터베이스를 교체했다고 한다.https://zdnet.co.kr/view/?no=20231219101900작업 환경Centos7 / root 환경 / Java 8EDB 설치1. yum repository 설정공식홈페이지에서 edb 설치 파일을 다운로드 진행/repo_home/edb/ 하위에 압축 해제repository 설정vi /etc/yum.repos.d/local.repo[edb-repo]name=EDB Local Repositorybaseurl=file:///repo_home/edb..

PostgreSQL nextval 사용

데이터베이스에서 테이블을 만들 때, 테이블에서는 각 row를 구별할 수 있는 컬럼을 필요로 한다. 그러한 컬럼을 primary key라고 부르며, 필수로 지정해야 한다. 주민번호나 휴대전화 번호가 대표적인 예라고 볼 수 있다. 실무적으로 보통은 primary key는 정수형 값을 사용하고, 자동으로 증가할 수 있도록 한다. 이유는 DBMS에서 차지하는 저장공간이 1byte로 적고, 검색이나 삽입과정에서 속도가 빠르다. MySQL에서는 AUTO INCREMENT를 사용하면 정수형 자동증가 처리가 가능하다. 하지만, PostgreSQL은 AUTO INCREMENT가 없다. PostgreSQL에서 정수형 자동증가처리는 다음과 같이 한다. 1. Sequences에서 사용할 Sequence를 생성한다. 2. 생성..

카테고리 없음 2023.09.24

Spring Boot 3.x을 지원하는 Java는?

프로젝트를 진행하는데, Spring Initializr 에서 아래 처럼 설정하고, 기본 프로젝트를 다운로드 받았다. Intellij에서 바로 실행해보면 이런 에러가 뜬다. 무슨 소린가 싶어서 별의별 삽질을 다했다. Kotlin: Cannot inline bytecode built with JVM target 17 into bytecode that is being built with JVM target 11. Please specify proper '-jvm-target' option 그런데, Spring Boot 3.x 버전이상은 Java 17부터 지원을 한다는 내용이 떡하니.. https://spring.io/blog/2022/05/24/preparing-for-spring-boot-3-0 Upgrad..

소스코드를 빌드 한다는 것(Compile, Build)

IDE에서 거의 모든 작업을 다 해주고 있어서 Run만 해주면, 그 결과가 콘솔이나 웹브라우저에서 확인할 수 있다. 그래서 어떤 과정으로 우리가 프로그래밍한 코드가 실행되는 과정에 대해서 다시 한 번 짚어보려고 한다. 빌드, Build 빌드란 프로그래밍한 코드를 실행가능한 결과물로 변환하는 전체적인 과정을 말한다. 컴파일과정과 링크 과정이 있는데, gcc를 이용하여 간략하게 살펴보았다. 컴파일, Compile 컴파일은 사람이 이해할 수 있는 고수준의 언어(C언어, Java등)를 기계가 이해할 수 있는 저수준의 언어(어셈블리 등)로 변환하는 과정을 말한다. "Hello World!" 를 출력하는 c코드를 목적파일인 helloword.o를 만든다. 만들어진 목적파일은 실행권한을 넣더라도 실행할 수 없고, 읽..

이런 방화벽 문제

start.spring.io에서 기본 프로젝트는 다운로드 받고 Gradle 로 라이브러리 버전 관리를 좀 해보려고 했는데,, 아래같은 에러가 발생함 Maven에서는 잘 되던 게 왜 안되는것인가.. Gradle 버전 문제일까? Intellij Community 버전을 사용하고 있었는데, IDE 문제일까? 시간 날 때마다 봤었는데, 며칠을 삽질을 했는지 모르겠다. Maven Gradle 비교 좀 해보려고 했더니.. 결국 찾은 문제는 그냥 회사에서 막고 있었음. 이게 말이나 되나. 집에서나 gradle로 작업할 수 있겠다.

Java Exception이란?

Java Exception이란? 사용자가 잘못 입력하거나 개발자의 실수로 인해 발생하는 오류를 말하며, Exception클래스를 사용한다. Exception 종류 1) 확인된 예외, checked exception 컴파일 단계에서 확인이 가능한 예외 개발자가 개발을 하는 단계에서 수정이 가능함 Exception클래스에서 RuntimeException클래스를 제외한 모든 Exception을 말함 IOException 등 2) 확인되지 않는 예외, unchecked excpetion 컴파일 단계에서 확인하지 못하고 실행단계에서 확인할 수 있는 예외 개발자가 개발을 하는 단계에서 수정을 할 수 없음 Exception클래스에서 RuntimeException클래스를 상속받는 모든 Exception을 말함 Null..

Java 접근 지정자(Access Modifier)

java는 public, protected, default, private 4개의 접근 지정자를 갖는다. 각각은 사용할 수 있는 범위가 다르다. 구분 public protected default private 동일 클래스 O O O O 동일 패키지 O O O X 상속 O O X X 다른 패키지 O X X X public : 다른 패키지를 포함한 어디서든 접근이 가능하다. protected : 다른 패키지의 클래스여도 상속받은 클래스에서는 접근이 가능하다. 동일 패키지에서는 어디서든 접근이 가능하다. default (지정자를 입력하지 않는다. private package) : 동일패키지에서는 public처럼 사용 가능하지만, 다른 패키지에서는 접근이 불가능하다. private : 동일 클래스에서만 접근이 ..

(2) Java는 Call By Value다.

2022.09.24 - [개발/개발 상식] - (1) Java는 Call By Value다. (1) Java는 Call By Value다. 메소드에 변수를 전달하는 방법에는 두 가지가 있다. Call By Value (값에 의한 호출) 값을 전달하기 위해, 메모리 공간을 별도로 할당하고 그 주소값을 전달한다. 메모리 공간을 할당하기 때문에, jaksimsamil.tistory.com 왜 객체로 생성했을 때는 swap이 되는 것일까? Java는 Call By Value 이기 때문에, 값을 복사하는 것부터 시작한다. main함수를 시작하고 각 변수를 생성할 때, heap에 메모리가 할당되고, 해당하는 위치를 stack에 쌓아둔다. 이후, swap과 swapObject 함수를 호출하여 실행할 때에도 필요한 변..

(1) Java는 Call By Value다.

메소드에 변수를 전달하는 방법에는 두 가지가 있다. Call By Value (값에 의한 호출) 값을 전달하기 위해, 메모리 공간을 별도로 할당하고 그 주소값을 전달한다. 메모리 공간을 할당하기 때문에, 비용이 많이 들게 된다. 원본값은 안전하다. Call By Reference (참조에 의한 호출) 참조를 전달하기 때문에, 메모리 공간을 별도로 할당하지 않는다. 참조에 해당하는 메모리를 직접 다루기 때문에 원본값에 영향이 있다. Java에서는 포인터라는 개념이 없기 때문에, 무조건 Call By Value다! swap함수로 예를 들어보자. 아래의 swap 함수를 호출했다고 한다면, 함수를 호출하는 쪽에서 swap 이후의 값은 변하지 않는다. 왜? swap함수가 종료될 때 까지, 할당된 새로운 메모리 공..