달력

11

« 2024/11 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2019. 2. 9. 23:22

Resource Manager DB2019. 2. 9. 23:22

□ RM(Resource Manager)이란?

○ 정의

비효율적인 OS 관리로 초래된 문제들(자원의 부적절한 할당, 비효율적인 스케쥴링 등)을 해결하기 위해 Oracle DB server가 자원 관리 결정을 더 잘 하도록 하는 것

○ RM 기능

- 사용자 수나 시스템 부하에 관계없이 사용자에게 자원처리 최소량 보증

- 각각 다른 사용자나 응용프로그램에 CPU time 비율을 할당하여 가용 자원 분배. DW에서는 Batch job보다ROLAP 응용프로그램에 높은 비율이 주어짐

- 사용자 그룹(DB사용자를 리소스 그룹별로 그루핑)이 수행하는 작업의 병행성 수준을 제한

- Active Session Pool(동시에 활성화 되는 세션의 최대치로 구성) 생성. 최대치를 넘어서는 세션은 대기하며,해당 세션에 대해 소멸시간 설정가능

- 관리자 정의 기준에 따라 사용자를 다른 그룹으로 자동 전환 가능(특정 사용자 그룹이 지정된 시간보다 긴 세션을 수행할 경우, 해당 세션을 다른 사용자 그룹으로 옮길 수 있음)

- Optimizer가 추정한 특정 작업(규정된 시간제한을 넘어서는 작업)의 수행 방지

- Undo Pool 생성(한 그룹의 사용자들이 이용하는 undo 스페이스의 양으로 구성)

- session idle time의 양을 제한

- 자원할당을 위한 특정 메서드를 사용하기 위해 instance를 설정instance의 재시작이나 종료 없이 daytime이나 nighttime 설정으로 메서드 변경 가능)

- long-running session 이나 long-running SQL statement 취소를 허용

○ RM 요소

Element

Description

Resource consumer group

자원 처리 요청에 의거 그루핑된 사용자 session

Resource plan

Resource consumer grouop에 어떻게 자원을 할당할 것인지 구체화

Resource allocation method

데이터베이스 RM이 자원을 할당할 때 사용하는 메서드/정책. 데이터베이스는 가용한 자원할당 메서드를 제공하고 관리자가 어떤 것을 사용할지 선택

Resource plan directive

Resource consumer group과 특정 plan을 연관시키고Resource consumer group에게 어떻게 자원을 할당시킬지 정하는데 사용

○ Resource Plan 이해

- 기본형태

(출처: http://docs.oracle.com/cd/B19306_01/server.102/b14231/dbrm.htm#i1007556)

하나의 플랜에 따라 각 Resource consumer group이 할당받는 CPU자원이 다름. 만약 SALES group이 자원을 사용하지 않으면 다른 group이 자원을 사용하도록 허용해야함.

- Subplan이 있는 형태

 

하나의 플랜 아래 Subplan을 두는 것이 가능하며, 이 플랜에 Resource consumer grouop을 세분하할 수 있음. Subplan이나 Resource consumer grouop은 하나 이상의 부모(플랜)을 가질 수 있음. ex) 위 그림에서GREAT_BREAD 플랜이 DAY plan과 NIGHT plan으로 나누어졌을 경우 두 플랜 모두 SALES_TEAM Subplan을 멤버로 두는 것이 가능

* 위 그림에는 없으나 항상 Default로 OTHER_GROUPS가 설정되어 있어야 함

○ DBMS_RESOURCE_MANAGER 패키지

데이터베이스 RM을 관리할 수 있는 시스템 권한(ADMINISTER_RESOURCE_MANAGER)이 있어야 함. 주로 DBA가 ADMIN 옵션으로 해당 권한을 가지고 있음. 권한 획득 후에는 DBMS_RESOURCE_MANAGER 패키지에 있는 프로시져 사용 가능

Procedure

Description

CREATE_SIMPLE_PLAN

Creates a simple resource plan, containing up to eight consumer groups, in one step. This is the quickest way to get started when you use this package.

CREATE_PLAN

Creates a resource plan and specifies its allocation methods.

UPDATE_PLAN

Updates a resource plan.

DELETE_PLAN

Deletes a resource plan and its directives.

DELETE_PLAN_CASCADE

Deletes a resource plan and all of its descendents.

CREATE_CONSUMER_GROUP

Creates a resource consumer group.

UPDATE_CONSUMER_GROUP

Updates a consumer group.

DELETE_CONSUMER_GROUP

Deletes a consumer group.

CREATE_PLAN_DIRECTIVE

Specifies the resource plan directives that allocate resources to resource consumer groups or subplans in a plan.

