ALTER SYSTEM


시스템 단위의 자원을 관리하거나 설정을 변경하는 구문이다.

KILL SESSION

alter_system_kill_session_stmt:

alter_system_kill_session_stmt: 'ALTER SYSTEM KILL SESSION' number

SessionID를 가진 특정 세션을 종료시킨다.

단, SYS 유저만이 구문을 수행할 수 있으며 자기 자신의 세션에 대해서는 KILL할 수 없다.


CANCEL SESSION

alter_system_cancel_session_stmt:

alter_system_cancel_session_stmt ::= 'ALTER SYSTEM CANCEL SESSION' number

SessionID를 가진 특정 세션을 취소시킨다.

접속이 끊어지는 대신 수행중인 동작을 취소하고, 사용자에게 해당 수행이 취소되었다는 에러 코드를 되돌린다. 단, KILL과 마찬가지로 자기 자신이 연결된 세션에 대해서는 취소를 할 수 없다.



목차


CHECK DISK_USAGE

alter_system_check_disk_stmt:


alter_system_check_disk_stmt ::= 'ALTER SYSTEM CHECK DISK_USAGE'

V$STORAGE에서 Log Table의 디스크 사용량을 나타내는 DC_TABLE_FILE_SIZE 의 값을 보정한다.

Process Failure나 Power Failure 발생시 디스크 사용량이 부정확할 수 있다. 이 명령어를 통해서 파일 시스템으로부터 정확한 값을 읽어온다. 하지만 파일 시스템에 상당한 부하를 줄 수 있기 때문에 지양해야 한다.


INSTALL LICENSE

alter_system_install_license_stmt:

alter_system_install_license_stmt ::= 'ALTER SYSTEM INSTALL LICENSE'

라이선스 파일의 기본위치($MACHBASE_HOME/conf/license.dat)에 라이선스 파일을 설치한다.

해당 라이선스가 설치에 적합한지 판별 후 설치된다.

INSTALL LICENSE (PATH)

alter_system_install_license_path_stmt:

alter_system_install_license_path_stmt: ::= 'ALTER SYSTEM INSTALL LICENSE' '=' "'" path "'"

특정 위치에 있는 라이선스 파일을 설치한다.

해당 위치에 존재하지 않거나 올바르지 않은 라이선스 파일을 입력했을 시에는 에러가 발생한다. 경로는 반드시 절대경로로 입력해야 한다. 해당 라이선스가 설치에 적합한지 판별 후 설치된다.

SET

5.6 부터 지원되는 기능입니다.

alter_system_set_stmt:

alter_system_set_stmt ::= 'ALTER SYSTEM SET' prop_name '=' value

System 의 Property 를 수정할 수 있다. 수정 가능한 Property 는 다음과 같다.

  • QUERY_PARALLEL_FACTOR
  • DEFAULT_DATE_FORMAT
  • TRACE_LOG_LEVEL
  • PAGE_CACHE_MAX_SIZE



ALTER SESSION


세션 단위의 자원을 관리하거나 설정을 변경하는 구문이다.

SET SQL_LOGGING

alter_session_sql_logging_stmt:

alter_session_sql_logging_stmt ::= 'ALTER SESSION SET SQL_LOGGING' '=' flag

해당 세션의 Trace Log에 메시지를 남길지 여부를 결정한다.

이 메시지를 Bit Flag 로서 다음의 값을 사용하면 된다.

  • 0x1 : Parsing, Validation, Optimization 단계에서 발생하는 에러를 남긴다.
  • 0x2 : DDL을 수행한 결과를 남긴다.

즉, 해당 플래그의 값이 2일 경우에는 DDL만 로깅하고, 3일 경우에는 에러 및 DDL을 함께 로깅하는 것이다.

아래는 해당 세션의 로깅 플래그를 변경하고, 에러 로깅을 남기는 예제이다.


Mach> alter session set SQL_LOGGING=1;
Altered successfully.
Mach> exit


SET DEFAULT_DATE_FORMAT

alter_session_set_defalut_dateformat_stmt:

alter_session_set_defalut_dateformat_stmt ::= 'ALTER SESSION SET DEFAULT_DATE_FORMAT' '=' date_format

해당 세션의 Datetime 자료형의 기본 포맷을 설정한다.

서버가 구동되면, Property 인 DEFAULT_DATE_FORMAT 의 값이 세션 속성으로 설정이 된다.
Property 의 속성이 바뀌지 않았다면, 세션의 값 또한 "YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn"이 될 것이다.
시스템과 무관하게, 특정 사용자에 한해 Datetime 자료형의 기본 포맷을 수정할 경우에 이 명령어를 사용한다.

v$session 에 해당 세션마다 설정된 Default Date Format 이 있고 확인도 할 수 있다. 아래는 해당 세션의 값을 확인 및 변경하는 예제이다.

Mach> CREATE TABLE time_table (time datetime);
Created successfully.

Mach> SELECT DEFAULT_DATE_FORMAT from v$session;
default_date_format                                                               
-----------------------------------------------
YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn                                                 
[1] row(s) selected.

Mach> INSERT INTO time_table VALUES(TO_DATE('2016-11-11'));
[ERR-00300 : Invalid date format or input string.([2016-11-11]:[%Y-%m-%d %H:%M:%S %0:%1:%2])]

Mach> ALTER SESSION SET DEFAULT_DATE_FORMAT='YYYY-MM-DD';
Altered successfully.

Mach> SELECT DEFAULT_DATE_FORMAT from v$session;

default_date_format                                                               
----------------------------------------------
YYYY-MM-DD                                                                        
[1] row(s) selected.

