한국어

About_LINUX

오라클 데이터베이스 튜링

2003.11.06 12:53

jun 조회 수:4986

Oracle7 : Performance Tuning Workshop 정리 및 예상문제

제 1 장

1. 다음중 server perfomance tuning의 목표를 세우기에 적당한 질문은?
  (1)하루에 몇 건의 주문이 발생합니까?
  (2) 당신이 맡은 일은 무엇입니까?
  (3) 직원관리를 위한 직원테이블에서 그 직원의 부서번호는 꼭 알아야 합니까?
  (4) 이 서버의  liscense user는 몇 명입니까?

2. 다음중 analyze 명령으로 populated 되는 statistics 정보를 복 수 있는 dictionary는?
  (1) DBA_TABLES
  (2) DBA_INDEXES
  (3) DBA_TAB_COLUMNS
  (4) DBA_HISTOGRAMS

3. 다음중 file의 사용에 대한 정보를 monitor할 수 있는 것을 모두 고르시오.
  (1) report.txt
  (2) V$FILESTAT
  (3) FILE I/O monitor screen in Server Manager
  (4) X$FILEIO table

4. 다음 query는 무엇을 알아보기 위함인가?
  SELECT sum (sharable_mem) FROM V$db_object_cache
  (1) peak time시의 각 사용자의메모리 사용량
  (2) Stored procedure와 같은 공유 object의 dictionary cache의 메모리 사용량
  (3) Stored porcedure와 같은 공유 object의 library cache의 메모리 사용량
  (4) 공유되는 sql 문장의 library cache 메모리 사용량

5. 다음중 large object를 위해 미리 예약해 두는 library cache의 size를 나타내는   parameter는?
  (1) SHARED_POOL_SIZE
  (2) CURSOR_SPACE_FOR_TIME
  (3) SHARED_POOL_RESERVER_SIZE
  (4) SHARED_POOL_RESERVED_MIN_ALLOC

6.DB_BLOCK_LRU_EXTENDED_STATISTICS란 parameter는 무엇을 측정하기 위함인가?
  (1) database buffer cache에 buffer를 감소시켰을때의 손실
  (2) Shared pool 에 buffer를 감소시켰을때의 손실
  (3) database buffer cache에 buffer를 증가시켰을때의 이득
  (4) Shared pool 에 buffer를 증가시켰을때의 이득

7. 다음 중 database bolck의 적정한 pctfree를 setting하기 위해 알맞은 공식은?
      a = average update amount
      b = average row length
  (1) 100* (b/a+b)
  (2) 100*a/(a+b)
  (3) 100*(a+b/a)
  (4) 100*(a+b)

8. row migration을 해결하기 위해 하는 작업의 순서는?
  -- cahined_rows 테이블의 rowid에 해당하는 row로 임시 테이블을 만든다. ( )
  -- 임시테이블에 있는 row를 원래의 테이블로 다시 insert한다 ( )
  -- chained_rows 테이블의 rowid에 해당하는 row를 원래의 테이블에서 삭제 ( )
  -- analyze table ~ list chained rows ( )

9. full table scan의 perfomance를 향상시키기 위한 방법이 아닌 것은?
  (1) DB_FILE_MULTIBLOCK_READ_COUNT를 증가시킨다.
  (2) ALTER TABLE table명 CACHE
  (3) SELECT /*+ FULL (테이블명) PARALLEL (table명, degree) */...
  (4) ALTER SESSION SET OPTIMIZER GOAL = RULE

10. Indexed column의 update시 rollback entry가 더 많이 필요한 이유는?
  (1) update 되지 않은 column들 모두에 대한 rollback entry가 필요하기 때문에
  (2) old data, new data 에 대한 rollback entry가 필요하기 때문에
  (3) old data, old index, new index에 대한 rollback entry가 필요하기 때문에.
  (4) rowid만 저장되기 때문에

11. report.txt 파일에서 undo segment, trans_tbl_gets, trans_tbl_waits 에 대한  정보를 보고 monitor 할수 있는 사항은?
  (1) rollback segment 에 대한 contention
  (2) block transaction slot에 대한 contention
  (3) shared pool에 대한 contention
  (4) dispatcher에 대한 contention

12. 다음 중 checkpoint시 발생하는 상황을 모두 고르시오.
  (1) LGWR이 datafile의 header를 update한다.
  (2) LGWR이 log buffer를 flush 한다.
  (3) ARCH이 log file을 archive한다.
  (4) DBWR이 dirty block을 datafile에 write한다.

