Database초보우낙

면접질문 본문

면접대비

면접질문

오운학 2024. 4. 16. 10:23

DB 면접 예상 질문 — goodbyeanma (tistory.com)

 

 

캐시퓨전

RAC사용자가 어느 노드로 접속시 마지막 commit시점의 데이터를 일관성있게 보여준다

 


Rac장점

노드1이 다운되거나 리스너가 내려가더라도 다른 노드가 살아있다면  계속 DB를 이용할 수 있습니다

또한 노드는 계속 추가하여 확장할 수 있으며. 이론상 100개까지 확장할 수 있습니다.

 

GRD

GRD (Gloval Resource Directory) 약자로 RAC 데터 베이스들의 최신 데이터가 어느 노드에 있는지에 대한 위치정보를 가지고 있는 메타 데이터 저장소입니다

 

 

RAC 운영할때 필요한 IP 3가지

  1. public ip  :  외부에서 접속할 사용하는 ip
  2. private ip  :  노드들끼리 통신할 사용하는 ip
  3. virtual ip  :  하나의 노드가 죽었을때 다른 노드로 failover 하기 위해 필요한 ip
  4. scan ip  :  scan listener ip주소

(failover -> 내가 접속한 노드가 죽었을 살아있는 다른 노드로 자동으로 접속되는 기능 )

 


프라이머리키와 유니크키에 대한 설명

Pk(기본키)는 유일한 값이며, null을 입력할 수 없다

Fk(외래키)는 다른 테이블의 기본키나 후보키를 참조하며, 참조하는 테이블의 값은 항상 존재하고 일관된 값을 유지

Uk(고유) 중복된 값을 허용하지 않으며, 기본키와 유사하지만 기본 키가 테이블의 기본 식별자 역할을 하지만 Uk는 해당 열에 대한 중복을 방지한다

NotNull은 특정열에 null값이 들어올 수 없도록 설정

 


익스포트 종류 4가지

  1. SQL 익스포트: 데이터베이스에서 SQL 쿼리를 사용하여 데이터를 추출하는 방법. 텍스트 파일로 데이터를 저장할 수 있음.
  2. CSV 익스포트: 데이터를 쉼표로 구분하여 텍스트 파일에 저장하는 방법. 데이터 공유와 분석에 용이.
  3. XML 또는 JSON 익스포트: 데이터를 XML 또는 JSON 형식으로 내보내는 방법. 데이터의 구조를 표현하는 데 유용.
  4. 특정 데이터베이스의 내장 익스포트 기능: 데이터베이스 시스템에 내장된 익스포트 기능 활용. 데이터베이스 관리 도구나 명령행 인터페이스를 통해 사용.

 

1 당신의 블로그가 있으면 보여주세요
         



2 영어로 된 문서를 주고 '해석해 보세요'라고 합니다.



3 언두와 리두의 차이점은 무엇인가요?
언두는 취소를 위한 data
리두는 복구를 위한 data

 



4 인덱스가 필요한 칼럼은 어떤 컬럼입니까?
자주 검색되는 컬럼
조인이나 그룹화에 사용되는 컬럼
정렬이나 수누이 매기기 작업에 사용되는 컬럼

 

 



4-2 인덱스가 필요없는 컬럼은?
데이터 분포가 균일한 경우
자주 업데이트 되는 컬럼
작은 테이블

 



5 백업 & 복구 실습은 많이 했습니까?

 



6 캐쉬퓨전을 설명해보세요 

RAC를 사용하는 사용자가 어느 노드로 접속하던지간에 마지막으로 commit된 일관된 데이터를 볼 수 있게  보장해주는 오라클의 메커니즘입니다

 

 



7 RAC 설치해 보셨습니까? 

 



8 튜닝해 본 경험은 있나요?

 



9 OWI가 무엇인가요? 

 Oracle Wait Interface 는 용어다. 이책에서는 프로세스가 겪는 대기현상을기록하고 관찰하는일련의 기능과  인터페이스, 그리고 방법론을 통칭하여 OWI라고 부르고 있다. 



