기본 콘텐츠로 건너뛰기

추천 가젯

Base64 이론과 파이썬 예제

BASE64 개요 우리는 데이터를 처리할 때, 문자열(ASCII) 데이터를 사용하기도 하고 이진(Binary)데이터를 사용하기도 한다. 문자열 데이터든, 이진 데이터든, 최종적으로 컴퓨터는 이진 데이터로 변환해 처리하지만, 이진 데이터는 사람이 읽기 힘들고, 문자열을 주로 전송하는 프로토콜(SMTP, HTTP 등)에서 원활한 작동이 일어나지 않을 수 있다. 따라서 이진 데이터를 문자열 데이터로 변환하는 과정이 필요하다. 이 과정에서 이진 데이터를 16진수(HEX)로 변환하는 방법이 고안되었다.   예를 들어, '01000101     00110001     01001100'이라는 데이터가 있다. 이 이진 데이터는 사람이 읽기도 힘들고, 무슨 데이터를 뜻하는지 확인하기 어렵다. 따라서 이 데이터를 표기할 때 10진수나 16진수를 이용하여 표현한다. 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 4 5 3 1 4 C 0x45 0x31 0x4C 010001010011000101001100 -> 45 31 4C 위와 같이 3바이트에 해당하는 내용을 단 여섯 문자로 표현할 수 있으며,  16진수의 표기범위인 0~F를 직관적으로 이해할 수 있기에 파일 데이터를 분석할 때 주로 HEX 표기를 사용한다. 다만, 이렇게 Binary를 HEX로 변환하는 것은, 데이터의 분석을 조금 더 쉽게 하기 위함일 뿐이지, Binary 데이터를 문자열로 변환하는 목적으로는 잘 사용되지 않는다. 그러면 어떻게 Binary 데이터를 문자열로, 그것도 효율적으로 바꿀 수 있을까. ASCII 바로 Binary 데이터와 ASCII 문자를 서로 연결하는 사전을 만들어서, 해당 사전에 맞게 Binary 데이터를 ASCII 문자로 변환한다. 이전의 HEX 표기처럼 특정한 패턴의 Binary 데이터를 ASCII 문자에 대칭시키는 것이다. 다만 이러한 방법을 생각해 내도 문제가 발생한다. 1바이트는 256개의 값...

Synology NAS에 Oracle 설치하기

오늘은 시놀로지 NAS에 오라클을 설치해 보려고 한다.

D대학에서 K교수님의 데이터베이스 수업을 듣는 중, 과제를 통해 오라클 DBMS를 사용하게 되었는데, 마침 집에 시놀로지가 있어 이곳을 서버로 사용하기로 했다.


오라클의 상품은 여러개가 있는데, 그 중에서 우리는 무료 버전인 XE를 사용할 것이다.

XE는 무료인 만큼 여러 제약이 있다.

1. 한 서버에 1개의 인스턴스만 사용 가능하다.

2. 1개의 CPU 자원만 가능. 듀얼코어인 내 NAS에서도 싱글코어로 작동한다.

3. 사용자 데이터는 11GB까지만 저장할 수 있다.

4. 메모리는 1GB까지만 사용한다.

이러한 제한을 빼고는 교육, 연구, 데이터의 테스트 등에 제한없이 사용 가능하다.





그럼 바로 설치와 설정을 해 보자.


1. Docker 패키지 설치

먼저 DSM에 접속해 Docker를 다운받는다. 다운로드 받는 방법은 익히 알고 있을 것이니 생략한다.

2. Oracle Image 다운로드, 설치



'레지스트리' 탭에 들어간 후, oracle을 검색한다. 그러면 oracle과 관련된 여러 이미지들이 있는데, 그 중에서 xe가 들어간 아무 레지스트리나 적당히 고르면 된다. 필자의 경우 별점이 높은 'oracleinanutshell/oracle-xe-11g'를 선택하였다.


더블클릭하여 다운로드를 할 수 있다. 가끔 태그 선택 창이 뜨는데, latest를 누른 다음 선택 버튼을 눌러 다운로드했다.


이미지 탭에 들어가면 다운로드된 이미지들이 있는데, 다운로드가 완료되면 더블클릭하여 설치한다.

컨테이너 이름을 적당히 지정해 준 다음, '고급 설정'을 연다.
'폴더 추가' 버튼을 누른 후, 적당한 경로를 추가해준다.



'포트 설정'을 누르고, 적절히 포트를 설정한다. 22포트나 8080포트는 이미 사용중인 포트일 수 있기에, 다른 포트로 바꿔준다. 보안을 위해서 Well-Known Port는 사용하지 않는 것이 바람직하다. 만약 Well-Known Port를 사용하게 되면, 악의를 가진 사람이 당신의 NAS에 접근해서 영 좋지 못한 일을 당할 수 있다.



