반응형

기존에 있었던 프로젝트를 다른 서버로 마이그레이션을 하고, DB는 리눅스에서 window로 포팅하는 작업을 실시했다. 다음에 있을 마이그레이션 및 포팅 작업을 위해 작업을 한 내용을 기록한다.

 

순서

1. 프로젝트 소스 코드 이관 및 마이그레이션

2. 서버 구동을 위한 환경설정 변수 파일 수정

3. WAS 생성

4. DB 스키마 생성

5. DB 테이블 스페이스 생성

6. DB 데이터 이관


1. 프로젝트 소스 코드 이관 및 마이그레이션

기존 IDE는 이클립스(Eclipse)를 사용했는데, 그대로 이클립스(Eclipse)로 이관을 했다. 개발환경은 아래와 같다.

 

- Eclipse 2022-06

- JDK 1.7

- Tomcat 7.0

- Maven X

 

2. properties 파일 서버 설정 변경

기존의 jdbc 변수 설정 파일들을 오라클로 변경 했다.

- jdbc.driverClassname을 oracle.jdbc.OracleDriver로 변경했다.(기존에는 oracle.jdbc.driver.OracleDriver 이거를 사용했는데, 오라클의 버전이 올라감에 따라 oracle.jdbc.OracleDrive로 사용)

- jdbc.url은 jdbc:oracle:thin:@IP:DB 형식으로 변경

 

3. WAS 생성

WAS를 생성했는데, LifeCycleException이 발생했다. 이 문제는 간단하게 해결했다. 해결 방법은 아래의 URL에 정리했다.

https://yongku.tistory.com/entry/%ED%86%B0%EC%BA%A3Tomcat-%ED%86%B0%EC%BA%A3Tomcat-orgapachecatalinaLifecycleException-%EC%9E%90%EC%8B%9D-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EB%A5%BC-%EC%8B%9C%EC%9E%91-%EC%A4%91-%EC%8B%A4%ED%8C%A8%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95

 

[톰캣/Tomcat] 톰캣(Tomcat) org.apache.catalina.LifecycleException: 자식 컨테이너를 시작 중 실패했습니다. 문

웹 프로젝트를 다른 환경에 포팅을 진행하면서, "org.apache.catalina.LifecycleException: 자식 컨테이너를 시작 중 실패했습니다." 라는 에러가 발생했다. 대충 에러를 요약하면, 아래와 같이 LifecycleExceptio

yongku.tistory.com

 

4. DB 스키마 생성

DB 스키마를 생성하는데는 큰 문제가 없었다. 근데, 덤프 파일로 마이그레이션을 하지 않고 스크립트로 한 방에 진행하려고 하니 DB 스키마를 구성하는 순서에 간과한게 있었다. 테이블을 생성하기 전에 테이블 스페이스를 만들어야 했는데, 그 부분을 만들지 않고 진행했다. 그래서 테이블 스페이스를 만들었다.

 

5. DB 테이블 스페이스 생성

-- TABLESPACE 생성
CREATE TABLESPACE TEST_DATA
DATAFILE
'D:\Database\DBF\TEST_DATA.DBF' SIZE 8G AUTOEXTEND OFF
LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO ;

-- 기존에 있는 USER 날리기
DROP USER TEST CASCADE;

-- USER 생성
CREATE USER TEST IDENTIFIED BY TEST;

GRANT connect, resource, dba TO TEST WITH ADMIN OPTION;

ALTER USER TEST DEFAULT TABLESPACE TEST_DATA;

ALTER USER TEST TEMPORARY TABLESPACE temp;

 

기존에 테이블스페이스가 어떻게 생긴지 보고 싶으면 아래의 쿼리를 사용하면 된다고 한다.

SELECT    A.TABLESPACE_NAME "테이블스페이스명",
          A.FILE_NAME "파일경로",
           (A.BYTES - B.FREE)    "사용공간",
            B.FREE                 "여유 공간",
            A.BYTES                "총크기",
            TO_CHAR( (B.FREE / A.BYTES * 100) , '999.99')||'%' "여유공간"
      FROM
       (
         SELECT FILE_ID,
                TABLESPACE_NAME,
                FILE_NAME,
                SUBSTR(FILE_NAME,1,200) FILE_NM,
                SUM(BYTES) BYTES
           FROM DBA_DATA_FILES
         GROUP BY FILE_ID,TABLESPACE_NAME,FILE_NAME,SUBSTR(FILE_NAME,1,200)
       ) A,
       (
         SELECT TABLESPACE_NAME,
                FILE_ID,
                SUM(NVL(BYTES,0)) FREE
           FROM DBA_FREE_SPACE
        GROUP BY TABLESPACE_NAME,FILE_ID
       ) B
      WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME
         AND A.FILE_ID = B.FILE_ID;

출처 : https://bangu4.tistory.com/14

 

근데, 위의 쿼리를 사용하지 않아도 아래의 쿼리를 사용해도 찾을 수 있다.

SELECT *
  FROM DBA_TABLESPACES

 

6. DB 데이터 이관

- 작업 예정


2022년 09월 19일 v1.0 작성

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기