본문 바로가기
Server/AWS

[AWS] 로컬 오라클 DB를 AWS RDS로 export

by Youngs_ 2022. 6. 21.

오라클은 AWS RDS 프리티어 사용이 불가능하다!!

https://aws.amazon.com/ko/premiumsupport/knowledge-center/free-tier-rds-launch/

 

프리 티어가 적용되는 RDS 데이터베이스 인스턴스 시작

AWS 프리 티어가 전적으로 적용되는 Amazon Relational Database Service(Amazon RDS) DB 인스턴스를 시작하려고 합니다.

aws.amazon.com

 

1. SQL Developer를 이용한 DB export

DB의 데이터가 작아서 SQL Developer를 통해 간단히 export 할 수 있다.

(1) 익스포트 마법사 실행

  • 도구(T)  데이터베이스 익스포트(X) 선택
  • 접속 DB 선택
  • 스키마 표시는 옮기려 하는 DB의 스키마가 다를 수 있기 때문에 해제하는게 좋다.
    • 체크시 아래와 같이 스크립트가 생성되기 때문이다.
    CREATE TABLE "SSGSO"."ACCOMODATION"
  • 파일의 찾아보기를 클릭해 경로 설정

(2) 익스포트할 유형 체크

  • 익스포트할 유형을 체크하면 된다. 다 체크했다.

 

(3) 객체 지정

  • 조회(K)를 눌러 복사하고싶은 모든 객체들을 선택한다.
  • 전부 다 옮기려면 >> 버튼을 클릭하면 된다.

 

(4) 데이터 지정

  • 어차피 모든 테이블을 복사할 테니 위를 향하는 화살표 버튼를 클릭한다.

(5) 완료

  • 익스포트라는 이름의 SQL-Script 파일이 생성된다.
    • Sequence, Table, Data 등 DB 전체 복사를 위한 스크립트이다.

📌 Oracle 버전 확인하기

끝날때까지 끝난게아니다! Oracle 버전을 확인해서 메모해두자.

SELECT * FROM PRODUCT_COMPONENT_VERSION;

위 명령어 실행을 통해 알 수 있다.

 

2. AWS 프리티어로 RDS Oracle 생성

RDS란?

  • RDS는 (Relational Database Service)의 약어로 관계형 데이터베이스 서비스를 의미한다.
  • AWS RDS란 아마존 웹 서비스가 서비스하는 분산 관계형 데이터베이스이다.
  • 애플리케이션 내에서 관계형 데이터베이스의 설정, 운영, 스케일링을 단순케 하도록 설계된 클라우드 내에서 동작하는 웹 서비스이다.
  • DB 백업이나 복구 활성화 등의 관리 프로세스들을 자동으로 관리해준다.

🤔 EC2에 DB 설치 vs RDS

  • EC2에서는 직접 리눅스에 DB를 설치하고 서비스한다.
  • RDS는 DB의 설정, 운영, 백업 등의 기능을 편하게 이용할 수 있게 분리된 DB 전용 서버이다.
  • 사실 배포까지 생각하면 EC2위에 DB를 설치하는게 좋긴 하다.
  • 하지만 이번 프로젝트는 최대한 많!은!것을 경험하는 것이기 때문에 일단 RDS를 통해 DB 서버를 구축하고 추후 EC2와 연결해 사용해볼 예정이다.

(1) 서비스 → 데이터베이스 RDS

(2) 데이터베이스 생성 클릭

  • 표준 생성 클릭
  • 엔진은 Oracle 선택
  • 에디션은 Oracle Enterprise Edition
  • 버전은 아까 확인해두었던 버전 선택 (저는 11g였습니다)
    • 사실 11.2.0.2.0 이었나? 이랬는데 그냥 11이면 다 호환되는거 같습니다. 11중에 가장 최신인 버전을 선택
  • ✔️ 템플릿은 무!조!건 프리 티어 선택!!!!!!

  • DB 인스턴스 식별자 기입
  • 마스터 암호 설정

  • 인스턴스 크기는 db.t3.micro로 자동 설정
  • 스토리지는 그대로 두고
  • 최대 스토리지 임계값만 21로 넣어놨다.
    • 최대 스토리지 임계값은 해당 DB 인스턴스가 자동 확장될 수 있는 제한 크기이다.
    • 나는 쫄보라 최소인 21로 넣어놨다.😎

  • 연결에서 추가 연결 구성을 클릭
  • 퍼블릭 액세스 가능을 예로 두어야한다!
    • 외부에서 DB 접근을 허용해야 팀원들과 룰루랄라 작업이 가능하기 때문이다.

  • 데이터베이스 인증은 암호 인증은 선택
  • 추가 구성에서 백업은 비활성화했다.
    • 프리티어에서는 백업 데이터가 스토리지를 차지해 과금이 생길수 있기 때문.. ㅜ.ㅜ
  • 월별 추정 요금을 확인한 후 데이터베이스 생성을 클릭하면 끝난다! 쉽즁?😝