UPDATE_PLAN_DIRECTIVE

Updates plan directives

DELETE_PLAN_DIRECTIVE

Deletes plan directives

CREATE_PENDING_AREA

Creates a pending area (scratch area) within which changes can be made to a plan schema

VALIDATE_PENDING_AREA

Validates the pending changes to a plan schema

CLEAR_PENDING_AREA

Clears all pending changes from the pending area

SUBMIT_PENDING_AREA

Submits all changes for a plan schema

SET_INITIAL_CONSUMER_GROUP

Sets the initial consumer group for a user. This procedure has been deprecated. The database recommends that you use the SET_CONSUMER_GROUP_MAPPING procedure to specify the initial consumer group.

SWITCH_CONSUMER_GROUP_FOR_SESS

Switches the consumer group of a specific session

SWITCH_CONSUMER_GROUP_FOR_USER

Switches the consumer group of all sessions belonging to a specific user

SET_CONSUMER_GROUP_MAPPING

Maps sessions to consumer groups

SET_CONSUMER_GROUP_MAPPING_PRI

Establishes session attribute mapping priorities

* 플랜 정보 보는 법

  - Viewing plan information:

select plan, comments from dba_rsrc_plans;

  - Viewing current consumer group for sessions:

select sid, serial#, resource_consumer_group from v$session;

  - Viewing the currently active plans:

alert system set resource_manager_plan = 플랜명;

select name, IS_TOP_PLAN from v$rsrc_plan;

  - Viewing consumer group Granted to user or role:

select * from dba-rsrc_consumer_group_privs;

  - Viewing directive:

select plan, max_est_exec_time, comments, type from dba_rsrc_plan_directives;

○ Pending Area

현재 수행중인 어플리케이션에 영향을 주지 않고 플랜을 만들거나 변경하거나 삭제할 수 있도록 하는 staging area. pending area에서 변경을 한 뒤에는 변경사항을 데이터사전에 적용하기 위해서 pending arear를validate하고 submit해야 함(pending area 없이 플랜을 생성하거나 변경, 삭제 하는 경우 에러 메시지 리턴).

clear_pending_area 프로시져를 통해 pending area로부터 모든 변경사항을 비우고, pending area를 비활성화시킬 수 있으며, 해당 프로시져 다음에는 반드시 다른 변경 시도를 위해서 pending area를 생성해야 함.

○ DBMS_SCHEDULER 패키지

PL/SQL 프로그램에서 호출될 수 있는 스케쥴링 프로시져 패키지. subprogram 중 window를 통해 플랜들을 각각 다른 시간에 자동으로 활성화되게 할 수 있음.

- CREATE_WINDOW Procedure 사용법:

DBMS_SCHEDULER.CREATE_WINDOW (

window_name IN VARCHAR2(윈도우 ),

resource_plan   IN VARCHAR2(리소스 플랜명),

start_date    IN TIMESTAMP WITH TIME ZONE DEFAULT NULL(시작시간),

repeat_interval IN VARCHAR2(반복 간격, Calendaring Syntax 작성),

end_date      IN TIMESTAMP WITH TIME ZONE DEFAULT NULL(종료 시간),

duration   IN INTERVAL DAY TO SECOND(지속시간, numtodsinterval 설정),

window_priority IN VARCHAR2( window 겹칠 우선순위) DEFAULT 'LOW',

comments      IN VARCHAR2              DEFAULT NULL);

* Calendaring Syntax:

(http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm#BABFBCEF)

* numtodsinterval: numtodsinterval(n, 'interval unit') 형태로 사용

'interval unit'에는 'DAY', 'HOUR', 'MINUTE', 'SECOND' 가능

- DROP_WINDOW Procedure 사용법:

DBMS_SCHEDULER.DROP_WINDOW (

window_name IN VARCHAR2(윈도우 ),

force           IN BOOLEAN(윈도우 활성에 관계없이 실행 여부) DEFAULT FALSE);

* 윈도우 정보 보는 법

  - Viewing window and resource plan information:

select * from dba_schedular_windows;

'DB' 카테고리의 다른 글

DataWarehouse 란?  (0) 2019.03.07
파티셔닝  (0) 2019.02.09
PL/SQL 조건, 반복 제어문  (0) 2017.08.05
PL/SQL 구조와 변수  (0) 2017.08.03
PL/SQL 시작하기  (0) 2017.07.18
:
Posted by SK
2019. 2. 9. 23:21

파티셔닝 DB2019. 2. 9. 23:21

□ 파티셔닝(Partitioning)

○ 개요

하나의 테이블이나 인덱스를 동일한 논리적 속성을 가진 여러 단위로 나누어 각각이 별도의 물리적 속성을 갖게 하는 것

○ 장점

- 데이터 접근시 스캔 범위를 줄여 성능 향상

- 데이터 훼손 가능성 저하 및 데이터 가용성 향상

- 각 파티션별 백업 및 복구작업 가능

- 테이블 파티션 단위로 디스크 I/O를 분산하여 부하 저하

○ 파티셔닝 종류(오라클 기준)

- 레인지 파티셔닝(Range Partitioning)

· 특정 컬럼 값을 기준으로 분할

· 주로 순차적인 데이터(historical data)를 관리하는 테이블에 사용

 ex) '가입계약관리' 테이블에서는 통상 최근 1~2년치만 접근

