본문 바로가기
배포/Linux(Ubuntu)

10. 우분투에 오라클 설치하기(VM)

by moca7 2024. 12. 7.



 

ㅁ VirtualBox에 설치한 우분투에 디비로 오라클을 설치해본다.

 

 

 

 

- 어제 WSL에 설치한 우분투에 샘플 애플리케이션을 배포해봤다.

그러려면 (1) DB가 있어야하고, (2) 개발환경과 동일한 jdk버전이 설치되어 있어야 한다.

 

- 그리고 (3) 필요한 파일들(소스파일이나 jar 파일)을 가지고 빌드한다.

우리는 소스파일을 메이븐으로 빌드했다.

- 소스파일을 가지고 빌드해서 jar파일을 만들 때 maven이 필요하다.

 

- (4) java 명령어로 jar파일을 동작시켜서 (6) 어제 접속까지 해봤었다.

 

 

 

- 웹 애플리케이션 서버는 HTTP 프로토콜을 처리할 때 기본적으로 8080(tcp) 포트를 사용한다.

이 포트는 클라이언트 요청을 수신하는 역할을 한다.

- application.properties 파일에서 server.port 값을 변경하면, 애플리케이션 서버가 클라이언트 요청을 수신하는 포트를 기본값인 8080에서 지정한 다른 포트로 변경할 수 있다.

 
 
 
 

- 우리가 일반적으로 다른 사이트에 접속할때 포트번호를 적지 않고 접속할 수 있는 이유는 다 기본포트를 썼기 때문이다.

기본포트는 생략이 가능하다.

 

 

- 우리는 주소창에 http://www.gdu.co.kr만 적지만 사실 이 뒤에 포트번호가 생략되어 있다.

원래는 http://www.gdu.co.kr:80 이렇게 작성해야 한다.

http의 기본포트가 80인데 이게 생략된 상태인거다.

- 뒤에 포트번호를 생략하고 요청해도 자동으로 목적지의 포트는 80이 된다.

만약 포트번호가 80이 아니면 http://www.gdu.co.kr:8888 이렇게 뒤에 포트번호를 붙여줘야 한다.

 

 

- 요새 http는 정상적인 사이트라면 거의 안쓴다.

https를 쓴다. https는 기본 포트가 443이다. 

- https라면 https://www.gdu.go.kr:443 이렇다.

그런데 이것도 기본포트니까 생략 가능하다. 안붙여도 자동으로 뒤에 기본 포트번호가 붙는다.

 

- 어딘가에 접속할 때 URL 뒤에 포트번호를 명시해야 한다면, 이는 해당 서버가 기본 포트를 사용하지 않고 다른 포트로 변경했기 때문이다.

 

 

 

- aws의 보안그룹에서 개방을 시켜줘야 한다. 80도 443도 다 tcp다.

 

- 해당 포트가 리스닝(대기 상태)인지 확인을 하고, 외부에서 웹 브라우저에서 접속테스트를 하면 된다.

이걸 어제 한거다. 이렇게 배포했다.

 

 

 

- 기본포트(8080)면 java -jar xxxxx.jar 명령어로 실행한다.

하지만 1~1023번 포트는 시스템 권한이 필요한 특수 포트여서 sudo를 붙여 sudo java -jar xxxxx.jar로 실행해야 한다.

 

 

 

 

 

 

 

- 오라클을 우분투에 설치하는 것은 MariaDB처럼 편하지 않다. 

apt install로 쭉 설치할 수 있는게 아니라 오라클 사이트에가서 저 파일을 다운받고, 그 파일을 우분투에서 설치할 수 있는 형식으로 바꿔주고 설치해야 한다. 

 

- 컨테이너는 경량이 장점인데 오라클은 덩치가 너무 크다.

오라클 이미지를 다운로드받아서 이를 기반으로 컨테이너를 생성할 때도 시간이 오래 걸린다.

보통 오라클은 컨테이너보다는 서버에 직접 설치하는 방식을 쓴다.

 

- sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb이다.

위의 ppt는 앞에 sudo가 빠졌다. 

 

- *은 진짜 *이 아니라 이걸로 시작하는 모든것이다.

 

 

 

 

 

 

ㅁ 버츄얼박스의 우분투에 오라클을 설치해본다.

 

 

 

 