13. Foreign key constraint가 있는 Master-detail관계의 테이블에서 master 테이블의
    DML시 child테이블에 table lock 이 걸리는 현상이 발생했다. 해결책은?
  (1) RELEASE TABLE LOCK명령을 사용한다.
  (2) Child 테이블의 foreign key column에 index를 생성한다.
  (3) Master 테이블의 primary key column에 index를 생성한다.
  (4) Child 테이블의 primary key column constraint를 제거한다.

14. 다음 중 OLTP 위주의 시스템에서 performance issue중 적당하지 않은 것은?
  (1) code 의 share
  (2) bind variable보다 literal을 주로 사용한다.
  (3) constraint 를 충분히 활용한다.
  (4) dynamic space allocation보다는 explicit하게 allocate한다.

15. 다음 중에서 bitmap index를 사용하기에 적당한 경우를 모두 고르시오.
  (1) update가 빈번한 table
  (2) column의 cardinality 가 낮은 경우
  (3) table의 크기가 매우 클 때
  (4) index 사용공간을 줄이고 싶을때

16. 다음중 sort를 유발하지 않는 문장은 ?
  (1) ORDER BY
  (2) DISTINCT
  (3) UNION
  (4) UNION ALL

17. SORT_AREA_SIZE라는 PARAMETER에 대한 설명중 옳지 않은 것은?
  (1) 이공간이 부족할 경우 temporary segment를 사용한다.
  (2) dedicated server를 사용할 경우 SGA내에 잡힌다.
  (3) parallel query에서는 각각의 query server가 각각 sort area를 사용한다.
  (4) 일반적으로 sort_area_retained_size와 같은 크기로 잡는다.

18. MTS에서 어떠한 사용자가 어떤 process를 사용하는지 확인할 수 있는 dictionary는?
  (1) V$DISPATCHER  
  (2) V$MTS  
  (3) V$CIRCUIT  
  (4) V$QUEUE

19. 다음중 rollback segment 를 절약하기 위해 취하는 조치중 적당하지 않은것 모두?
  (1) 사용자들에게 정기적으로 commit하라고 주의를 준다
  (2) SQL*Loader 로 direct path loading시에 ROWS와 COMMIT interval를 set
  (3) Import할때 buffer_size와 commit=y option을 setting
  (4) rollback segment 를 drop 하고 다시 만든다.

20. When all redo log groups are filled, the database hangs until checkpoint  completes.  ( T / F )
  

[ 해 답 ]

1.(1)  
2.(1),(2),(3),(4)  
3.(1),(2),(3)  
4.(3)  
5.(3)  
6(3)  
7.(2)  
8.(2)(4)(3)(1)  
9.(4)  
10.(3)  
11.(1)  
12.(1),(2),(4)  
13.(2)  
14.(2)  
15.(2),(3),(4)  
16.(4)  
17.(2)  
18.(3)  
19.(2),(4)  
20. T



제 2 장

1. Report.txt에서  undo statistics section의 trans_tbl_waits의 의미는?

2. Cache buffers chains latch의 contention을 발견했다. 조치는?
        1) increase buffer cache <<<<
        2) increase shared pool
        .....
        .....

3. report.txt에서 db_block_lru_latches를 볼 수 있는 section은?
        1) latch statistics
        2) initail parm
        3) wait
        4) i/o stat

4. buffer cache의 size결정요소는? (select 2)
        1) db_block_buffers
        2) db_block_size
        3) cache_size
        4) maxextents
        5) minextents

5. redo latch requests의 target 값은 어느정도 이하로?
        1)1%
        2)3%
        3)5%
        4)10%

6. 자주 변경되는 data에 대한 long Query시
        which aspects of rbs tuning should you address?
        1) 큰 rbs를 생성
        2) ,,,,
        3) ....
        4) /////

7. 다음 SQL문을 실행하면 display되는 것은?
        select count(DISTINCT
                substr(rowid,15,4)||substr(rowid,1,8))
        from emp;
        1) # of rows
        2) block header
        3) # of blocks that contain rows
        4) rowid

8. What return the % of parse calls which find a cursor to share?
        1) select gethitratio
           from v$librarycache
           where ----- = 'SQL AREA';

9. Q's what view to find total rows sorted?
        1) sysstat
        2)sesstat
        3)sqlarea
        4)rowcache

