안녕하세요. 

이전 파트에서 진행했던 [RDS] AWS의 RDS로 Oracle Database 생성하기에 이어서 접속하는 포스팅을 진행해보겠습니다.



만들어봤으니 접속해보셔야겠죠?



SQLPLUS, TOAD 어떤 툴을 이용하셔도 상관 없습니다만 저는 Orange 7.0 툴을 이용해서 이전 시간에 만든 DB에 접속해보도록 하겠습니다.

계속진행하기 앞서 이번 시간에는 준비물이 필요합니다.






준비물



1. Oracle 11g client (32bit)


2. Orange 7.0 DBA (Unicode Version)


3. 운영중인 Oracle DB







1. Oracle 11g Client 32bit 설치



http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html



위의 URL을 통해 11g client를 다운로드 받아주세요.

Oracle 계정이 필요로 합니다. 


Oracle Database 11g Release 2 client <- 이걸로 받으세요!! 

햇갈리셔서 서버를 받으시거나 엉뚱한거 받으시지 않도록 조심하세요.



(1)



(2)


설치시 꼭 관리자로 설치해주세요.

Orange의 모든 기능을 사용할려면 관리자로 설치하셔야하고 tnsname.ora 경로도 자동으로 잡힙니다.


(3) 설치과정


설치경로를 이전에 설정할수있는데 사용자의 환경에 맞게 설정해주세요.



(3) 설치 완료







2. Orange 7.0 DBA Unicode 다운로드 및 설치



http://www.warevalley.com/xml/download/orange_view?num=13&page=1&type=trial




warevalley사에서 제작한 orange tool을 다운로드 받아주세요.

계정이 필요로 합니다. (간단함)


Orange7_ra_dbaU_b14_KR.zip <- 이걸루 받으세요


사용하실려면 트라이얼 라이센스를 발급받으셔야합니다.

설치 후 트라이얼라이센스 발급 받기 하시면 이메일로 활성화 코드가 옵니다.

오렌지 라이센스 매니저를 실행하셔서 활성화 코드를 activate 하시면 28일동안 쓸 수있어요



자 그럼 디비에 접속해보겠습니다.


RDS 디비 인스턴스가 정상적으로 실행중이여야합니다. (ENDPOINT 주소와 계정 ID, PW 정보가 필요합니다)




(1) Orange 최초 실행 화면



- DBMS Logon 창을 닫아주세요.

- tnsname.ora 파일을 수정하겠습니다.




(2) NetworkConfiguration TOOL



- 상단 메뉴에서 Tools->Network Configuration Tool 클릭




(3) tnsname.ora 수정



1. TNS List의 '+' 버튼 클릭

2. 서비스 네임 입력 ( RDS인스턴스의 DB 이름을 입력해주세요 )

3. Modify 버튼클릭




(4) AWS RDS INSTANCE 정보



- RDS 인스턴스에 들어가면 DB 접속 주소 (엔드포이트)와 DB이름 정보가 있습니다.




(5) Address List


- host 주소에 엔드포인트 주소 입력

- 포트나 프로토콜은 건드리지 않습니다.






(6) Address List


- host 주소에 엔드포인트 주소 입력




(7) 성공




(8) DBMS Logon



- ctrl + n 버튼이나 connect 버튼을 클릭해서 DBMS Logon 창 생성

- TNS Name 클릭후 아까 생성한 db접속정보 클릭




(9) DBMS Logon



- ctrl + n 버튼이나 connect 버튼을 클릭해서 DBMS Logon 창 생성

- TNS Name 클릭후 아까 생성한 db접속정보 클릭




(10) 접속 성공



상단에 scott 계정으로 세션이 생성된걸 확인할 수 있습니다.

Alt+F1로 스키마 브라우져를 통해 접속한 db의 스키마를 볼수 있고 spl tool을 사용하여 query작업 가능합니다~


이상으로 aws rds를 이용한 오라클 디비 생성부터 접속까지의 과정을 마무리 하겠습니다.






안녕하세요.

오늘은 AWS의 RDS 서비스를 이용해 Oracle DB를 만들어보려고 합니다.

간단하게 DB의 기능만 필요하신 분들께서는 굳이 EC2로 서버를 생성해서 Oracle을 설치후 방화벽설정까지 해주는 번거로움 없이 RDS기능을 이용하여 간단하고, 쉽고, 빠르게 본인의 DB를 생성하실수 있습니다.



이번 포스팅에서는 AWS 콘솔에서 RDS를 통해 DB 인스턴스를 생성하는 과정까지 다뤄보겠습니다.






1. AWS 콘솔에서 인스턴스 생성하기



https://aws.amazon.com/ko/