- 이전 스샷의 링크(오라클 사이트)로 들어가서 Oracle 11gR2 XE 버전을 다운받는다.

근데 그러려면 아이디가 필요하다. 그래서 ftp로 받았다.

 

 

- .rpm 확장자는 레드햇 계열에서 사용하는 패키지 형식으로, 우분투에서는 바로 사용할 수 없다.

우분투는 DEB 형식을 사용하기 때문에, .rpm 파일을 우분투에서 설치할 수 있도록 변환 과정이 필요하다.

- 리눅스 배포판마다 사용하는 패키지 형식이 따로 있어서 서로 호환이 안된다.

 

 

 

 

 

 

 

- 우분투가 설치된 192.168.10.143 세션에 오라클 zip파일을 드래그 해 넣는다. 

 

 

 

 

 

 

 

 

○ ls

- 현재 디렉터리의 파일 및 폴더 목록을 출력하는 명령어다.

- 끌어다 놓은 zip파일이 확인된다.

 

 

 

 

 

 

○ sudo apt install unzip

- 압축 해제 도구인 unzip을 설치하는 명령어다.

 

 

 

 

 

 

 

 

○ unzip oracle~.zip

- oracle까지 입력 후 tab키를 입력하면 자동완성된다.

-oracle~.zip 파일을 현재 디렉터리에 압축 해제하는 명령어다.

 

 

○ ls

- 현재 디렉터리의 파일 및 폴더 목록을 출력하는 명령어다.

- ls하면 oracle~.zip 파일 안에 있던 Disk1이라는 폴더가 생긴다.

Disk1은 오라클 설치 프로그램이나 설치 관련 파일이 들어 있는 기본 폴더 이름이다.

 

 

 

 

 

 

 

 

○ cd Disk1

- Disk1 디렉터리로 이동한다.

 

 

○ ls

- 확장자 rpm인 파일이 있다.

- .rpm 파일은 Red Hat 계열 리눅스(RHEL, CentOS 등)에서 사용하는 패키지 파일이다.

Ubuntu에서는 바로 사용할 수 없기 때문에 DEB 형식으로 변환해야 한다.

 

 

 

 

 

 

○ sudo apt install -y alien

- 중간의 -y는 중간에 y 눌러야하는걸 자동으로 해준다는 뜻이다.

 

- alien 패키지 변환 도구를 설치하는 명령어다.

- alien : .rpm 파일을 .deb 파일로 변환하는 도구

 

 

 

 

 

 

 

○ sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm

- RedHat 계열의 .rpm 패키지를 Debian 계열의 .deb 패키지로 변환하는 명령어다.

 

- 엔터쳐도 꽤 오랫동안 반응이 없다. 오래걸린다.

 

 

 

- 어제는 MariaDB를 사용했다. 오늘은 오라클을 사용한다.

- 애플리케이션의 설정 파일인 application.properties에서 연결된 데이터베이스가 MariaDB로 되어 있다면, 이를 오라클에 맞게 수정해야 한다.

- 또한 JDBC 드라이버와 라이브러리도 오라클용으로 변경해야 한다.

라이브러리는 pom.xml 파일을 수정해야 한다.

오라클에 필요한 라이브러리를 메이븐 사이트에서 확인한 후, dependency 태그로 작성해서 다운로드한다.

 

 

 

 

 

 

 

 

 

○ ls
- rpm 파일이 deb 파일로 변환되었다.

 

 

○ sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb

- 오라클 11g XE의 .deb 패키지를 설치하는 명령어다.

 

- dpkg: Debian 계열의 패키지를 관리하는 명령어다.

 

 

 

 

 

 

 

 

○ sudo apt install net-tools

- 네트워크 관리 도구 모음을 설치하는 명령어다.

 

 

○ netstat -ntlp

- 현재 시스템에서 실행 중인 네트워크 연결 상태를 확인하는 명령어다.

 

 

 

 

 

 

 

 

○ sudo /etc/init.d/oracle-xe configure

오라클 11g XE의 초기 설정을 진행하는 명령어다.

- 설정이 완료되면 오라클 XE 데이터베이스가 초기화되고 사용할 준비가 된다.

 

 

- 엔터를 두번 친다. 엔터 두 번은 기본 설정값을 그대로 사용한다는 의미이다.