· 각 범위에 따라 데이터 분포도가 일정치 않음

· DDL 스크립트

CREATE TABLE TEST_TABLE

(I_YYYYMMDD VARCHAR2(8), I_CUSTOMER VARCHAR2(9), …… )

TABLESPACE TBS1

STORAGE (INITIAL 2M NEXT 2M PCTINCREASE 0)

PARTITION BY RANGE (I_YYYYMMDD)  <- 파티셔닝 컬럼(16개 까지 지정 가능)

(PARTITION PAR_200307 VALUES LESS THAN (‘20030801’),

PARTITION PAR_200308 VALUES LESS THAN (‘20030901’), …… )

- 해시 파티셔닝(Hash Partitioning)

· 특정 컬럼 값에 해시 함수를 적용해 분할(데이터 관리보다 성능향상에 중점)

· 분포도를 정의하기 어려운 테이블을 파티셔닝할 때 많이 사용(균등한 분포도를 가질 수 있도록 조율, 주로 2의 배수로 파티셔닝)

· 해시 파티셔닝으로 구분된 파티션들은 동일한 논리, 물리 속성을 가지며 파티션에 지정된 값들을 DMBS가 결정하기때문에 각 파티션에 어떤 값이 들어있는지 알 수 없음

· DDL 스크립트

CREATE TABLE TEST_TALBE

( SERIAL NUMBER, CODE VARCHAR2(4), ……)

TABLESPACE TBS1

STORAGE (INITIAL 2M NEXT 2M PCTINCREASE 0)

PARTITION BY HASH(SERIAL)

(PARTITION PAR_HASH_1 TABLESPACE TBS2,

PARTITION PAR_HASH_2 TABLESPACE TBS3, ……)

- 리스트 파티셔닝(List Partitioning)

· 특정 컬럼의 특정 값을 기준으로 파티셔닝

· 주로 이질적인 값이 많지 않고 분포도가 비슷하며 해당 컬럼의 조건이 많이 들어오는 경우에 사용

 ex) '서비스 계약' 테이블에서 서비스 가입 대리점을 A, 서비스 변경 대리점을 B라고 할 때, 모든 서비스 처리 데이터에는 대리점 타입이 두 가지 존재하고 대부분 조회 패턴에는 두 대리점을 구분하는 값이 주어지게 됨

· DDL 스크립트

CREATE TABLE SERVICE_CONTRACT

(I_YYYYMMDD VARCHAR2(8), I_CUSTOMER VARCHAR2(6),

I_DLR_IND VARCHAR2(2), I_DEALER VARCHAR2(6), …….)

TABLESPACE TBS1

STORAGE (INITIAL 2M NEXT 2M PCTINCREASE 0)

PARTITION BY LIST (I_DLR_IND)

(PARTITION PAR_A VALUES (‘A’), PARTITION PAR_S VALUES (‘S’))

- 레인지-해시 컴포지트 파티셔닝(Range-Hash Composite Partitioning)

· 레인지 방식으로 데이터를 파티셔닝하고 각 파티션 내에서 해시 방식으로 서브 파티셔닝을 적용하는 방식 → 서브 파티션이 독립된 세그먼트가 되는 것이 특징

· 레인지 파티셔닝으로 관리와 성능 이슈 향상, 해쉬 파티셔닝으로 데이터 균등 배치와 병렬화, 서브 파티션에 특정 테이블 스페이스 지정가능, 서브 파티션별 풀 스캔을 할 수 있어 스캔 범위 줄이는 효과

· DDL 스크립트

CREATE TABE TB_RANGE_HASH

(I_YYYYMMDD VARCHAR2(8), I_SERIAL NUMBER, SALE_PRICE NUMBER, ……)

TABLESPACE TBS1

STORAGE (INITIAL 2M NEXT 2M PCTINCREASE 0)

PARTITION BY RANGE (I_YYYYMMDD)