Mach> INSERT INTO time_table VALUES(TO_DATE('2016-11-11'));
1 row(s) inserted.

Mach> SELECT * FROM time_table;

TIME                               
----------------------------------
2016-11-11

[1] row(s) selected.


SET SHOW_HIDDEN_COLS

alter_session_set_hidden_column_stmt:

alter_session_set_hidden_column_stmt ::= 'ALTER SESSION SET SHOW_HIDDEN_COLS' '=' ( '0' | '1' )

해당 세션의 select 수행시 *로 표현된 컬럼에서 숨은 컬럼 (_arrival_time)을 출력할 것인지를 결정한다.

서버가 구동되면, 전역 프로퍼티인 SHOW_HIDDEN_COLS의 값이 세션 속성으로 0이 설정된다.
만일 사용자가 자기 세션의 기본 동작을 변경하고자 할 경우에는 이 값을 1로 설정하면 된다.

v$session에 해당 세션마다 설정된 SHOW_HIDDEN_COLS 값이 있으며, 확인할 수 있다.

Mach> SELECT * FROM  v$session;
ID                   CLOSED      USER_ID     LOGIN_TIME                      SQL_LOGGING SHOW_HIDDEN_COLS
-----------------------------------------------------------------------------------------------------------------
DEFAULT_DATE_FORMAT                                                               HASH_BUCKET_SIZE
------------------------------------------------------------------------------------------------------
1                    0           1           2015-04-29 17:23:56 248:263:000 3           0
YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn                                                 20011
[1] row(s) selected.                             
Mach> ALTER SESSION SET SHOW_HIDDEN_COLS=1;
Altered successfully.
Mach> SELECT * FROM v$session;
_ARRIVAL_TIME                   ID                   CLOSED      USER_ID     LOGIN_TIME                      SQL_LOGGING
--------------------------------------------------------------------------------------------------------------------------------
SHOW_HIDDEN_COLS DEFAULT_DATE_FORMAT                                                               HASH_BUCKET_SIZE
------------------------------------------------------------------------------------------------------------------------
1970-01-01 09:00:00 000:000:000 1                    0           1           2015-04-29 17:23:56 248:263:000 3
1           YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn                                                 20011
[1] row(s) selected.


SET FEEDBACK_APPEND_ERROR

alter_session_set_feedback_append_err_stmt:

alter_session_set_feedback_append_err_stmt ::= 'ALTER SESSION SET FEEDBACK_APPEND_ERROR' '=' ( '0' | '1' )

해당 세션의 Append 에러 메시지를 Client program으로 보낼 것인지를 설정한다.

에러 메시지는 다음의 값을 사용하면 된다.

  • 0 = 에러 메시지를 보내지 않는다.
  • 1 = 에러 메시지를 보낸다.

아래는 사용 예제이다.

mach> ALTER SESSION SET FEEDBACK_APPEND_ERROR=0;
Altered successfully.


SET HASH_BUCKET_SIZE

alter_session_set_hash_bucket_size_stmt:

alter_session_set_hash_bucket_size_stmt ::= 'ALTER SESSION SET HASH_BUCKET_SIZE' '=' value

해당 세션의 GROUP BY 또는 Distinct 연산을 수행하기 위해서 사용되는 Hash Table의 크기를 설정한다.

이 값을 너무 큰 값으로 설정하면 매 Hash 연산마다 메모리를 많이 사용하게 되며, 너무 작은 값을 지정하면 Hash bucket conflict가 발생하여 질의 성능이 저하될 수 있다.
전체 GROUP의 수 * 1.5 에서 3.0 정도의 값을 지정하는것이 좋다.

Mach> ALTER SESSION SET HASH_BUCKET_SIZE=65536;
Altered successfully.

Mach> SELECT * FROM v$session;
_ARRIVAL_TIME                   ID                   CLOSED      USER_ID     LOGIN_TIME                      SQL_LOGGING
--------------------------------------------------------------------------------------------------------------------------------
SHOW_HIDDEN_COLS DEFAULT_DATE_FORMAT                                                               HASH_BUCKET_SIZE
------------------------------------------------------------------------------------------------------------------------
1970-01-01 09:00:00 000:000:000 1                    0           1           2015-04-29 17:23:56 248:263:000 3
1           YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn                                                 65536
[1] row(s) selected.


SET MAX_QPX_MEM

alter_session_set_max_qpx_mem_stmt:

alter_session_set_max_qpx_mem_stmt ::= 'ALTER SESSION SET MAX_QPX_MEM' '=' value

해당 세션의 하나의 SQL Statement가 GROUP BY, DISTINCT, ORDER BY 연산을 수행할때 사용하는 최대 메모리의 크기를 지정한다.

만약 최대 메모리 이상의 메모리 할당을 시도하면, 시스템은 그 SQL문의 수행을 취소하고 오류로 처리한다.
오류 발생 시 machbase.trc에 해당 질의문을 포함한 에러 코드 및 에러 메시지를 기록한다.

Mach> ALTER SESSION SET MAX_QPX_MEM=1073741824;
Altered successfully.

Mach> SELECT * FROM v$session;
ID                   CLOSED      USER_ID     LOGIN_TIME                      SQL_LOGGING SHOW_HIDDEN_COLS FEEDBACK_APPEND_ERROR
----------------------------------------------------------------------------------------------------------------------------------------
DEFAULT_DATE_FORMAT                                                               HASH_BUCKET_SIZE MAX_QPX_MEM
----------------------------------------------------------------------------------------------------------------------------
324                  0           1           2015-07-14 10:53:46 124:627:000 11          0           0
YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn                                                 20011       1073741824
[1] row(s) selected.
Mach>
  • No labels