3. SQL Developer와 AWS RDS를 연결

(1) 내 DB 인스턴스 확인하기

  • 아까 들어갔던 서비스 → RDS를 들어가면 리소스를 확인할 수 있다.
  • DB 인스턴스 (1/40) 클릭
  • 생성되기까지 약 5~10분정도 소요된다. 잠깐 눈붙이고 누워있ㅈ ㅏ.. 🛌🏻🛌🏻
  • 생성되면 DB 식별자 부분을 클릭

  • 연결 & 보안에서 엔드포인트와 포트를 확인하고 기록해두자
  • 구성에서 DB 이름, 마스터 사용자 이름을 확인하고 기록해두자
    • 특별한 설정이 없었단면 DB 이름은 ORCL로 되어있을거다.

 

(2) SQL Developer에서 접속하기

  • SQL Developer에서 새 접속 을 클릭
  • 접속 이름 : 아무 이름이나 적으면 된다. 저는 aws_프로젝트이름으로 했습니다
  • 사용자 이름 : 설정했던 마스터 사용자이름 (admin)
  • 비밀번호 : 마스터 사용자의 비밀번호
  • 호스트 이름 : 아까 연결 & 보안 탭에서 확인했던 엔드포인트
  • 포트 : 위와 동일
  • SID : 위와 동일 (ORCL)
  • 테스트를 클릭해보고 성공이 뜨면 완료!



4. 복사해둔 DB Script 실행

AWS RDS도 생성하고 SQL Developer로 접속도 완료했다.

이제 아까 export 해둔 DB Script를 실행하면된다.

DB Script 실행

  • 아까 생성한 익스포트 SQL-Script를 전체 복사(ctrl+a)해서 워크시트에 붙여넣기를 한다.
  • 하지만 나는....★ 아까 익스포트할 때 스키마 표시를 눌렀기 때문에 값이 제대로 들어가질 않았다.
  • 따라서 Word에 SQL-Script를 붙여넣기하고 바꾸기를 클릭해 스키마 부분을 삭제했다.
    • "SSGSO".
    • SSGSO.
    • 찾을 내용에 두 개를 차례로 넣고 바꿀 내용을 빈칸으로 했다. 다시 복붙하고 전체 실행했더니 정상적으로 DB에 값이 들어갔다!🐥🐥🐥



5. Spring 프로젝트와 AWS RDS 연결

마지막으로 Spring Framework 프로젝트와 AWS RDS를 연결하면 된다!

root-context.xml

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    <property name="url" value="jdbc:oracle:thin:@엔드포인트:1521:DB이름(ORCL)" />
    <property name="username" value="호스트 이름" />
    <property name="password" value="비밀번호" />
</bean>
  • DB 연결 부분을 root-context.xml에 관리하고 있다.
  • dataSource 부분에서 세 가지를 위의 예시와 같이 수정해줘야한다.
    1. url : 엔드포인트, 포트, DB 이름
    2. username : 호스트 이름
    3. password : 비밀번호
  • 끝!

 


출처 : https://velog.io/@dsunni/%EB%A1%9C%EC%BB%AC-Oracle-DB%EB%A5%BC-AWS-RDS%EB%A1%9C-%EC%98%AE%EA%B8%B0%EA%B8%B0

 

📲로컬 Oracle DB를 AWS RDS로 옮기기

✈️🗺️ SSGSO Project - 로컬 서버의 DB를 복사하고 AWS RDS로 옮기는 과정의 기록

velog.io

 

댓글