10. Q's what view to find current dispatcher & shared server usage?
        1)v$circuit
        2)v$dispatcher
        3)v$process

11. @'s to avoid th edynamic sapce allocation in OLTP?
        1) explicitly pre-allocate space
        2) next extent값을 크게
        3)...
        4)...

12. What views affected by running following stmt that analyze table _________; (Choose 3)
        1)dba_users
        2)dba_tables
        3)dba_index
        4)dba_tab_columns
        5)index_stat
        6)index_histograms

13. 다음중 Sort operation이 필요한 Stmt는?

14. cache hit ratio는 normal running상태에서는 80%이상.

15. rbs delete시 performance degrade를 겪는다. 어떤 방법이 성능을 향상시키는지 ?
    ---->       Use truncate

16. chained row가 많다.-----> reorg한다.

17. v$librarycache의 gethitratio는 90%이상.

18. buffer cache hit ratio를 계산하는데 필요한 factor들은? (Choose 3)
        1)db block gets
        2)consistent-gets
        3)physical reads

19. PK가 걸린 col을 update시 child table에 share lock이 발생...어떻게 조치?
        FK에 indexing한다.

20. log file contention은 어느 View에서 확인?

21. V$cache view가 가장 유용하게 사용되는 곳은?
        1)OPS 2)MTS 3)분산DB 4).....

22. UTLBSTAT/UTLESTAT 수행시 결과 FILE은?
       REPORT.TXT

23. 성능비교를 위해 UTLBSTAT/UTLESTAT을 두번수행하려한다. 먼저 할일은?
        처음 수행시 발생한 REPORT.TXT를 RENAME시킨다.

24. USER SESSION KILL하기 위해 필효한 정보는?

25. 다음중 FILE I/O를 확인할 수 있는 것은?
        V$FILESTAT, REPORT.TXT, PERFORMANCE MANAGER

26. ORACLE LOCK MANAGER가 하는 일은?

27. 인접한 FREE SPACE를 COALESCING해주는 것은? ORACLE TABLESPACE MANAGER

28. CURSOR_SPACE_TIME_OUT=TRUE로 지정하면 어떻게 되는가?

29. TRIGGER와 PACKAGE를 많이 사용하면 어떤 TABLESPACE를 증가시켜야 하는지? (2문제 출제)

30. STRIPING BY HAND사용시 효과가 나타나는 경우는?


31. PL/SQL PACKAGE사용시의 잇점은?

32. ROLLBACK SEGMENT의 MINEXTENTS의 최소개수는?
        - 2개

33. TKPROF에서 RECURSIVE SQL문을 무시하는 OPTION은?

34. FULL TABLE SCAN의 성능을 높이는 방법은?

35. SESSION LEVEL에서 OPTIMAIZER MODE의 지정은?

36. REDO LOG GROUP의 효율적인 배치는?

37. IMMEDIATE MISS/IMMEDIATE GETS의 값이 1%보다 크면 조치는?
        ---> LOG_SIMULTANEOUS_COPIES값을 증가시킴.

38. SORT JOB이 SORT_AREA_SIZE보다 크면 어떤 현상이 발생하는지?

39. MTS에서 UGA는 어디에 속하는지?

40. SHARED POOL을 구성하는 요소는?

41. SHARED POOL을 구성하는 메인요소 2가지는?

42. TEMPORARY TABLESPACE구성시 권고사항들은?

43. SORT_DIRECT_WRITE에 대해서?

44. V$LIBRARYCACHE의 RELOADS의 의미는?

45. DB_BLOCK_LRU_EXTENDED_STSTISTICS는 다음중 어떤경우에 사용하는가?
        1) TO EVALUATE THE EFFECT OF ADD MORE BUFFERS
        2) .......

46. BUFFER CACHE SIZE가 실제 물리적인 메모리보다 크게 잡혀있는 경우에 어떤 일이 발생하는가?
        ----> SWAPPING & PAGING

47. roll back segment를 하나 혹은 여러개의 tablespace로 나누어야 하는 경우?(2개)
        - you cannot offline tablespace that contains an active rollback segment
        - rollbacksegment may fragment

48. SHARED_POOL_RESERVED_SIZE 의 최대값?
        - maximum은 half of SHARED_POOL_SIZE

49. buffer cache contention을 알수 있는것 ?
        - buffer_busy_waits

50. cache hit ratio 계산?
        -  1 - Physical / Logical

51. latch란?
        - If another process waits to access the structure, it has two wait the first process
          to release the latch.