10 락이랑 랙치를 비교 분석해서 말해 보세요. 

   LATCH 래치  LOCK 락 
 목적  메모리(SGA)를 동시에 쓸 때 Latch가 보호  공유 리소스와 사용자 데이터를 보호
 사용범위  SGA 내부 데이터 구조에만 적용  메모리(SGA)+데이터베이스를 보호
 획득방식  willing-to-wait, no-wait  null, row share, row exclusive, share, share row exclusive, exclusive
 범위  shared pool에 정보가 존재, 
자기 인스턴스(node)에서만 볼 수 있음  
--> 인스턴스 레벨로 작동
 데이터베이스에 정보가 존재,
 모든 인스턴스(node)에 적용 (GCS같은것)
 --> 데이터베이스 레벨로 작동
 복잡도  구현이 쉬움  구현이 어려움
 지속기간  아주 짧은 시간만 지속, max=2sec  commit 하기 전까지는 계속 지속됨 
 (트랜잭션동안 지속) 
 큐 (Queue)  순서와 상관 없이 latch를 획득, 순서 보장 안함  queue로 관리되기 때문에 순서대로 lock을 획득
 데드락  deadlock이 발생되지 않도록 구현  deadlock이 발생될 가능성이 높음

 



11 설명할 수 있는 대기 이벤트가 있으면 해보세요.

 

구분이벤트설명

구분 이벤트명 설명
라이브러리 캐시 부하 latch : shared pool 라이브러리 캐시에서 SQL 커서를 찾고 최적화하는 과정에서 경합이 발생하여 대기
latch : library cache 라이브러리 캐시에서 SQL 커서를 찾고 최적화하는 과정에서 경합이 발생하여 대기
library cache lock SGA 내의 library cache를 참조하기 위한 대기
library cache pin 수행 중인 SQL이 참조하는 오브젝트에 다른 사용자가 DDL 문장을 수행할 때
데이터베이스 call과 네트워크 부하
( 애플리케이션과 네트워크 구간에서 소모된 시간에 의해 나타난 이벤트)
SQL*Net message from client Client로부터 다음 명령이 올 때까지 idle 상태로 기다릴 때 발생
SQL*Net message to client 메시지를 보냈는데 메시지를 받았다는 신호가 늦게 도착하는 경우, 혹은 클라이언트가 너무 바쁠 경우
SQL*Net more data to client 메시지를 보냈는데 메시지를 받았다는 신호가 늦게 도착하는 경우, 혹은 클라이언트가 너무 바쁠 경우
SQL*Net more data from client 클라이언트로부터 더 받을 데이터가 있는데 지연이 발생한 경우
디스크 부하
( 디스크 I/O 발생할 때 나타나는 대기 이벤트)
db file sequential read Single Block I/O. 한 번의 I/O call에 하나의 데이터 블록만 읽음. 인덱스 블록을 읽을 때 발생
db file scattered read Multi Block I/O. Table Full Scan 또는 Index Fast Full Scan 시 나타남
direct path read direct path I/O를 수행하기 위해 대기
direct path write direct load 작업의 수행으로 인한 대기
direct path write temp 정렬 작업을 위해 임시 영역을 읽고 쓰는 경우 temp 이벤트를 대기한다.
direct path read temp 정렬 작업을 위해 임시 영역을 읽고 쓰는 경우 temp 이벤트를 대기한다.
db file parallel read 여러 개의 데이터 파일로부터 연속되지 않는 싱글 블록들을 동시에 읽어들일 때 발생
버퍼 캐시 경합
(버퍼 캐시에서 블록을 읽는 과정에서 경합이 발생하여 나타나는 대기 이벤트)
latch : cache buffers chains 동일 테이블이나 인덱스를 여러 세션이 동시에 스캔
latch : cache buffers lru chain 다른 테이블이나 인덱스들을 여러 세션이 동시에 스캔
buffers busy waits 동일 블록에 대한 동시 액세스에 따른 경합
free buffer waits free buffer를 할당받기 위해 DBWR의 Write를 대기
LOCK 관련 대기 이벤트 enq : TM - contention DML을 수행할 때 TM 락을 획득하는 과정에서 경합이 발생하여 대기
enq : TX - row lock contention 로우 레벨 락에 의한 경합이 발생하여 대기
enq : TX - index contention 동시에 여러 세션이 인덱스가 생성되어 있는 테이블에 대해서 많은 양의 DML을 수행하는 경우에 주로 발생
enq : TX - allocate ITL entry ITL 엔트리 부족에 의한 TX 락 경합이 발생하여 대기
latch free 특정 자원에 대한 래치를 여러 차례(약 2000번) 요구했지만 해당 자원이 계속 사용 중이어서 잠시 대기 상태로 빠질 때마다 발생
기타 대기 이벤트 log file sync 변경 log buffer를 log file에 반영하는 동안 대기
log file switch completion 현재 사용 중인 redo log file이 꽉 차서 더 이상 여유 공간을 확보할 수 없을 때 발생
log buffer space Log buffer를 할당 받기 위해 LGWR의 write를 대기


