반응형
반응형
반응형

// replication 생성.
create replication [replication_name] with '[remote_ip]', [remote_port]
from [user.local_table_1] to [user.remote_table_1],
...
from [user.local_table_N] to [user.remote_table_N];


// replication host 추가.
ALTER REPLICATION [replication_name] ADD HOST ‘[remote2_ip]‘, [remote2_port];


// 등록된 호스트 개수, 이중화 테이블 개수 등 이중화 관련 정보
iSQL> SET VERTICAL ON;
iSQL> SELECT * FROM system_.sys_replications_;
REPLICATION_NAME         : REP1  
LAST_USED_HOST_NO        : 23                        // 마지막 Replication host_no
HOST_COUNT               : 2                         // Replication Host 갯수.
IS_STARTED               : 1 
XSN                      : 14919526761 
ITEM_COUNT               : 321                       // Replication Item 갯수.
CONFLICT_RESOLUTION      : 0 
REPL_MODE                : 0 
ROLE                     : 0 
OPTIONS                  : 0 
INVALID_RECOVERY         : 0 
REMOTE_FAULT_DETECT_TIME : 08-JUL-2021 
GIVE_UP_TIME             :  
GIVE_UP_XSN              :  
PARALLEL_APPLIER_COUNT   : 0

1 row selected.


// 원격 서버에 관련된 정보
iSQL> SET VERTICAL OFF;
iSQL> set colsize 15
iSQL> SELECT * FROM system_.sys_repl_hosts_;
HOST_NO     REPLICATION_NAME                HOST_IP                         PORT_NO     
---------------------------------------------------------------------------------------------
23          REP1                            10.1.3.2                        30300       
65          REP1                            10.1.4.2                        30300
2 rows selected.


// 이중화 송신 쓰레드 상태 확인.(active thread 정보)
iSQL> set colsize 15
iSQL> SELECT rep_name, status, net_error_flag, sender_ip, sender_port, peer_ip, peer_port FROM V$REPSENDER;
REP_NAME         STATUS               NET_ERROR_FLAG       SENDER_IP        SENDER_PORT PEER_IP          PEER_PORT   
-----------------------------------------------------------------------------------------------------------------------------
REP1             1                    0                    10.1.3.1         46268       10.1.3.2         30300       
1 row selected.



// Replication 테이블 정보.
iSQL> set colsize 25
iSQL> SELECT REPLICATION_NAME,LOCAL_USER_NAME, LOCAL_TABLE_NAME from SYSTEM_.SYS_REPL_ITEMS_;
...
321 rows selected.

반응형
반응형
반응형
반응형

 

-- 컬림 추가.

ALTER TABLE TEST_TB ADD COLUMN (update_time date);

 

-- 데이터 타입 변경.

ALTER TABLE TEST_TB MODIFY COLUMN (update_time varchar(10) NOT NULL);

 

-- default 설정 추가.

ALTER TABLE TEST_TB ALTER (update_time SET DEFAULT '1');

 

-- default 설정 삭제.

ALTER TABLE TEST_TB ALTER (update_time DROP DEFAULT);

 

-- 컬럼 이름 변경.

ALTER TABLE TEST_TB RENAME COLUMN update_time TO test_var;

 

-- 컬럼 삭제.

ALTER TABLE TEST_TB DROP COLUMN test_var;

 

반응형
반응형

# altibase 계정으로 접속.


# 서버 구동.

$ cd $ALTIBASE_HOME/bin

$ ./server start



# 관리가 계정으로 접속

$ isql -s 127.0.0.1 -u sys -p manager


# 사용자 비번 변경.

iSQL> alter user web identified by user_name;



반응형
반응형


// sysdba 로그인

$ is


// 메모리 table 인지 disk table 인지 확인

// table space 에서 확인 가능

isql> desc tb_name

TABLESPACE : SYS_TBS_MEMORY



// 남은 메모리 확인

isql> select mem_free_page_count from v$database;


// 할당된 메모리 확인

isql> select mem_max_db_size from v$database;




-------------------------------

---- 할당 메모리 크기 수정 ----

-------------------------------


// altibase 계정으로 접속

su - altibase


// config 파일 수정

vi altibase_home/conf/altibase.properties


// 해당 부분 수정

