상세 컨텐츠

본문 제목

2023년 12월 7일 2교시 QUESTION.

오라클 아키텍처

by 병아리 엔지니어 2023. 12. 11. 07:37

본문

1교시에서 파일을 다 다운로드받았으면
이제 본격적인 설치를 해보자.

먼저 Oracle VM Virtual Box 를 켜고 제일 먼저 보이는 창에서
하늘색 세균 모양 '새로 만들기' 누르기

 



'가상 머신 만들기'라는 창이 뜨면
이름에 oracle 이라고 쓴다.
그러면 아래 부분에 종류는 Linux,
버전은 자동으로 Oracle Linux (64-bit) 하면서
자동으로 종류와 버전이 만들어진다.

 

 

하지만 나는 복습 중이고

oracle 이라는 이름의 가상 머신이 이미 있기 때문에

practice 라는 이름의 가상 머신으로 새로 만들 거야...

(종류와 버전 수동으로 설정하기)


다음 화면에서
기본 메모리 2048MB 해서 2기가만 할당받고
프로세서는 (맨 오른쪽 부분) 2로 설정하고

다음으로 넘어가기

 



가상 하드 디스크 (스토리지) 부분에서는
디스크 크기 50기가로 설정하고

다음으로 넘어가기
(이걸 50기가로 잡아놓아도 이건 맥시멈 크기일 뿐 실제로는 사용한 만큼만 쓴다)

 

 


요약 창이 나오면 완료 누르기

 

 


practice 라는 새 사용자가 만들어진 것을 확인할 수 있다.

 


이 오라클 사용자를 한 번 클릭해서 하늘색으로 만들어둔 채로
오른쪽 톱니바퀴 '설정' 누르기

 


톱니바퀴 누르면 나오는 상자에서 '저장소' 들어가서
하늘색 CD 모양 옆 '비어 있음' 누르기
화살표로 표시해놓은 부분 CD 클릭해서
아까 1시간에 걸쳐 다운받아놓은 파일 넣기

(순서대로 클릭만 하면 된다)

 



그리고 다시 설정 상자의 '네트워크' 부분에서
어댑터 1은 그대로 둔 채로

 


(NAT 은 인터넷 사용하겠다는 뜻)
어댑터 2로 들어가서
네트워크 어댑터 활성화 체크박스에 클릭하고
다음에 연결됨 (A) 부분에서 호스트 전용 어댑터 선택하기
이렇게 해야 윈도우즈에서 오라클 리눅스 서버로 들어갈 수 있다.

 

 


Oracle VM VirtualBox의 작업 표시줄에서 
파일 클릭 > 환경설정 클릭

 

 

입력 > 가상 머신 부분에서
호스트 키 조합을 Ctrl + Alt 로 해놓기
(가상 머신에서 마우스 빠져나오게 하는 키)

 



방금 새로 만든 오라클 가상머신 클릭 > 시작 눌러서

(시작 안누르고 더블클릭해도 OK)
가상머신 열기

 



그러면 빨간 바탕에 ORACLE 이라는 글씨가 써있는 창이 뜨면서
지혼자 막 뭐라고 뜨는데

다 될 때까지 좀 기다려주자.

(한 1-2분은 기다려줘야 하는 듯...)

 



인고의 시간이 끝나면 언어를 선택하라는 창이 뜨는데
영어로 지가 이미 알아서 선택해놓음,
그래서 그냥 아무것도 안하고 continue 누르면 된다.

 

 



software seleciton 으로 들어가서

 



왼쪽에서는 Server with GUI 선택,
오른쪽에서는 Development Tools 선택하고 Done
잠깐 기다리면 느낌표가 없어진다.

 



그 다음에 다시 그 옆 INSTALLATION DESTINATION 으로 들어가서

 



무슨 스캐너 같이 생긴 거 클릭하기
1번 클릭하면 하늘색, 두번 클릭하면 체크표시가 생기는데
2번 클릭해서 체크표시까지 띄우고
Done 누르기

 



그 다음에 NETWORK & HOST NAME 으로 들어가서

 


Ethernet(enp0s3) 클릭 > 오른쪽 on/off 버튼 클릭해서 상태를 on 으로 바꾸기
> 오른쪽 아래 Configure 클릭

 

 

