다메이8 데이터베이스 파라미터 관리

실행 환경:

운영체제 버전 은하천궁 리눅스 키린10 4.19.90-24.4.v2101.ky10.x86_64
데이터베이스 버전 DM Database Server 64 V8
Oracle 데이터베이스는 nomount 상태로 시작할 때 이니셜라이제이션 파라미터 파일인 spfile(바이너리) 또는 pfile(텍스트)를 읽어들입니다. 이 파일에는 데이터베이스 인스턴스와 관련된 설정 값들이 포함되어 있습니다. 각각의 DM 데이터베이스 생성 시 자동으로 dm.ini 파일이 생성됩니다. 이 파일은 데이터베이스 서버가 시작되기 위해 반드시 필요하며, 다양한 기능 및 성능 옵션을 설정하는 데 사용됩니다. 주요 설정 섹션은 제어 파일 관련, 인스턴스 이름, 메모리, 스레드 등입니다. 기타 파라미터 파일: - dmmal.ini: MAL 시스템 구성 - dmarch.ini: 아카이브 설정 - dm_svc.conf: 클라이언트 구성 - sqllog.ini: SQL 로그 설정

1. 파라미터 유형 분류

파라미터 속성은 총 세 가지로 나뉩니다: 수동, 정적, 동적.

파라미터 속성 설명
수동 (READ ONLY) 동적으로 수정 불가 dm.ini 파일을 직접 수정한 후 재시작해야 적용됨.
정적 (IN FILE) 동적으로 수정 가능 변경 후 재시작 시 반영됨.
동적 (SYS 및 SESSION) 즉시 수정 가능 수정 즉시 효과 발생. 시스템 수준과 세션 수준으로 구분됨. 세션 수준은 현재 및 새 세션에만 영향을 미치며, 기존 세션에는 영향 없음. 시스템 수준은 모든 세션에 영향을 줌.
SQL> select distinct para_type from v$dm_ini;

행 번호   PARA_TYPE
-------- --------
1        READ ONLY
2        SYS
3        IN FILE
4        SESSION

2. 파라미터 확인 방법

2.1 dm.ini 파일 조회

vi, cat, more 등의 시스템 명령어로 dm.ini 파일 내용을 확인할 수 있습니다.

-- 예시: 메모리 관련 파라미터 확인
[dmdba@kylin10 DAMENG]$ cat dm.ini | grep MEMORY
                MAX_OS_MEMORY                   = 100                   #최대 운영체제 메모리 비율
                MEMORY_POOL                     = 500                   #메모리 풀 크기 (메가바이트)
                MEMORY_N_POOLS                  = 1                     #메모리 풀 수
                MEMORY_TARGET                   = 15000                 #메모리 공유 풀 목표 크기 (메가바이트)
                MEMORY_EXTENT_SIZE              = 32                    #메모리 확장 크기 (메가바이트)
                MEMORY_LEAK_CHECK               = 0                     #메모리 풀 누수 체크 플래그
                MEMORY_MAGIC_CHECK              = 1                     #메모리 풀 마법 검사 플래그
                MEMORY_BAK_POOL                 = 4                     #메모리 백업 풀 크기 (메가바이트)
                HUGE_MEMORY_PERCENTAGE          = 50                    #HUGE 버퍼에서 공용 메모리 풀로 할당 가능한 최대 비율
                XBOX_MEMORY_TARGET              = 1024                  #XBOX 시스템의 메모리 타겟 크기 (메가바이트)
                MAX_SESSION_MEMORY              = 0                     #세션당 사용 가능한 최대 메모리 (메가바이트)

2.2 동적 성능 뷰 활용

2.2.1 v$dm_ini 뷰
번호 열 이름 데이터 타입 설명
1 PARA_NAME VARCHAR(128) 파라미터 이름
2 PARA_VALUE VARCHAR(256) 시스템 파라미터 값
3 MIN_VALUE VARCHAR(256) 최소값
4 MAX_VALUE VARCHAR(256) 최대값
5 DEFAULT_VALUE VARCHAR(256) 기본값
6 MPP_CHK CHAR(1) MPP 노드 간 일관성 검사 여부 (Y: 적용, N: 미적용)
7 SESS_VALUE VARCHAR(256) 세션 파라미터 값
8 FILE_VALUE VARCHAR(256) INI 파일 내 파라미터 값
9 DESCRIPTION VARCHAR(256) 파라미터 설명
10 PARA_TYPE VARCHAR(200) 파라미터 유형
11 SYNC_FLAG VARCHAR(16) 파라미터 동기화 필요 여부. 값 의미: - NOT_SYNC: 동기화 없음 - DSC_SYNC: DMDSC 환경에서만 동기화 - DW_SYNC: 일반 마스터-슬레이브/RAFT 마스터-슬레이브에서만 동기화 - DPC_SYNC: DMDPC 환경에서만 동기화 - ALL_SYNC: 모든 환경(마스터-슬레이브, RAFT, DSC, DPC)에서 동기화
12 SYNC_LEVEL VARCHAR(16) 주비 환경에서의 동기화 요구 수준. - NO_SYNC: 동기화 불필요 - CAN_SYNC: 동기화 가능 (반드시 동기화는 아님) - MUST_SYNC: 반드시 주서버와 동기화되어야 함
-- 예시: 버퍼 관련 파라미터 조회
SQL> select * from v$dm_ini where para_name like '%BUFFER%';