MEM_MAX_DB_SIZE


반응형

'Database > Altibase' 카테고리의 다른 글

[Altibase] alter table 컬럼 변경.  (2) 2019.10.29
[altibase] 구동 및 사용자 비번 변경.  (0) 2014.03.24
[altibase] 테이블스페이스 관리.  (0) 2014.03.24
[altibase] lock 걸린 쿼리 확인.  (0) 2014.03.24
altibase export  (3) 2014.03.24
반응형

# Altibase 버전

$ altibase -v



# tablespace 생성

iSQL> create tablespace 테이블스페이스명 datafile '파일명(tbs_users01.dbf)' size 10M autoextend on next 1M maxsize 100M;



# memory tablespace 사용량을 조회

iSQL> select 'MEM TOTAL SIZE' tablespace_name, round(MEM_MAX_DB_SIZE/1024/1024)  as 'max size(M)'   ,

round((MEM_MAX_DB_SIZE - MEM_ALLOC_PAGE_COUNT*32*1024)/1024/1024) as 'free size(MB)',

round(MEM_ALLOC_PAGE_COUNT*32*1024/1024/1024)  as 'alloc size(MB)',

round((MEM_MAX_DB_SIZE - MEM_ALLOC_PAGE_COUNT*32*1024)/MEM_MAX_DB_SIZE*100, 2) as 'free %'

from v$database

union all

select SPACE_NAME tablespace_name, 

case2(space_id =1, 0, round(case2(MAXSIZE=0,CURRENT_SIZE,MAXSIZE)/1024/1024)) as 'total size(MB)',

case2(space_id =1, 0, trunc((case2(MAXSIZE=0,CURRENT_SIZE,MAXSIZE) - CURRENT_SIZE)/1024/1024)) as 'free size(MB)',

round(ALLOC_PAGE_COUNT*32*1024/1024/1024)  as 'alloc size(MB)',

case2(space_id =1, 0, trunc((case2(MAXSIZE=0,CURRENT_SIZE,MAXSIZE) - CURRENT_SIZE)/case2(MAXSIZE=0,CURRENT_SIZE,MAXSIZE)*100,2)) 'free %'

from  v$mem_tablespaces

where SPACE_ID <> 0;



# user memory tablespace 사용량

# current_size 는 '테이블스페이스의 현재 크기' : 100M 의 테이블스페이스를 만들었다면  current_size는 100M

# 테이블스페이스의 실 사용량 : (ALLOC_PAGE_COUNT - FREE_PAGE_COUNT)*32/1024 (MB)

iSQL> SELECT 

UF.SPACE_NAME SPACENAME, 

ROUND(UF.MAXSIZE/1024/1024, 3)||' MB' MAXSIZE , 

ROUND(UF.ALLOC_PAGE_COUNT*32/1024, 3)||' MB' CURRSIZE, 

NVL(to_char(ROUND((UF.ALLOC_PAGE_COUNT - UF.FREE_PAGE_COUNT)*32/1024,3)),'N/A')||' MB' USEDSIZE, 

ROUND((UF.ALLOC_PAGE_COUNT-UF.FREE_PAGE_COUNT) / UF.ALLOC_PAGE_COUNT * 100, 3) ||' %' USAGE 

FROM 

V$MEM_TABLESPACES UF




# 메모리 테이블 스페이스에 속한 인덱스의 사용율

iSQL> SELECT  C.USER_NAME index_owner,

        E.INDEX_NAME index_name,

        case2(E.INDEX_TYPE=1,'B-TREE', E.INDEX_TYPE=2,'R-TREE') INDEX_TYPE

        , '(Memory)'||'16 bytes * ROWCOUNT ' 'allocate(M)'

        , table_name

FROM X$INDEX B,

     SYSTEM_.SYS_USERS_ C,

     V$MEM_TABLESPACES D,

     SYSTEM_.SYS_INDICES_ E,

     SYSTEM_.SYS_TABLES_ F

WHERE B.INDEX_ID = E.INDEX_ID

  AND E.USER_ID = C.USER_ID

  AND F.USER_ID = E.USER_ID

  AND F.TBS_ID = D.SPACE_ID

  AND F.TABLE_OID = B.TABLE_OID

  and c.user_id <> 1;