General 항목에서 맨 위 체크박스 클릭 > Save

 

 


빠져나가서 Ethernet(enp0s8) 에 대해서도 똑같이 on 으로 설정하고
Configure 클릭해서 General 의 맨 위 체크박스 클릭하고 save 한 다음에


왼쪽 맨 아래 Host name 을 oracle 로 바꾸고
그 옆에 있는 Apply 버튼 눌러서 적용한 다음
Done 눌러서 빠져나오기

(QUESTION. 나는 가상머신 이름을 practice 로 했으니 호스트 이름도 practice 로 해야 하나?)

(ANSWER. 아니야... 아니라고... 그냥 oracle 로 해...)

 



Begin Installation 클릭해서 설치하기
시간이 한 10분 정도 걸린다.

 



그 사이에 우리는 화면 왼쪽
열쇠 모양 ROOT PASSWORD 눌러서

 


비밀번호 1234로 설정하기

 

 

 

 

그리고 오른쪽 USER CREATION 눌러서

 


Full name 은 user1,
Password 는 1234로 한 다음
Done

 


이제 또 설치가 다 되기까지 인고의 시간을 기다리면 됨...

설치가 다 되면 Reboot 누르면 된다.

 

 

 

그러면 시커먼 창에 하얀 글씨로 지혼자 뭐라고 막 뜨다가

또 갑자기

 

 

 

이런 창이 나오는데

 

LICENSE INFORMATION 눌러서 동의하고 빠져나오면 된다.

 

 

 


FINISH CONFIGURATION 하고

 



설치가 다 되면 > user1 밑에 Not listed? 라고 써있는 창이 하나 뜨는데
처음에 로그인할 때에는 꼭 Not listed? 클릭해서 root 로 로그인하기
(비밀번호 1234)

 

 

 



그렇게 해서 root 로 로그인하고
조금 기다리면 언어를 설정하라는 창이 뜬다.

 

그러면 언어를 영어로 설정하고 > 오른쪽 위 next 누르고

 


그다음 Typing 설정 창이 나오면 또 next 누르고

 


프라이버시 설정하라고 하면 off 누르고 (on 으로 해도 아무 상관없다)

또 위에 Next 누르기

 

(QUESTION. 근데 이거 프라이버시 ON 으로 한 거랑 OFF 로 한 거랑 무슨 차이야?)

 

 

 

그리고 계정 등록하라고 하면 SKIP 누르고

 


그 다음에 아래에 파란색 버튼 나오면 누르고

 


키보드 세팅 같은 거 하라고 하면 오른쪽 위 x 표시 누르기

 



그러면 폴더가 하나 있고, 쓰레기통이 하나 있는
어디서 많이 본 창으로 들어와진다.

 



여기서 작업 표시줄에 있는 '장치' 누르고 > 게스트 확장 CD 이미지 삽입 누르면

 

 


무슨 CD 모양 아이콘이 바탕화면에 하나 추가가 되고
Cancel / Run 중에 하나 고르라는 창이 뜨는데
그 중에서 Run 고르면 된다.

 

 


그러면 지혼자 막 뭐가 돌아가는데
좀 기다리다 보면 press 어쩌고가 뜸.
그러면 거기서 엔터 키 누르면 바탕화면으로 다시 빠져나오게 되는데
거기서 CD 모양 아이콘을 마우스 오른쪽 버튼으로 클릭하고
Eject 누르면 CD가 도로 없어진다.

 

 

 

그리고 바탕화면에서 마우스 오른쪽 버튼 클릭해서
Open Terminal 누르면 퍼티 창 같은 창이 하나 열리는데

 



거기서 ifconfig 하고
두번째로 나오는 enp0s8 부분 두번째줄 아이피 주소를 복사해서

 



퍼티를 실행한 다음 > Host Name과 Saved Sessions 창에
아까 복사한 그 아이피 주소를 붙여넣고 Save 누르고 > open

 



창이 하나 뜨면 accept 누르고

 



퍼티 창에서 root 로 로그인하기

 