행 번호     PARA_NAME           PARA_VALUE MIN_VALUE MAX_VALUE DEFAULT_VALUE MPP_CHK SESS_VALUE
---------- ------------------- ---------- --------- --------- ------------- ------- ----------
           FILE_VALUE DESCRIPTION                                       PARA_TYPE SYNC_FLAG
           ---------- ------------------------------------------------- --------- ---------
           SYNC_LEVEL
           ----------
1          HUGE_BUFFER         80         8         1048576   80            N       80
           80         초기 Huge 버퍼 크기 (메가바이트)             IN FILE   ALL_SYNC
           CAN_SYNC

2          HUGE_BUFFER_POOLS   4          1         512       4             N       4
           4          Huge 버퍼 풀 수                                 IN FILE   ALL_SYNC
           CAN_SYNC
...
2.2.2 v$parameter 뷰
번호 열 이름 데이터 타입 설명
1 ID INTEGER 식별자
2 NAME VARCHAR(80) 파라미터 이름
3 TYPE VARCHAR(200) 파라미터 유형: - READ ONLY: 수동 파라미터, 실행 중 변경 불가 - IN FILE: 정적 파라미터, ini 파일만 수정 가능 - SYS/SESSION: 동적 파라미터, ini 파일과 메모리 모두 수정 가능
4 VALUE VARCHAR(4000) 현재 세션의 값
5 SYS_VALUE VARCHAR(4000) 시스템 전체 값
6 FILE_VALUE VARCHAR(4000) INI 파일 내 값
7 DESCRIPTION VARCHAR(255) 설명
8 DEFAULT_VALUE VARCHAR(256) 기본값
9 ISDEFAULT INTEGER ini 파일 값과 기본값이 동일한지 여부 (1: 동일, 0: 다름)
-- 예시: 버퍼 관련 파라미터 조회
SQL> select * from v$parameter where name like '%BUFFER%';  

행 번호     ID          NAME                TYPE    VALUE SYS_VALUE FILE_VALUE
---------- ----------- ------------------- ------- ----- --------- ----------
           DESCRIPTION                                       DEFAULT_VALUE ISDEFAULT  
           ------------------------------------------------- ------------- -----------
1          21          HUGE_BUFFER         IN FILE 80    80        80
           초기 Huge 버퍼 크기 (메가바이트)             80            1
...

2.3 시스템 함수를 통한 파라미터 조회

2.3.1 정수형 파라미터 값 조회

구문: select SF_GET_PARA_VALUE(scope int, paraname varchar(256));
- scope=1: ini 파일 값 반환
- scope=2: 메모리 내 값 반환

-- 예시: HFS_CACHE_SIZE 파라미터 값 확인
SQL> select SF_GET_PARA_VALUE(1,'HFS_CACHE_SIZE');
행 번호     SF_GET_PARA_VALUE(1,'HFS_CACHE_SIZE')
---------- -------------------------------------
1          160
2.3.2 부동 소수점 파라미터 값 조회

구문: select SF_GET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187));

-- 예시: SEL_RATE_EQU 메모리 값 확인
SQL> select SF_GET_PARA_DOUBLE_VALUE(2,'SEL_RATE_EQU');
행 번호     SF_GET_PARA_DOUBLE_VALUE(2,'SEL_RATE_EQU')
---------- ------------------------------------------
1          2.500000000000000E-02
2.3.3 문자열 파라미터 값 조회

구문: select SF_GET_PARA_STRING_VALUE(scope int, paraname varchar(8187));

-- 예시: SQL_TRACE_MASK 값 확인
SQL> select SF_GET_PARA_STRING_VALUE(1,'SQL_TRACE_MASK');
행 번호     SF_GET_PARA_STRING_VALUE(1,'SQL_TRACE_MASK')
---------- --------------------------------------------
1          1
2.3.4 현재 세션의 세션 수준 파라미터 값 확인