# 메모리 테이블 스페이스에 속한 테이블의 사용율

iSQL> SELECT USER_NAME table_owner, TABLE_NAME table_name, ROUND((FIXED_ALLOC_MEM + VAR_ALLOC_MEM)/1024/1024 ) 'allocate(M)', 'MEMORY' as TYPE

FROM SYSTEM_.SYS_TABLES_ A, SYSTEM_.SYS_USERS_ B,

     V$MEMTBL_INFO C

WHERE A.USER_ID = B.USER_ID

  AND A.TABLE_OID = C.TABLE_OID

  AND B.USER_ID <> 1

  AND TABLE_TYPE = 'T';




# 메모리 테이블 스페이스 크기 변경

-----------------------------------------------------------------

$ altibase_home/conf/altibase.properties

MEM_MAX_DB_SIZE 값 설정


$ server restart

iSQL> select name, value1 from v$property where name like '%MEM_MAX%';

-----------------------------------------------------------------


# Disk 테이블 스페이스 크기 변경.

iSQL> select id, name from v$tablespaces;

iSQL> select spaceid, name from v$datafiles;

iSQL> alter tablespace tbsname alter datafile 'datafile path' size 10G;





============================ 테이블 스페이스 확인 및 추가 =============================

iSQL> set linesize 300

iSQL> set colsize 50



used size 가 alloc size 보다 작은데 table space full 에러가 발생하는 이유.

 - 특정 테이블이 allocation 을 잡아놓고 free 해놓아서 그 테이블만의 공간으로 할당되어 있어서.




----------------------------------------------------------

############ 테이블 별 table space 사용 내역. ############

----------------------------------------------------------


select d.user_name||'.'||c.table_name as NAME,

a.name as tablespace_name ,

sum(a.a_EXTENT_PAGE_COUNT*a.page_size*b.EXTENT_TOTAL_COUNT)/1024/1024||' MB'  as allocSize,

sum(a.a_EXTENT_PAGE_COUNT*a.page_size*b.EXTENT_FULL_COUNT)/1024/1024||' MB'  as usage

from v$tablespaces a, v$segment b, system_.sys_tables_ c, system_.sys_users_ d 

where a.id = b.space_id 

and c.table_oid = b.table_oid 

and c.user_id=d.user_id 

group by a.name, name, d.user_name||'.'||c.table_name order by NAME asc;




------------------------------------------------

############ table space 파일 내역. ############

------------------------------------------------


select ID, NAME, MAXSIZE, CURRSIZE, AUTOEXTEND, STATE from v$datafiles;




------------------------------------------------

############ table space 사용 내역. ############

------------------------------------------------


select a.name, a.TOTAL_PAGE_COUNT*8/1024||' MB' as MAXSIZE,

sum(a.a_EXTENT_PAGE_COUNT*a.page_size*b.EXTENT_TOTAL_COUNT)/1024/1024||'MB'  as allocSize,

sum(a.a_EXTENT_PAGE_COUNT*a.page_size*b.EXTENT_FULL_COUNT)/1024/1024||'MB'  as usage 

from v$tablespaces a, v$segment b, system_.sys_tables_ c, system_.sys_users_ d 

where a.id = b.space_id and c.table_oid = b.table_oid and c.user_id=d.user_id group by a.name, a.TOTAL_PAGE_COUNT*8/1024;




------------------------------------------------

############ table space 파일 추가. ############

------------------------------------------------


alter tablespace tbs_data add datafile '/DATA/altibase/dbs/tbs_data_10.dbf' size 2G autoextend off;



autoextend off

 - 데이터들이 insert 될 때마다 , OS 에다가 파일에 대한 exetend 를

   요청하게 되면 , 그 extend 를 받아 오기 위한 i/o 및 부하가 발생을 해서

   성능이 지연되는 현상이 발생할 수 잇어요

   그래서 데이터 파일은 미리 2G 를 만들어 놓고 내부적으로 사용하는게 좋습니다. 


DB2 에도 추가.

 - 테이블 create , index create 등의 스키마(DDL) 작업은 이중화 안됩니다





--------------------------------------------------

############ 메모리 table space 확인. ############

--------------------------------------------------


select 

trunc(mem_max_db_size/1024, 2) as max_mem_kb,