mobaXterm 파일 설치하기
만약 Install 을 눌렀는데 소스 파일을 찾을 수 없다는 창이 뜨면
Ignore 눌러서 계속 설치하기

(난 이미 이거 설치해놔서... 스크린샷 못찍어...)



2교시

(27:00)
(오라클 그림 oracle.png 와 같이 보기)

- 오라클은 디스크 구조와 메모리 구조 두 가지로 되어 있다.
- 디스크 구조 = database 구조
- 메모리 구조 = instance 구조
- 오라클은 데이터를 저장하는 소프트웨어이다.
- 데이터는 디스크에 저장되어 있는데, 그 디스크를 통칭해서 데이터베이스라고 한다.
- 즉 데이터베이스란 : 데이터가 저장되어 있는 저장소를 말한다.

(29:15)
그림에서 가운데 아래에 있는 회색 Database 상자는
데이터베이스의 구조를 나타내는데,
이 중에서
- Data files 에는 실제 우리가 보고자 하는 데이터들이 저장되어 있고
- Control files 에는 오라클을 제어하는 중요한 파일들이 들어 있고
- Redo Log files 에는 변경 작업이 일어날 때마다 정보가 쌓이는 곳
(변경 작업은 transaction 이 발생할 때 = DML 문장이 수행될 때)
- 후에 recovery(복구) 작업을 위해 정보를 쌓아놓는 것
- 뭔가 깨진 것이 없으면 (문제가 발생하지 않으면) 딱히 들여다보지는 않는다.
- 예를 들어, DML 작업(업데이트라든가)을 하는데 네트워크가 딱 끊어진 경우
- 자동 rollback 이 되어야 하는데.
- 그러기 위해서는 이전 값이 어딘가에는 저장되어 있어야 한다.
- 그 '어딘가' 가 바로 Redo Log files

(33:25)
가운데 아래에 있는 회색 Database 상자 왼쪽
- Parameter files 는
- 우리가 오라클 DB를 처음 띄울 때 (startup 할 때) 제일 먼저 보는 파일로
- 데이터베이스 바깥쪽에 있지만 정말 중요한 파일이다.
- 데이터베이스가 내려갔다가 (shutdown 되었다가) 다시 띄울 때는 이 파일을 가장 먼저 본다.
- 이 파일은 오라클의 환경을 구성한다.
- Password files 는 
- 비밀번호를 관리하는 파일인데
- 이전에 사용했던 비밀번호를 또 쓸 수 없도록 하거나
- 아이디와 패스워드를 동일하게 만들 수 없도록 하거나
- 너무 간단한 패스워드는 만들 수 없도록 하거나
- 문자와 숫자, 특수문자 등을 조합해서 패스워드를 만들도록 하는 등
- 비밀번호를 어떻게 생성해야 할지를 관리한다.

(34:56)
데이터는 데이터베이스(디스크) 안에 있는데
디스크 안에 있는 데이터에 액세스하려면 메모리에 올려야 한다.

디스크 안 데이터 파일에 있는 데이터가 필요할 때마다 계속 찾아가자니
너무 I/O 가 많이 발생하기 때문에
(disc arm 이 빙 돌아가면서 데이터를 검색하는 것이기 때문에 너무 성능이 떨어짐)

한번 썼던 데이터는 메모리에 올려놓는데
그렇게 올려놓은 메모리가 바로 Database Buffer Cache
(메모리에 들어있는 데이터는 메모리 I/O 로 찾는데
메모리 I/O 는 정기적인 신호이기 때문에 눈 깜짝할 사이에 찾을 수 있다)

즉 Database Buffer Cache 는
I/O 성능을 좋게 하기 위해, 디스크에 있는 데이터들(한 번 썼던 내용들)을 올려 놓은 메모리 영역