52. 어느 회사에 대한 설명이 나오고 튜닝방법을 물어봄? -개량화된 수치가 나와야 함.

53. package가 언제 library cache에 load되는가?
        - as soon as any part of them is accessed



54. shared pool 사이즈계산에서 shared pool per user per open cursort
        - select sum(250*user_opening) from v$sqlarea;

55. Change indexed value할때 process에 overload 가 많이 걸리는 이유?

56. rollback segment tuning목적(3개)
        - transaction never wait for access to rollback segments
        - should not extend during normal running
        - readers should always see the read-consistent image they need

57. RELOAD란?
        - mean that an object definition loaded for this cursor has been aged out for loack of space

58. DB block을 visit하는 수를 줄이는 가장 좋은 tuning방법? - SQL statement인가?

59. application이 필요없이 많은 block을 접근하여 overload가 발생한다. 튜닝은 어떻게?
        a. resize db block size
        b. increase buffer cache
        c. application rewrite, then buffer cache resize if necessary
        d. buffer cache resize, then application rewirte if necessary

60. DB가 인스톨되고 사용자 들이 접속하려고 하는데 안된다. 접속하려는 instance와 address를 기술해
    주는 부분은? - listener.ora

61. listener.ora, tnsnames.ora 를 고르는 문제도 나옴.



제 3 장

1. Application을 설치한지 1년이 지난후
   Tunning 계획을 세우는데 있어 DBA로서 관심을 가져야 할 항목은?
   1. Manager와 Meeting시 비용을 설명한다
   2. 개발자와 End-User와의 면담을 그들이 자주원하는 Data의 Category를 정의한다.
   .
   .

2. Tunning 절차중 제일 마지막단계
   1. I/O
   2. Latch Contention
   3. Desing
   4. Memory

3. Redo log Buffer의 상태를 보는 View(2가지)
   1. v$roll_stat
   2. v$sysstat
   3. v$waitstat
   4. ..

4. Index생성시 NOSORT Option을 사용하는 경우에 발생하는 절차
  
5. Application이 사용된지 1년이 지났다. DATA가 많아져서 사용자의 Complain이
   발생한다. 이 시점에서 관심을 가져야 할 Tunning Point는?
   1. File I/O
   2. Contetion

6. LibraryCahce의 적정 Hitratio는?
   1.grater than 0.1
   2.less than 0.1
   3.grater than 0.9
   4.less than 0.9

7. Process가 Sort완료시 Sort_retained_size로 Shrink된다.

8. TM Lock발생시 어떤 Process가 관리하는가?
   1. user process
   2. System Process
   3. Background Process


제 4 장

1. 부족시 SHARED_POOL_SIZE를 증가시켜야 하는것(3가지)
1) LIBRARYCACHE
2) DICTIONARY CACHE
3) UGA

2. tuning 계획시 가장 중요한 단계 -> 1
1) design - 프로그램 개발시 tuning 을 가장 고려해야 할 중요한 단계
2) memory
3) I/O

3. user session kill 하기 위해 필요한 컬럼 2가지
1) sid
2) serial#

4.redo log buffer 늘릴때 필요한 패러미터 ->1
1) LOG_BUFFER
2) DB_BLOCK_BUFFER

5.SHARED POOL 구성 중요 두가지
1) LIBRARY CACHE
2) DICTIONARY CACHE

6. FREE SPACE를 coalescing 하는 diagnostic tool?
-> oracle tablespace manager

7.report.txt의 undo static section의 TRANS_TBL_WAITS 컬럼의 의미
-> contention for rollback segment header block

8. cache hit ratio 계산할때 필요한것 3가지
1) db block gets
2) consistent gets
3) physical reads value

9.Oracle uses ( ) to protect access to internal structure such as library cache
-> latch

10. log file I/O content을 보기위한 view? ->2
1) V$LOG
2) V$SYSTEM_EVENT

11. SYSTEM TABLESPACE가 SORT SEGMENT로 쓰이느 것을 막기위해서 대신 사용해야 할
TABLESPACE? -> 2
1) USER
2) TEMP
3)...

12. SESSION LEVEL 에서의 OPTIMIZER MODE 선언 ? -> 2
1) ALTER SESSION SET OPTIMIZER_MODE = ALL_ROWS
2) ALTER SESSION SET OPTIMIZER_GOAL = ALL_ROWS