trunc(mem_alloc_page_count*32, 2) as alloc_mem_kb,

trunc(mem_free_page_count*32, 2) as free_mem_kb 

from v$database;




4.3.9 는 메모리테이블 스페이스가 하나밖에 없음.

MEM_DB_MAX_SIZE : DB 내부 프로퍼티로 데이터 사용 제한 값.

메모리 테이블 스페이스가 부족하면 해당 프로퍼티를 수정하고 재구동.

 - /home1/altibase/altibase_home/conf/altibase.properties



반응형
반응형

쿼리 타임 아웃 발생.

 - lock 걸린 테이블, 쿼리 확인 하는 방법.




############ ADMIN 접속.

#######################


[altibase@db1 ~]$ is




############ timeout 설정 확인.

##############################


iSQL> select name, value1 from v$property where name like '%TIMEOUT%';

QUERY_TIMEOUT                   600  



############ LOCK 걸려있는 테이블 확인.

######################################


iSQL> select * from v$lock;

TABLE_OID            TRANS_ID             LOCK_DESC                       LOCK_CNT    IS_GRANT             

-----------------------------------------------------------------------------------------------------------------

9964328              3724279844           IS_LOCK                         1           1                    

9978448              2457200667           IX_LOCK                         1           1                    

9981272              3724279844           IS_LOCK                         1           1   




iSQL> select TABLE_NAME from system_.sys_tables_ where TABLE_OID in (select TABLE_OID from v$lock);

TABLE_NAME                      

----------------------------------

XXX_GENERAL                     

XXX_RESULT_CONTENTS             

XXX_SPAM                        

3 rows selected.




############ LOCK 걸린 쿼리 확인.

#################################


iSQL> select QUERY, SESSION_ID from v$statement where tx_id in (select TRANS_ID from v$lock);

QUERY                                               SESSION_ID           

----------------------------------------------------------------------------

SELECT *  FROM   XXX_GENERAL        LEFT OUTER JOI  6381588              

N XXX_PAMS ON RECIPIENT_ADDRESS = TEL WHERE  (RESE                       

RVE_TRANS_TIME IS NULL OR RESERVE_TRANS_TIME < SYS                       

DATE )        AND (STATUS_TYPE = '00'                                    

OR STATUS_CHANGE_DATE < (SYSDATE-(TRUNC(10)/24/60)                       

)            )                                                           

UPDATE XXX_RESULT_CONTENTS SET    CONTENT_SIZE = ?  6381588              

  WHERE  CONTENT_ORGIN_NAME = ?                                          

2 rows selected.



############ 주의) 해당 쿼리 종료.

#################################

alter database mydb session close 세션id

반응형
반응형

// 데이터베이스 구조 추출

# aexport -s 127.0.0.1 -u iscp -p iscp1


// 데이터 추출

# sh run_il_out.sh


// 대상 데이터베이스에 데이터베이스 구조 생성

# sh run_is.sh


// 대상 데이터베이스에 데이터 로딩

# sh run_il_in.sh


// 대상 데이터베이스에 인덱스 및 외래키 생성

# sh run_is_index.sh

# sh run_is_fk.sh


iSQL> create tablespace my_test_tbspace datafile 'my_test.dbf' size 100M autoextend on next 5M;

iSQL> create user my_test identified by myt1 default tablespace my_test_tbspace;

iSQL> grant all privileges to my_test;


/home/altibase/altibase_home/bin server start


반응형
반응형

환경 변수
 - ALTIBASE_NLS_USE : 데이터 검색 시, 사용자에게 보여주는 문자 셋


알티베이스DB에서 사용하는 캐릭터셋 확인 방법
 - 5.x 버전 : v$nls_parameters 뷰의 NLS_CHARACTERSET
 - 4.x 버전 : select name, value1 from v$property where name like 'NLS_USE';


ClassName
 - 4.x 버전(Altibase.jar) : Altibase.jdbc.driver.AltibaseDriver
 - 5.x 버전(Altibase5.jar) : Altibase5.jdbc.driver.AltibaseDriver


URL(공통)
 - jdbc:Altibase://ip:20300/mydb?encoding=KO16KSC5601
 - encoding=UTF8, US7ASCII, KO16KSC5601, MS949 가능.

반응형

+ Recent posts