첫번째 엔터는 HTTP 포트 번호를 8080 (기본값),

두번째 엔터는 데이터베이스 리스너 포트 번호를 1521. (기본값)

 

- HTTP 포트는 웹 서비스용이고, 리스너 포트는 데이터베이스 연결용이다.

HTTP 포트(기본값 8080)는 웹 기반 서비스나 애플리케이션에 접근할 때 사용되는 포트다.

데이터베이스 리스너 포트(기본값 1521)는 클라이언트 애플리케이션이 오라클 데이터베이스와 직접 연결할 때 사용된다.

 

 

- 패스워드와 패스워드 확인에 1234를 입력한다. 

오라클 데이터베이스의 최고 관리자 계정인 SYS와 SYSTEM 계정의 관리자 비밀번호 설정이다.

 

- 마지막으로 y를 누르면 설정을 적용하고 데이터베이스를 초기화한다.

 

 

 

 

 

 

 

 

- 개발환경에 맞는 jdk 버전을 설치한다.

- openjdk는 어제 설치한 것처럼 sudo apt install openjdk-17-jdk로 설치하면 된다.

아마존 코레토는 공식문서를 열여본다.

 

 

 

 

 

 

 

- Using apt에 명령어 블록이 두개 있다. 순서대로 실행하면 된다.

 

 

 

 

 

 

 

 

 

 

- 그런데 지금 문제가 있다.

 

 

○ sudo passwd root 

- root 계정의 비밀번호를 설정하거나 변경하는 명령어다.

- 현재 admin인데 root 게정의 비밀번호를 설정한다. 5678로 바꿨다.

 

 

○ su -

- root 계정이나 다른 사용자 계정으로 전환하는 명령어다.

 

- su : 다른 사용자 계정으로 전환. (default는 root 계정)

- (하이픈) : 전환한 계정의 로그인 셸 환경까지 불러온다. 즉, 완전히 해당 계정으로 로그인한 것과 동일하게 동작한다.

 

 

 

○ nano ~/.bashrc

- 현재 사용자 계정의 .bashrc 설정 파일을 nano 에디터로 열어 수정하는 명령어다.

 

 

 

 

 

 

 

 

 

ㅁ 환경 변수 설정

 

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=XE
export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export ORACLE_BASE=/u01/app/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

 

 

- 오라클 데이터베이스가 정상적으로 작동할 수 있도록 환경을 설정하는 환경 변수 설정이다.

- 맨 밑에 위 6줄을 붙여넣고 ctrl + x, y, 엔터누른다.

 

- 오라클 데이터베이스 설치와 설정을 진행하기 위해 관리자 권한이 필요하기 때문에 사용자를 root로 바꿨다.

 

 

 

 

 

 

 

 

 

○ apt install libaio1

- libaio1 패키지를 설치하는 명령어다.

- libaio1은 비동기 I/O 라이브러리로, 오라클 데이터베이스와 같은 프로그램에서 비동기 I/O 작업을 수행하는 데 필요하다.

- 오라클 데이터베이스가 제대로 작동하려면 이 라이브러리가 설치되어 있어야 합니다.

 

 

 

○ source ~/.bashrc

- ~/.bashrc 파일에 적용된 변경 사항을 즉시 반영하는 명령어다.

- ~/.bashrc에 오라클 환경 변수 설정을 추가한 후 이 명령어를 실행하면 해당 설정이 현재 세션에 바로 적용된다. 

 

 

 service oracle-xe start

- 오라클 XE 서비스를 시작하는 명령어다.

 

 

○ service oracle-xe status

- 오라클 XE 서비스의 상태를 확인하는 명령어다.

 

 

 

 

 

 

 

○ lsnrctl status

- 오라클 리스너의 상태를 확인하는 명령어다.

- 현재 오라클 리스너의 상태(예: 실행 중인지 여부, 수신 대기 중인 포트, 클라이언트 연결 상태 등)를 확인할 수 있다.

 

 

- 여기에 xe가 있어야 되는데 없다. 확인하고 알려드릴게요.

오라클을 우분투에 설치하는건 윈도우에 설치하는것보다 복잡합니다.

 

 

- 오늘은 마리아db대신 오라클을 설치하는 과정이었다.