13. tracking module -> DBMS_APPLICATION_INFO package 이용

14. shared pool 에서 shared SQL area가 위치하는 곳 -> library cache

15. reserved list for large objects ? -> 2
1) SHARED_POOL_SIZE
2) SHARED_POOL_RESERVED_SIZE

16. ROLLBACK SEGMENT 선언시 PCTINCREASE이 가질수 있는 값은 ? ->2
1) 2
2) 0

17.goals of rollback segment tuning 3가지 고르기
1) Transactions should never wait for access to rollback segments
2) rollback segments should not extend during normal runing
3) Readers can always see the read consistent images they need

18. V$WAITSTAT의 undo header 값이 115정도 나왔을때의 의미?
-> content for rollbacksegment header blocks

19. rollback segments 생성시 같은 값으로 잡아주는 패러미터 2가지-> 1,2
1) INITIAL 2) NEXT 3) OPTIMAL .....

20. 큰 transaction시 특정 rollback segment를 사용하도록 하는 명령?
SET TRANSACTION USER ROLLBACK SEGMENT ....

21. lower checkpoint 를 위해 size of your largest redo log file 보다 큰값을 잡아주는 패러미터? 1
1) LOG_CHECKPOINT_INTERVAL
2) LOG_CHECKPOINT_TIMEOUT

21. SHARED SERVER PROCESS 초기 갯수를 정해주는 패러미터? -> 1
1) MTS_SEVERS
2) MTS_MAX_SERVERS

22. SORT NO NEED? -> 4
1) ORDER BY
2) GROUP BY
3) UNION
4) UNION ALL


23. SORT 완료후 SORT_RETAINED_SIZE로 줄어든다.

24. INSTANCE에 LOCK 갯수 지정해주는 패러미터 두가지?
1) ENQUEUE_RESOURCES
2) DML_LOCKS

25. CACHE HIT RATIO 구하는식
1 - (PHYSICAL READS/(DB BLOCK GETS + CONSISTENT GETS))

26. buffer cache가 충분할때 buffer를 얼마만큼까지 줄일수 있나 알아보는 식은? -> 3

1).SELECT SUM(count) ach
FROM sys.x$kcbrbh
WHERE indx >= 20;
                                                                        
2). SELECT SUM(count) ach
FROM sys.x$kcbrbh
WHERE indx < 20;
                                                                        
3). SELECT SUM(count) acm
FROM sys.x$kcbcbh
WHERE indx >= 90;
                                                                        
4). SELECT SUM(count) acm
FROM sys.x$kcbcbh
WHERE indx < 90;

27. utlbstat.sql, utlestat.sql 시 생성되는 화일이름은 항상 report.txt이므로
        실행할때 마다 생성되는 report.txt 화일을 보존할려면, 매번 이름을 바꾸어줘야 한다.(OS 차원에서)

        생성결과화일명을 따로 지정해주는 옵션은 없다.

28. BLOCK SIZE 변경할때 사용되는 DB_BLOCK_SIZE 는 데이터베이스가 생성된후에는
        변경될수 없는 초기화 패러미터임을 명심(관련 2문제 출제)


제 5 장

1. Trans_tbl_wait의 의미문제.
   Rollback Segment와 관련

2. Table의 chained row의 분석 방법
   Analyze

3. 통계분석시 Optmize Mode와 Goal의 사용방법
   instance단위와 Session단위
   Syntax를 구별한느 내용입니다..

4. sort가 완료 되었을때 현상?
   Sort_area_retaine_size로 복귀

5. rollback Segment구성시 stprage Parameter의 유의 사항?
   initial과 next Extent를 같이 한다.

6. 주간에는 On-Line TX이 많이 발생하고
   야간에는 Report를 대량Query가 많이 발생한다..
   Rollback Segment의 구성방법은?
   주간 - 작은 단위의 Rollback Seg를 여러개 적용하고
   야간 - 큰 단위의 Rollback SEG를 구성한다.

7. immediate Get과 Immediate Miss의 비율이 충분치 않으면?
   Log_simmulates_copie를 증가한다.

8. MTS에서의 MAX_server와 MAX_services의 차이점

9. MTS사용시 address지정해 주는 Parameter
   MTS_listener(?)

10. database buffer cache의 Hit ratio 계산방법
   (1 - c/a+b)
   a:? b:? c:?
  
11. report.txt에서 의미없는 측정값의 이유?(Self Test Version에 있는 문제 그대로)
    Kernel code.....