AWS에 로그인후 콘솔창 진입까지의 과정은 생략하도록 하겠습니다.


(AWS CONSOLE)



1) 메뉴 우측 상단의 지역을 '서울'로 바꿔주세요.

2) 데이터베이스 항목의 RDS를 클릭하세요.



(RDS DASHBOARD)



3) 좌측 메뉴의 '인스턴스'를 클릭하세요


4) 메인화면의 DB인스턴스 시작 버튼을 클릭하세요



(Step 1. 엔진 선택)


5) 하단의 'RDS 프리 티어에 적용되는 옵션만 사용' 클릭 해서 프리티어에서만 사용가능한 옵션을 확인할 수 있습니다.

(Amazone Aurora 엔진만 비활성화 되네요)


6) Oracle 엔진을 선택하세요


7) Oracle Enterprise Edition을 클릭합니다


8) 다음단계 버튼을 클릭하세요



(Step 2. DB 세부 정보 지정)



9) 사용하실 DB의 버전을  선택하세요. 저는 11g 버전으로 진행하겠습니다.


10) 스크롤을 내려 설정 탭에서 DB 인스턴스 이름을을 지어주세요


11) Oracle db에 접속할 계정 정보를 입력하세요.


12) 다음단계 버튼을 클릭하세요



(Step 3. 고급 설정 구성)



13) 데이터베이스 이름을 지어주세요. 그외 옵션은 건들이지 않겠습니다. 포트번호는 기본으로 두고 진행할게요 

( 포트번호 바꾸고싶으시면 여기서 바꾸시고 가시면 됩니다.)


14) 스크롤을 내려 DB인스턴스 시작 버튼을 눌러주세요





15) 인스턴스 생성이 끝났습니다. 






인스턴스 탭을 보시면 인스턴스가 생성중인걸 확인할 수 있습니다.

몇 분정도 소요되는게 아니라 10~20분 사이 정도 기다리셔야 생성이 완료되는걸 볼 수 있습니다.

인스턴스 상세정보에서 

'엔드포인트' = DB IP

'포트 = DB PORT

DB 이름, 사용자 이름 정보만 기억 해두면 Oracle 접속하는데 문제가 없습니다. 

비밀번호 까먹지 않도록 잘 기억해두시길~








다음 포스팅에서는 Orange tool을 이용해서 생성한 DB에 접속하는 과정을 보여드리겠습니다.



한글 테이블 레코드 분석




한글 문서에 생성되는 표를 바이너리값으로 파싱하는걸 포스팅해보려고한다.
기본적으로 압축이 풀린 Section Stream을 바이너리 뷰어로 읽었다는 가정하에 시작한다.


구분 

2018(예상) 

2017 

2016 

2015 

Orange 7.0 

20 

Orange Ade 

Trusted Orange 

총액 

28 

11 

10 


위와 같은 표가 한글파일로 생성을 했을때 만들어지는 본문의 문단레코드 바이너리는 아래와 같다.






42 00 60 01 문단 헤더

09 00 00 00 00 08 00 00 0E 00 00 00 01 00 00 00 01 00 00 00 00 00 


43 04 20 01 문단의 텍스트

0B 00 20 6C 62 74 00 00 00 00 00 00 00 00 0B 00 0D 00 


44 04 80 00 문단의 글자 모양

00 00 00 00 01 00 00 00 


45 04 40 02 문단의 레이아웃

00 00 00 00 92 3B 00 00 76 1D 00 00 76 1D 00 00 0B 19 00 00 58 02 00 00 00 00 00 00 18 A6 00 00 00 00 06 00 


47 04 C0 02 컨트롤 헤더

20 6C 62 74 11 23 2A 08 00 00 00 00 00 00 00 00 14 A6 00 00 40 1B 00 00 01 00 00 00 1B 01 1B 01 1B 01 1B 01 EB 0D F7 67 00 00 00 00 


4D 08 00 02 표 개체

06 00 00 04 05 00 05 00 00 00 FE 01 FE 01 8D 00 8D 00 05 00 05 00 05 00 05 00 05 00 02 00 00 00 





---------- 여기서부터는 각 셀의 텍스트 정보를 담는 문단 리스트 ( 셀의 갯수만큼 반복됨 ) ---------- 


48 08 E0 02 리스트 헤더 

01 00 00 00 20 00 00 04 00 00 00 00 01 00 01 00 FC 22 00 00 38 07 00 00 FE 01 FE 01 8D 00 8D 00 02 00 FC 22 00 00 00 00 00 00 00 00 00 00 


42 08 60 01 

03 00 00 80 00 00 00 00 0F 00 00 00 01 00 00 00 01 00 00 00 00 00 


43 0C 60 00 