12 DB file sequential read 와 DB file scattered 이벤트 차이점은 무엇있가요?

db file sequential read Single Block I/O. 한 번의 I/O call에 하나의 데이터 블록만 읽음. 인덱스 블록을 읽을 때 발생
db file scattered read Multi Block I/O. Table Full Scan 또는 Index Fast Full Scan 시 나타남


13 옵티마이저란? 

가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심엔진



14 드라이빙 테이블이란? 

JOIN시 먼저 엑세스돼서 ACCESS PATH를 주도하는 테이블
나중에 엑세스 되는 테이블은 드리븐 테이블 이라고 한다

결정규칙 

    * 인덱스를 이용한 엑세스 방식이 전체 테이블 엑세스 방식보다 우선순위가 높다

    * 조인 컬럼에 대한 인덱스가 양쪽 테이블에 모두 존재할 때, 우선 순위가 높은 테이블을 선택

    * 조인 컬럼에만 인덱스가 존재하는 경우에는 인덱스가 없는 테이블을 먼저 선택하여 조인 수행

    * 만약 조인 테이블의 우선 순위가 동일하지 않다면 FROM 절에 나열된 테이블의 역순으로 수행

 



15 대용량 데이터베이스 수료하셨네요, Nested Loopjoin을 설명해 보세요

 

NL 조인은 두 테이블이 조인을 할 때, 드라이빙 테이블( Outer 테이블)에서 결합 조건에 일치하는 레코드를 내부 테이블(Inner Table)에서 조인하는 방식이다.

 

NL 조인의 특징

  • Random 액세스 위주의 조인 방식이다. 따라서 인덱스 구성이 아무리 완벽하더라도 대량의 데이터를 조인할 때 매우 비효율적이다.
  • 조인을 한 레코드씩 순차적으로 진행한다는 점이다. 
  • 인덱스 구성 전략이 특히 중요하다. 조인 컬럼에 대한 인덱스가 있느냐 없느냐, 있다면 컬럼이 어떻게 구성됐느냐에 따라 조인 효율이 크게 달라진다. 
  • 이런 여러가지 특징을 종합할 때, NL 조인은 소량의 데이터를 주로 처리하거나 부분범위처리가 가능한 온라인 트랜잭션 환경에 적합한 조인 방식이라고 할 수 있다.


16 이력서에 Optimizing Oracle Optimizer 과정 공부했다고 되어 있네요, Histogram을 설명해 보세요

 

히스토그램은 컬럼 값별로 데이터 비중 또는 빈도를 미리 계산해 놓은 통계정보다. 실제 데이터를 기반으로 계산해서 데이터 분포가 거의 정확하다.

 



17 정규화에대히서 설명하세요

정규화의 목표는 테이블간에 중복된 데이터를 허용하지 않는다

중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있으며 DB의 저장용량을 줄일 수 있다

 

[1정규화]

테이블의 컬럼이 원자값을 갖도록 테이블을 분해하는 것

 

[2정규화]

1정규화를 진행한 테이블에 대해서 완전 함수 종속을 만족하도록 테이블을 분해하는것

기본키의 부분집합이 결정자가 되어선 안된다는것을 의미

 

[3정규화]

2정규화를 진행한 테이블에 대해서 이행적 종속을 없애도록 테이블을 분해하는것
이행적 종속이라는것은  A -> B , B -> C 가 성립될때 A->C가 성립되는것을 의미한다

 



18 다른 DB제품군에 대해 알고 있으신가요?        

[기술면접]DB종류와 특징 장단점 (velog.io)

[DB] DB 종류 및 장단점 (tistory.com)

 

* DB종류

1. 관계형 데이터베이스 RDB