구문: select SF_GET_SESSION_PARA_VALUE(paraname varchar(8187));

-- 예시: USE_HAGR_FLAG 값 확인
SQL> select SF_GET_SESSION_PARA_VALUE('USE_HAGR_FLAG');
행 번호     SF_GET_SESSION_PARA_VALUE('USE_HAGR_FLAG')
---------- ------------------------------------------
1          0

3. 파라미터 수정 방법

3.1 DM 컨솔 도구

그래픽 인터페이스를 통해 컨솔 도구를 열고 인스턴스 파라미터를 직접 확인 및 수정할 수 있습니다. 값 수정 시 저장 버튼을 눌러 적용합니다. 하지만 모든 변경은 정적 방식이며, 동적 파라미터라도 즉시 적용되지 않고 재시작 이후 반영됩니다.

3.2 dm.ini 파일 직접 수정

vi 등 텍스트 편집기를 사용하여 dm.ini 파일을 수정하고, 변경 사항을 적용하기 위해 데이터베이스를 재시작해야 합니다.

3.3 시스템 함수를 통한 수정

3.3.1 정수형 파라미터 수정 (정적/동적)

구문: SP_SET_PARA_VALUE(scope int, paraname varchar(256), value int64);
- scope=1: 메모리와 ini 파일 모두 수정 (동적 파라미터만 가능)
- scope=2: ini 파일만 수정 (정적 및 동적 모두 가능)

-- 예시: HFS_CACHE_SIZE 값을 320으로 설정 (즉시 반영)
SQL> SP_SET_PARA_VALUE(1, 'HFS_CACHE_SIZE', 320);
3.3.2 부동 소수점 파라미터 수정

구문: SP_SET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187), value double);

-- 예시: SEL_RATE_EQU 값을 0.3으로 설정
SQL> SP_SET_PARA_DOUBLE_VALUE(1, 'SEL_RATE_EQU', 0.3);
3.3.3 시스템 파라미터 수정 (정수, 실수, 문자열)

구문: SF_SET_SYSTEM_PARA_VALUE(paraname, value, deferred, scope);
- deferred=0: 즉시 적용 (기본값)
- deferred=1: 지연 적용 (다음 세션부터)
- scope=1: 메모리 및 ini 파일 동시 수정 (동적 전용)
- scope=2: ini 파일만 수정 (정적 및 동적 모두 가능)

-- 예시: ENABLE_DDL_ANY_PRIV를 1로 설정하고 즉시 적용
SQL> select SF_SET_SYSTEM_PARA_VALUE('ENABLE_DDL_ANY_PRIV', 1, 0, 1);
3.3.4 세션 수준 파라미터 수정

해당 세션에만 영향을 주는 설정입니다.

-- 구문: SF_SET_SESSION_PARA_VALUE(paraname, value)
-- 예시: USE_HAGR_FLAG를 1로 설정 (현재 세션만)
SQL> select SF_SET_SESSION_PARA_VALUE('USE_HAGR_FLAG', 1);
3.3.5 세션 수준 파라미터 초기화

세션 설정을 시스템 기본값으로 복원합니다.

-- 구문: SP_RESET_SESSION_PARA_VALUE(paraname)
-- 예시: USE_HAGR_FLAG 초기화
SQL> select SP_RESET_SESSION_PARA_VALUE('USE_HAGR_FLAG');

3.4 ALTER 문을 통한 수정

구문: ALTER SYSTEM SET '파라미터' = 값 [DEFERRED] [MEMORY|BOTH|SPFILE];

  • DEFERRED: 동적 세션 수준 파라미터에만 적용. 지정 시 현재 세션에는 무효, 새로운 세션에만 적용.
  • MEMORY|BOTH|SPFILE: 수정 위치 지정. 기본은 MEMORY. 정적 파라미터는 SPFILE만 가능.
-- 예시: 정적 파라미터 수정
SQL> ALTER SYSTEM SET 'MTAB_MEM_SIZE' = 1200 SPFILE;

세션 파라미터 수정: ALTER SESSION SET '파라미터' = 값 [PURGE];

-- 예시: 현재 세션의 HAGR_HASH_SIZE 변경
SQL> ALTER SESSION SET 'HAGR_HASH_SIZE' = 2000000;

태그: DM8 파라미터 관리 v$dm_ini v$parameter SF_GET_PARA_VALUE

6월 27일 23:30에 게시됨