실행 환경:
| 운영체제 버전 | 은하천궁 리눅스 키린10 4.19.90-24.4.v2101.ky10.x86_64 |
| 데이터베이스 버전 | DM Database Server 64 V8 |
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;