SUBPARTITION BY HASH (I_SERIAL)

(PARTITION SALES_1997 VALUES LESS THAN (‘19980101’)

(SUBPARTITION SALES_1997_Q1 TABLESPACE TBS2,

SUBPARTITION SALES_1997_Q2 TABLESPACE TBS3), ……)

'DB' 카테고리의 다른 글

DataWarehouse 란?  (0) 2019.03.07
Resource Manager  (0) 2019.02.09
PL/SQL 조건, 반복 제어문  (0) 2017.08.05
PL/SQL 구조와 변수  (0) 2017.08.03
PL/SQL 시작하기  (0) 2017.07.18
:
Posted by SK
2019. 1. 28. 22:04

멀티캐스트 네트워크2019. 1. 28. 22:04

운영 중인 시스템 서버 / 스위치 등 장비 교체후  멀티캐스트 통신이 안되는 문제가 발생했다. 문제는 멀티캐스트의 일부 대역대를 스위치 장비에서 해당 제조사의 기능활용을 위해 예약해두어서 발생했다. 해당 기능 설정을 off하고 정상화했다. 문제해결하는 김에 멀티캐스트가 무엇인지 정리했다.


Multicast란?


○ 정의

Multicast group에 소속된 특정 다수에게 데이터를 전송하는 기법


○ 특징

- Multicast group 단위로 묶어 해당 그룹 host들은 동시에 데이터 수신

- UDP 사용(신뢰성 보장 x)

- Client에서 Multicast를 사용하는 어플리케이션을 시작하면 Multicast IP 주소와 Multicast MAC 주소를 라우터에 등록하여 Multicast group에 등록

- 하나의 Client에서 여러 Multicast 주소를 수용 가능

 (여러 Multicast 데이터 수신 가능)

- Server가 Multicast 주소로 데이터 전송 중에 있을 경우,

 중간에 Client가 끼어들어도 처음부터 데이터를 받을 수 없고

 중간부터 받게 됨


○ IP 주소체계(D class IP주소)

224.0.0.0 ~ 224.0.0.255

IETF에서 관리용으로 사용되는 대역 (RIP, EIGRP, OSPF 등)

224.0.1.0 ~ 238.255.255.255

실제 인터넷에서 Multicast를 사용한 기관이나 기업에게 할당

232.0.0.0 ~ 232.255.255.255

PIM 기술을 위해 사용하는 대역

233.0.0.0 ~ 233.255.255.255

하나의 AS 내에 전파를 원할 때 사용하는 대역

239.0.0.0 ~ 239.255.255.255

기관이나 기업 내부에서 사용할 수 있는 사설 Multicast 주소

* 224.0.0.1 : 현재 서브넷에 존재하는 Mulicast가 가능한 모든 host를 지칭

* 224.0.0.2 : 현재 서브넷에 존재하는 Multicast가 가능한 모든 라우터를 지칭


○ 프로토콜

어떤 장비와 Multicast 정보를 교환하느냐에 따라 프로토콜 구분

- IGMP: host와 라우터 간

- CGMP, IGMP Snooping: 라우터와 스위치간

- Multicasting Routing Protocol: 라우터와 라우터간


○ Unicast / Broadcast / Multicast 차이

- Unicast: 하나의 송신자가 다른 하나의 수신자로 데이터를 전송하는 방식 (일반적인 인터넷 응용프로그램이 채택)

- Broadcast: 하나의 송신자가 같은 서브네트워크 상의 모든 수신자에게 데이터를 전송하는 방식

- Multicast: 하나 이상의 송신자들이 특정한 하나 이상의 수신자들에게 데이터를 전송하는 방식(인터넷 화상 회의 등)

 => 다중 수신자에게 동일한 데이터를 전송할 경우 유니캐스트 사용시 데이터패킷을 다수 사용자에게 여러 번 전송하기 때문에 회선부담, 브로드캐스트 사용시 하나의 트래픽으로 보내지만 No Reciever 입장에서는 불필요 트래픽 수신


(참고: http://www.terms.co.kr/multicast.htm

http://unabated.tistory.com/entry/Multicast-1-%EA%B8%B0%EB%B3%B8-%EC%9D%B4%EB%A1%A0

https://wiki.kldp.org/wiki.php/LinuxdocSgml/Multicast-HOWTO)

'네트워크' 카테고리의 다른 글

Routing  (0) 2017.05.06
어드레스 클래스  (0) 2017.04.14
TTL / IPv4, I.Pv6  (0) 2017.04.01
Port  (0) 2017.03.11
MIME  (0) 2017.02.26
:
Posted by SK