- Oracle, Mysql, MS-SQL, PostgreSQL, MariaDB 등

 

2. NoSQL (Not Only SQL) 

- Mongodb, cassandra, hbase 등

 

 

* RDBMS, NoSQL 장단점

1. RDBMS 

 장점 : 업무 변화에 대한 적응력이 높아 변화하는 업무에 쉽게 활용하며 유지보수가 편리하다. 따라 생산성도 향상된다.                 명확하게 스키마가 정의되어 있다. 데이터 무결성을 보장한다.

 단점 : 다른 DBMS보다 더 많은 자원이 활용되어 시스템의 부하가 높다.

 

2. NoSQL

 장점 : 스키마가 없기에 유연하게 작성 가능. 데이터가 애플리케이션이 필요로하는 형태로 저장되어 읽는 속도가 빠르다.

 단점 : 유연성으로인한, 데이터 구조 결정이 늦춰질 수 있음. 데이터가 여러 컬렉션에 중복되어있어, 수정(Update)해야하는 경우 모든 컬렉션에서 수행하여야함.  

 



19 오라클 파티션 테이블을 사용해본적이 있는가? 개념은 알고 있는가?    

 

테이블 또는 인덱스 데이터를 특정 컬럼(파티션 키) 값에 따라 별도 세그먼트에 나눠서 저장하는 것

하나의 큰 테이블을 물리적으로 나눠놓은 것, 물리적으로 나눠놨지만 논리적으로는 하나의 테이블로 간주된다

 

사용이유

           1 ) 가용성 증가 : 특정 Block 깨진경우

           2 ) 관리비용 감소 : 특정 Partition 만 작업하는 경우

           3 ) 성능 향상 : 해당 파티션만 scan하여 성능 향상된다.

                                 

 

파티션을 이용하면 대량 추가/변경/삭제 작업을 빠르게 처리할 수 있다.



20 (무엇무엇에 대한) 개념에 대해 설명하세요

 

 



21 오라클 백업과 복구전략

 

x



22 데이타 마이닝은 무엇이면 어떤 노력을 해왔나? 또는 어떤 노력을 할 것이냐?  

 

자료저장소에 저장되어 있는 방대한 양의 데이터로부터 의사결정에 도움이 되는 유용한 정보를 발견하는 일련의 작업들의 집합.

 



23 PK 와 FK (AK) 에 대해 아는대로 설명        
24 제약조건에 대해서 아는대로 설명          
25 옵티마이져에 대해 아는대로 기술          
26 트랜젝션의 4가지 특성에 대해 아는대로 기술        
27 SELECT SS FROM TABLE WHERE AA=AA ....  과 같은 구분의 처리 순서는?    
28 오라클의 커서는 무엇인가?          
29 RBO 는 무었인가?            
30 부분범위처리는 무엇이며, 왜 필요한가?        
31 트리거란?            
32 시노님(SYNONYM) or 시노늄이란?          
33 시퀀스와 캐쉬는?
34 PL/SQL 에 관한 경험이 있는가?
35 바인딩 쿼리는 무엇인가?
36 오라클 설치시 문제점 또는 까다로웠던점, 어려웠던 점.      
37 테이블 스페이스에 관해 얘기해 보라         
38 인덱스의 장단점             
39 로우를 몇개나 다뤄봤는가?(1억로우 이하는 데이타로도 안친다더군요)     
40 백업 스케줄링은 해본적이 있는가?
41 SGA의 구조에 대해서 설명하시오
42 DB buffer cache size 조절하는 Parmeter는?
43 O/S 상에서 rm 명령어로 Online redo log file을 지웠을 때 조치는?
  (상황 : Curnent 2번이고, Inacfive 상태인 1번에 해당하는 파일을 지운상태)
44 rm 명령어로 Data file을 삭제 했을 때 조치는? (system file X)
45 temp file 삭제시 DB는 정상 open 되는가?
46 1억건의 Updata문을 잘못 사용했을 때 그 내용을 볼 수 있는 방법은?
  (Flash back Query 말고, 현재상태는 Archive)
47 Data buffer chain에 대해서 설명해보시오
48     DBE와 DBA의 차이점에 대해 설명해보시오

'면접대비' 카테고리의 다른 글

면접문제  (0) 2024.04.15