'환경' 탭에 들어가서 환경변수를 추가한다.
LANG은 언어, TZ는 타임존이다. 한국어를 사용하는 한국 환경에서 실행할 예정이기에 한국으로 설정했다.

TZ            Asia/Seoul
LANG       ko_KR.UTF8

각각 TZ(타임존)을 서울 시간, LANG(언어)를 유니코드 한국어로 설정한 부분이다.
'적용' 버튼을 눌러 다음으로 넘어가자.


마지막으로 '완료' 버튼을 눌러 설치를 완료한다.


이제 컨테이너에 오라클 11g xe가 설치되었다.
다만 앞으로 해야 할 일이 있는데, 바로 SYSTEM의 ID와 비밀번호를 변경하고, 새 사용자를 추가하는 일이다.
설치한 값이 기본값으로 되어 있기에, 가만히 놔두면 나쁜 사람들이 멋대로 내용을 바꾸는 불상사가 일어날 수 있기 때문이다.
먼저 http://nas주소:포트번호(웹,8080)/apex/apex_admin 에 접속한다.
포트번호는 아까전의 설정에서 봤던 포트의 '로컬 포트'를 입력하면 된다.


위와 같은 창이 뜨는데, Username에는 ADMIN, Password에는 admin을 입력해준다.

첫 로그인이 완료되면 경고 메시지와 함께 패스워드를 바꾸라고 한다. 적당히 넣어서 비밀번호를 바꿔주자.

다시 로그인을 하면 관리자 모드로 접속할 수 있다. 나중에 필요할 때 이곳에서 설정을 건드릴 수 있으니 참고하자.


대부분의 설정이 완료되었다. 이제 DB설정을 마무리할 때이다.
먼저, 데이터베이스 접속 툴을 통해 접속한다.
데이터베이스 툴로는 Oracle Developer, DBeaver, DataGrip 등이 있는데, 원하는 툴을 이용해 접속한다.
호스트에는 nas주소, 포트에는 로컬 포트, 사용자에는 system, 비밀번호에는 'oracle'을 입력한다.
'oracle' 비밀번호가 Default password이다. 얼른 수정해주자.
수정하기 전에 관리자 계정을 하나 생성하자.

다음 SQL문을 입력하고 실행한다.
CREATE USER 사용자명 IDENTIFIED BY 비밀번호;
GRANT CONNECT, RESOURCE, DBA TO 사용자명;

CREATE USER는 사용자를 생성하고, IDENTIFIED는 비밀번호를 설정한다.
아래의 GRANT CONNECT, RESOURCE, DBA는 각각 연결, 자원, 데이터베이스 관리자 권한을 부여하는 건데, 자세한 것은 각자 알아보도록 하자.

이젠 정말로 SYSTEM의 비밀번호를 변경할 때이다. 변경하지 않는다면 외부에서 나쁜 마음을 먹은 사람들이 여러분의 NAS에 영 좋지 못한 일을 벌일 수가 있기 때문이다.

다음 SQL문을 입력하고 실행한다.
ALTER USER SYSTEM IDENTIFIED BY 비밀번호;
ALTER USER SYS IDENTIFIED BY 비밀번호;

'ALTER'는 데이터베이스의 내용을 변경하는 뜻이고, USER SYSTEM은 'SYSTEM'사용자를 뜻하고, 'IDENTIFIED BY 비밀번호'는 위에서 말했던 내용과 같이 비밀번호를 설정하는 부분이다.
이 쿼리의 실행이 종료하면 DB 서버와의 연결이 끊기게 된다. SYSTEM으로 로그인 한 상황에서 SYSTEM의 비밀번호를 바꿔버렸기 때문이다.


위의 경고대로 접속이 되지 않는다. 이제 아까전에 만들었던 사용자로 로그인을 해서 사용하면 된다.
예시로 모든 테이블의 내용을 출력하는 SQL문을 실행해 보겠다.


SELECT * FROM SYS.ALL_TABLES;

*는 모든 내용, FROM 뒤에는 테이블 이름을 적는다. SYS.ALL_TABLES는 SYS의 모든 테이블이다.


이렇게 쿼리문을 통해 테스트까지 완료하였다면, 시놀로지 NAS에 성공적으로 데이터베이스 서버를 구축한 것이다.
힘들게 구축한 데이터베이스 서버로 과제를 불태워보자!


댓글

가장 많이 본 글