6C AD 84 BD 0D 00 44 0C 80 00 00 00 00 00 01 00 00 00 


45 0C 40 02

00 00 00 00 00 00 00 00 E8 03 00 00 E8 03 00 00 52 03 00 00 58 02 00 00 00 00 00 00 00 1F 00 00 00 00 06 00 


---------------------- 반복 ----------------------






표 개체를 알아보기전에 조금더 위의 바이너리 형태를 구조화 시켜보면

  1. HWPTAG_PARA_HEADER
  2. HWPTAG_PARA_TEXT
  3. HWPTAG_PARA_CHAR_SHAPE
  4. HWPTAG_PARA_LINE_SEG
  5. HWPTAG_CTRL_HEADER
  6. HWPTAG_TABLE
  7. HWPTAG_LIST_HEADER         ( 셀의 수만큼 반복 )
    1. HWPTAG_PARA_HEADER
    2. HWPTAG_PARA_TEXT
    3. HWPTAG_PARA_CHAR_SHAPE
    4. HWPTAG_PARA_LINE_SEG











이번 포스팅에서 알아볼 내용은 표개체 레코드이다.

표개체 레코드는 4D 08 00 02의 바이너리 값을 갖는데

이중 4D는 TAG_ID 값, 02은 LEVEL, 00 02는 해당 레코드의 데이타 사이즈값이다.

이건 눈대중으로 대충 값을 본거이니 제대로 확인을 하고싶다면 bit단위로 끊어서 파싱하길 바란다.(지금은 눈 대중으로 바이트 단위로 파싱)





자료형 

길이 

설명 

 BYTE stream

 N

 개체 공통 속성 

 BYTE stream

 N2 

 표 개체 속성 

 BYTE stream 

 N3 

 셀 리스트 

 셀 Size * 셀 개수

 전체 길이

가변 

N + N2 + N3 

 


위의 표는 표 개체가 문단에 쓰여질때 갖는 형태이다.


N   = HWPTAG_CTRL_HEADER

N2 =  HWPTAG_TABLE

N3 =  HWPTAG_LIST_HEADER


그러면 컨트롤 헤더부터 뜯어보도록 하자.











47 04 C0 02 컨트롤 헤더

20 6C 62 74 11 23 2A 08 00 00 00 00 00 00 00 00 14 A6 00 00 40 1B 00 00 01 00 00 00 1B 01 1B 01 1B 01 1B 01 EB 0D F7 67 00 00 00 00 


HEADER

TAG_ID = 47

LEVEL = 2

SIZE = 2C(44)


DATA

20 6C 62 74

- 컨트롤 ID 'T', 'B', 'L', ' '의 값을 갖고 있다. (4 BYTE)

11 23 2A 08 00 00 00 00 00 00 00 00 14 A6 00 00 40 1B 00 00 01 00 00 00 1B 01 1B 01 1B 01 1B 01 EB 0D F7 67 00 00 00 00 

- 개체 공통 속성 값이다.



한글 문서에 이 컨트롤 헤더의 용도는 Extended type 의 컨트롤 종류를 나타내는 식별기호 32비트 id가 사용된다고 나와있다.

컨트롤 코드가 큰 범주를 나타내는 식별기호라고 한다면 컨트롤  id는 세부 분류를 나타내는 식별 기호인 셈이다.

예를 들어 단 정의 컨트롤 id는 MAKE_4CHID('c', 'o',' l', 'd')와 같은 형식으로 정의된다.


자 이쯤되면 컨트롤 헤더가 어떠한 용도로 사용되는지 이해는 된거 같으니 다음 레코드인 표 개체(HWPTAG_TABLE) 레코드를 분석 해보자.














4D 08 00 02 표 개체

06 00 00 04 05 00 05 00 00 00 FE 01 FE 01 8D 00 8D 00 05 00 05 00 05 00 05 00 05 00 02 00 00 00 


자료형 

길이 

설명 

UINT32

2

속성 

UINT16

2

줄의 갯수 

UINT16

2

칸의 갯수

HWPUINT16

2

셀 스페이싱 

BYTE stream

8

안쪽 여백 정보 

BYTE satream

2*n

Row  

UINT16

2

Border Fill ID 

UINT16

2

Valid Zone Info Size 

BYTE satream

2

영역 속성 

 전체 길이

가변 

22 + (2*row) + (10*zone) 

( 표 개체 속성 )



HEADER

TAG_ID = 4D

LEVEL = 3

SIZE = 20(32)


DATA

06 00 00 04 = 속성 값 (67108870)

05 00  = 줄의 갯수

05 00  = 칸의 갯수

00 00  = 셀스페이싱 0

FE 01  = 안쪽 여백 정보 왼쪽 510

FE 01  = 오른쪽 510