(37:05)
Redo Log Buffer
- DML 조작을 할 때의 이력 정보들을 이 곳에 생성해 놓는데
- 메모리(Instance)란 한정된 공간인데다 DB 작업은 365일 쉬지 않고 돌아가야 한다.
- 그래서 저 Redo Log Buffer 에 모아놓은 데이터들을 디스크로 내려야 하는데
- 그렇게 내린 데이터들을 모아놓는 곳이 Redo Log files
- 그런데 메모리의 Redo Log Buffer 에 있는 내용을 디스크의 Redo Log files 로 옮기려면
- 쓰는(write) 역할을 하는 것들이 있어야 하는데
- 그게 바로 백그라운드 프로세서들
- 백그라운드 프로세서들은 메모리와 디스크 사이의 다리(橋, Bridge) 역할을 하는데
- PMON, SMON, DBWR, LGWR, CKPT, Others 중에서
- Redo Log Buffer 와 Redo Log files 의 다리 역할을 하는 프로세서는 LGWR

(38:40)
그리고 Instance 에 있는 Database Buffer Cache에는
- 데이터베이스 (디스크) 안에 있는 데이터 파일 안의 내용들이 올라가는데
- Database Buffer Cache도 한정된 공간이기 때문에
- 공간이 부족할 때에는 그 안에 있는 내용들이 디스크로 내려가 주어야 한다.
- 그럴 때 다리 역할을 해주는 것은 DBWR

(39:20)
- 그리고 PMON, SMON, CKPT(Checkpoint) 에 대해서는 나중에 배우는데
- 얘네가 좀 머리가 아프다.
- 특히 CKPT

(39:40)
- 아래 중간 부분 회색 데이터베이스 상자 오른쪽의 Archived Log files 도
- 공간이 한정되어 있다.
- Redo Log Buffer 와 

(40:54)
- Instance 안의 Shared Pool 은 크게 2 가지 공간으로 나뉜다.
- Library Cache 와 Data Dictionary Cache
- (Dictionary = 오라클을 관리하기 위한 사전)

- 이 Shared pool은 그 이름답게
- 데이터를 메모리에 올려 놓고 공유하는 역할을 하는 곳이라고 보면 된다.
- Libarary Cache 에서는 SQL 문장을 공유하고
- Data Dictionary table은, 사용자가 생성한 테이블이나 유저 정보를 관리하는 테이블
- 그 Data Dictionary table 에 관한 정보는 원래 Data files 에 저장되어 있는데
-  그런 정보들을 Shared Pool 의 Data Dictionary Cache 에 올려놓고 조작하든 관리하든 함
(나중에 배운다)

(42:40)

그림 맨 왼쪽의 가장 위 User process는
- 사용자가 오라클에 접속할 수 있도록 하는 툴
(SQL Deveploper, SQL plus, 파이썬에서 오라클로 접속할 때 파이썬 프로그램이 떠 있는 곳 등이 User Process)

(43:16)
- 그리고 유저가 오라클에 접속하는 순간 나를 위한 비서가 1:1 로 따라붙는데 그게 바로 Server process
- Server process가 뜨지 않고는 오라클에 접속을 할 수가 없다.
- Server process 의 하는 일:
  User process가 SQL 문장을 수행하는 순간 SQL 문장이
  Server process 에게 날아가고 > Server process 가 그 SQL 문장을 받아서 처리한다.
  Server process 는 SQL 문 처리기
  일종의 컴파일러 같은 거라고 생각하면 된다.
- Server process 에는 PGA 라는 영역이 있는데 (Program Global Area 라는 메모리 영역)
  그 안에서는
  커서를 확보하고(SQL 문장은 무조건 커서라는 메모리를 확보한 다음에 수행할 수 있다)
  group by, sort, join 등의 작업이 이루어진다.

(45:51)
- Instance 중에서
      - Java Pool = Java 관련된 Virtual Machine 이 돌아가는 메모리 영역
      - Large Pool = 병렬처리, 프로세서를 여러 개 띄워 분배해서 처리하는 일을 여기서 하고
         백업 리커버리할 때 RMAN이라는 프로그램도 여기서 돌아간다.
      - Steams Pool = 동기화, 싱크를 맞춰주는 작업을 함

'오라클 아키텍처' 카테고리의 다른 글

2023년 12월 7일 6교시  (0) 2023.12.11
2023년 12월 7일 5교시  (0) 2023.12.11
2023년 12월 7일 4교시  (0) 2023.12.11
2023년 12월 7일 3교시  (0) 2023.12.11
2023년 12월 7일 1교시 QUESTION.  (0) 2023.12.11

관련글 더보기