8D 00 = 위쪽 141

8D 00 = 아래쪽 141

05 00 = RowSize

05 00 = RowSize

05 00 = RowSize

05 00 = RowSize

05 00 = RowSize

02 00 = Border Fill (채우기 정보)

00 00 = ZoneInfo


HWPTAG_TABLE 레코드의 정보를 뜯어보면 해당 테이블에 대한 정보가 저장되어있는것을 확인 할 수 있다.

바이너리 값을 보았을때 위의 테이블 정보는 5행 5열의 테이블이며 표의 여백정보를 확인 할 수있다.

그렇다면 셀안에 들어가는 정보는 어디에 저장되는것일까?

위에 표에서도 설명되었지만 다음 레코드에서 셀의 정보가 저장된다.












48 08 E0 02 리스트 헤더 

01 00 00 00 20 00 00 04 00 00 00 00 01 00 01 00 FC 22 00 00 38 07 00 00 FE 01 FE 01 8D 00 8D 00 02 00 FC 22 00 00 00 00 00 00 00 00 00 00 


 자료형

길이 

설명 

BYTE stream 

문단 리스트 헤더 

BYTE stream

26 

셀 속성 

전체 길이

가변 

26+n byte 

( 셀 리스트 )




 자료형

길이 

설명 

 INT16

문단 수 

 UINT32

속성 ( 자세한건 한글 도큐먼트 참조 )

 전체 길이

 

( 문단 리스트 헤더 )

 



자료형 

길이 

설명 

 UINT16

 2

셀 주소 (COL) 

 UINT16

 2

셀 주소 (ROW) 

 UINT16

 2

열의 병합 개수 

 UINT16

 2

행의 병합 개수 

 HWPUINT

 4

셀의 폭 

 HWPUINT

 4

셀의 높이 

 HWPUINT16 array[4]

 2*4

셀4방향 여백 

 UINT16

 2

테두리/배경 아이디 

 전체 길이

26

 

( 셀 속성 )


HEADER

TAG_ID = 48 

LEVEL = 3

SIZE = 40(64)


DATA

01 00 00 00 = 문단 수

20 00 00 04 = 속성

00 00  = 셀 주소 열

00 00  = 셀 주소 행

01 00  = 열의 병합 개수

01 00  = 행의 병합 개수

FC 22 00 00   =  셀의 폭 WIDTH

38 07 00 00   =  셀의 높이 HEIGHT

FE 01  = 왼쪽 마진

FE 01  = 오른쪽 마진 

8D 00  = 위쪽 마진

8D 00  = 아래쪽 마진

02 00  = 채우기 아이디

FC 22  = 필드 이름

00 00 00 00 00 00 00 00 00 00  = 알려지지 않은 바이트 



위와 같이 분석이 되는데 셋팅해야할 값이 너무나 많다.

0행 0열의 셀의 정보를 뜯어본 값이다. 


이후로는 문단의 정보가 들어가게 되는데 해당 셀의 텍스트 문단에 대한 정보이다.


42 08 60 01 

03 00 00 80 00 00 00 00 0F 00 00 00 01 00 00 00 01 00 00 00 00 00 


43 0C 60 00 

6C AD 84 BD 0D 00 44 0C 80 00 00 00 00 00 01 00 00 00 


45 0C 40 02

00 00 00 00 00 00 00 00 E8 03 00 00 E8 03 00 00 52 03 00 00 58 02 00 00 00 00 00 00 00 1F 00 00 00 00 06 00 


위의 레코드들에 대한 설명은 생략하겠다.

이렇게 셀리스트가 다 끝날때까지 반복이 된다.




어도비 프리미어 프로 cc 2018버전을 노트북에 설치했는데

요놈만 유독 동영상 파일을 임포트할때 디스크에서 읽어오지 못한다는 에러는 내뿜었다.


덕분에 2~3번 재설치후 한번의 포맷까지 했지만

증상은 여전했고


한글판이였던 프리미어를 영문으로 바꾼뒤 해당 에러 메세지를 구글링해서

답을 찾아 냈다.





한글판에서는

'디스크에 있는 파일을 열지 못했습니다.' 라는 에러로 출력된다.



구글링 해보니 해당 에러는 윈도우즈 버그인듯 싶다.

마이크로 소프트에서 업데이트 파일을 제공한다.




https://www.microsoft.com/en-us/software-download/mediafeaturepack

( 마이크로 소프트 )


위의 주소에서 본인에게 해당되는 os 버전을 선택후 다운로드하여

업데이트파일을 설치하면된다.


한번의 리부팅이 있은 뒤 프리미어를 다시 키고 파일을 임포트하면 정상적으로 불러오는걸 확인 할 수 있다.




+ Recent posts