Lock 잡고 있는 세션을 강제로 종료하는 방법입니다.
sys 계정으로 접속하셔서 수행하셔야 합니다.
1. v$lock 에서 table 이름과 transaction ID, lock 종류를 확인한다.
Select a.table_name, b.trans_id, b.lock_desc
From system_.sys_tables_ a, v$lock b
Where a.table_oid = b.table_oid;
2. 위에서 얻은 trans_id 를 이용하여 session 을 찾는다.
Select session_id, execute_flag, total_time, execute_time, rpad(query,400)
From v$statement
Where tx_id = 위에서 얻은 trans_id;
3. session_id 를 이용하여 session 정보를 확인한다.
Select comm_name, client_app_info
From v$session
Where id = 위에서 얻은 session_id;
4. session 을 끊는다.
Alter database mydb session close session_id;
mydb 는 database name 으로 $ALTIBASE_HOME/conf/altibase.properties 파일을 열어보면
DB_NAME 항목설정으로 확인하시면 됩니다.
Session_id 는 물론 위에서 획득한 session_id 를 주시면 되구요.
위의 v$ 뷰라든가 system_ meta table 의 컬럼에 대한 정보는 저희 A5 admin 매뉴얼을 보시면 잘 나와있습니다.
감사합니다.
2014년 6월 20일 금요일
2014년 5월 28일 수요일
[altibase]execute altibase procedure every 1 minute using crontab
export ALTIBASE_HOME='/altibase/altibase_home' export PATH=./:$PATH
ISQL="/altibase/altibase_home/bin/isql -s localhost -u user-p pass-port 20300" ${ISQL} << EOF exec PROC_NAME; quit EOF
2014년 5월 26일 월요일
[altibase]create partition table
- CREATE TABLE
CREATE TABLE TESTADM.TB_TEST_PART
(
SEQ NUMBER(13) NOT NULL,
NAME VARCHAR(20),
AGE VARCHAR(20),
--PARTITION_ID SMALLINT DEFAULT MOD(DATEDIFF(TO_DATE('20140501','YYYYMMDD'),SYSDATE,'MONTH'),60) NOT NULL
PARTITION_ID SMALLINT DEFAULT MOD(DATEDIFF(TO_DATE('20140525','YYYYMMDD'),SYSDATE,'DAY'),14) NOT NULL
)
PARTITION BY RANGE (PARTITION_ID)
(
PARTITION P_00 VALUES LESS THAN ( 1 ),
PARTITION P_01 VALUES LESS THAN ( 2 ),
PARTITION P_02 VALUES LESS THAN ( 3 ),
PARTITION P_03 VALUES LESS THAN ( 4 ),
PARTITION P_04 VALUES LESS THAN ( 5 ),
PARTITION P_05 VALUES LESS THAN ( 6 ),
PARTITION P_06 VALUES LESS THAN ( 7 ),
PARTITION P_07 VALUES LESS THAN ( 8 ),
PARTITION P_08 VALUES LESS THAN ( 9 ),
PARTITION P_09 VALUES LESS THAN ( 10 ),
PARTITION P_10 VALUES LESS THAN ( 11 ),
PARTITION P_11 VALUES LESS THAN ( 12 ),
PARTITION P_12 VALUES LESS THAN ( 13 ),
PARTITION P_13 VALUES LESS THAN ( 14 ),
PARTITION P_DEF VALUES DEFAULT
)
TABLESPACE TS_TEST_DISK_DAT
;
- CREATE PK
ALTER TABLE TESTADM.TB_TEST_PART add constraint PK_TB_TEST_PART primary key(PARTITION_ID, SEQ) using index local
(
partition PK_TB_TEST_PART_P_00 on P_00 tablespace TS_TEST_DISK_IDX,
partition PK_TB_TEST_PART_P_01 on P_01 tablespace TS_TEST_DISK_IDX,
partition PK_TB_TEST_PART_P_02 on P_02 tablespace TS_TEST_DISK_IDX,
partition PK_TB_TEST_PART_P_03 on P_03 tablespace TS_TEST_DISK_IDX,
partition PK_TB_TEST_PART_P_04 on P_04 tablespace TS_TEST_DISK_IDX,
partition PK_TB_TEST_PART_P_05 on P_05 tablespace TS_TEST_DISK_IDX,
partition PK_TB_TEST_PART_P_06 on P_06 tablespace TS_TEST_DISK_IDX,
partition PK_TB_TEST_PART_P_07 on P_07 tablespace TS_TEST_DISK_IDX,
partition PK_TB_TEST_PART_P_08 on P_08 tablespace TS_TEST_DISK_IDX,
partition PK_TB_TEST_PART_P_09 on P_09 tablespace TS_TEST_DISK_IDX,
partition PK_TB_TEST_PART_P_10 on P_10 tablespace TS_TEST_DISK_IDX,
partition PK_TB_TEST_PART_P_11 on P_11 tablespace TS_TEST_DISK_IDX,
partition PK_TB_TEST_PART_P_12 on P_DEF tablespace TS_TEST_DISK_IDX
);
- CREATE SEQUENCE
CREATE SEQUENCE SEQ_TEST
START WITH 1
MINVALUE 1
MAXVALUE 9223372036854775806;
- INSERT TEST DATA
insert into TB_TEST_PART (seq, name, age)
select seq_test.nextval, 'aa', '33' from dual
CONNECT BY LEVEL <= 100
;
- RETRIEVE DATE USING SPEC. PARTITION TABLE
SELECT * FROM TB_TEST_PART PARTITION (P_01); -->
- RETRIEVE DATE USING SPEC PARTITION TABLE WITH WHERE CLAUSE
SELECT * FROM TB_TEST_PART
WHERE PARTITION_ID IN ('1','2')
2014년 5월 14일 수요일
[altibase]character set
--캐릭터 셋 확인
select * from v$nls_parameters
환경 변수
- ALTIBASE_NLS_USE : 데이터 검색 시, 사용자에게 보여주는 문자 셋
v$nls_parameters
iSQL> select * from v$nls_parameters;
SESSION_ID : 122
NLS_USE : US7ASCII -- 접속 client 캐릭터 셋
NLS_CHARACTERSET : MS949 -- DB 캐릭터 셋
NLS_NCHAR_CHARACTERSET : UTF8 --DB national 캐릭터셋
NLS_COMP : BINARY
NLS_NCHAR_CONV_EXCP : FALSE
NLS_NCHAR_LITERAL_REPLACE : FALSE
select * from v$nls_parameters
환경 변수
- ALTIBASE_NLS_USE : 데이터 검색 시, 사용자에게 보여주는 문자 셋
v$nls_parameters
iSQL> select * from v$nls_parameters;
SESSION_ID : 122
NLS_USE : US7ASCII -- 접속 client 캐릭터 셋
NLS_CHARACTERSET : MS949 -- DB 캐릭터 셋
NLS_NCHAR_CHARACTERSET : UTF8 --DB national 캐릭터셋
NLS_COMP : BINARY
NLS_NCHAR_CONV_EXCP : FALSE
NLS_NCHAR_LITERAL_REPLACE : FALSE
2014년 4월 23일 수요일
[altibase]modify colmnun
UPDATE TEST_TABLE SET COL3='' ALTER TABLE TEST_TABLE MODIFY (COL3 VARCHAR(20) DEFAULT 'TEST');
2014년 4월 10일 목요일
[altibase]create user
- create user
CREATE USER TMPADM IDENTIFIED BY TMPADM DEFAULT TABLESPACE TS_TMP_DISK_DAT ACCESS TS_TMP_DISK_DAT ON ACCESS TS_TMP_DISK_IDX ON ACCESS TS_TMP_MEM_DAT ON;
- grant access to tablespace
alter user TMPADM access TS_TMP_DISK_DAT on; alter user TMPADM access TS_TMP_DISK_IDX on; alter user TMPADM access TS_TMP_MEM_DAT on;
- change user password
ALTER USER TMPADM IDENTIFIED BY 1234;
2014년 4월 9일 수요일
[altibase]db backup using aexport
백업전에 다음을 먼저 수행하여 ./명령어 없이 쉘들이 수행되도록 한다
export PATH=./:$PATH
// 데이터베이스 구조 추출
1. 스크립트 생성
# aexport -s 127.0.0.1 -u iscp -p iscp1 -NLS_USE KO16KSC5601
(환경설정에서 ALTIBASE_NLS_USE을 해주면 뒤에 -NLS_USE옵션은 필요없음)
2. 데이터 추출
# sh run_il_out.sh
======================================================
======================================================
3. 대상 데이터베이스에 데이터베이스 구조 생성
# sh run_is.sh
4. 대상 데이터베이스에 데이터 로딩
# sh run_il_in.sh
5. 대상 데이터베이스에 인덱스 및 외래키 생성
# sh run_is_index.sh
# sh run_is_fk.sh
export ALTIBASE_HOME='/altibase/altibase_home' export PATH=./:$PATH export ALTIBASE_NLS_USE='KO16KSC5601'
- 케릭터셋 조회법
select * from v$nls_parameters
- NLS_USE 데이터베이스 저장 또는 검색시 사용되는 클라이언트 캐릭터 셋이다
(US7ASCII,KO16KSC5601, MS949, BIG5, GB231280,UTF8, SHIFT-JIS, EUC-JP).
생략 시 환경변수 ALTIBASE_NLS_USE, altibase.properties를 차례로 참조하며, 설정되지 않았을 경우에는 기본 캐릭터 셋(US7ASCII)을 사용한다.
즉 다음과 같다
a. NLS_USE 옵션을사용하지않는경우US7ASCII를사용한다.
b. UTF8을쓰는 경우 NLS_USE 옵션을지정해야한다.
우선순위
|
방법
|
1
|
-NLS_USE 옵션
|
2
|
환경변수등록
|
3
|
altibase.properties 파일수정
|
다음은 데이터 백업시 쉘 스크립트에 대한 설명이다
스크립트
|
용도
|
사용구분
|
run_il_out.sh
|
데이터다운로드스크립트
|
백업
|
run_il_in.sh
|
데이터업로드스크립트
|
업로드
|
run_is.sh
|
스키마생성스크립트
|
업로드
|
run_is_fk.sh
|
외래키생성스크립트
|
업로드
|
run_is_index.sh
|
인덱스생성스크립트
|
업로드
|
run_is_repl.sh
|
이중화생성스크립트
|
업로드
|
run_il_out.sh 스크립트만백업절차에서사용하고나머지는업로드절차에서사용된다.
이장의내용은ALTIBASE_버전간_마이그레이션_가이드의내용을정리한것으로보다자세한내용은마이그레이션가이드를참고한다.
1. data migration 전체 절차
data migration의대략적인절차는다음과같다.
1.1. 백업 절차
a. 체크포인트수행
b. 데이터건수확인
c. DB 객체다운로드
d. data 다운로드
e. data 확인
f. altibase_home 백업
1.2. 업로드 절차
a. altibase 설치
b. DB 객체확인
c. DB 객체생성
d. 데이터생성
2. 백업
2.1. 백업디렉터리생성
altibase 데이터를백업해둘디렉터리를생성한다. /user1/altibase의하위디렉터리는가급적피한다. root 밑에만들어사용할것을권장한다.
# mkdir alti_backup
|
2.2. altibase 중지
a) altibase를stop/start 한다.
# server stop
# server start
|
2.3. 체크포인트수행
다음명령으로아직플러쉬되지않은페이지들을디스크에반영한다.
isql> alter system checkpoint;
|
2.4. 데이터건수확인
a. 다음쿼리를통해전체table 목록을확인한다.
isql> select * from tab;
|
b. table 목록을이용하여다음과같은스크립트를만든다
# vi count_source_tb.sql
select count(*) from TABLE_NAME;
select count(*) from table1;
select count(*) from table2;
select count(*) from table3;
…..(중략)
select count(*) from tablen;
|
c. 다음명령을통해각table의데이터count를파일에기록한다.
# is -f count_ source_tb.sql -o count_ source_tb.log
|
2.5. 데이터베이스객체다운로드
a. sys 계정으로aexport를수행한다.
b. sys 계정이아닌사용자 계정으로aexport를수행할경우 사용자 계정으로생성한테이블스키마및데이터만백업된다.
c. sys 계정으로aexport를수행하면 사용자계정에대한password는aexport 수행도중따로물어본다. 그때입력한다.
2.6. 데이터다운로드
a. aexport를수행하면6가지스크립트파일이생성된다.
b. 이중run_il_out.sh 스크립트를수행하여생성된모든데이터를다운로드받는다.
# sh run_il_out.sh
|
2.7. 백업데이터확인
a. 백업받은디렉터리에생성된“테이블명.log” 파일과count_source_tb.log 파일을비교하여전체데이터가백업되었는지확인한다.
2.8. altibase_home 백업
a. server stop 명령으로구동중인altibase를stop 한다.
b. /user1/aitlbase/ 밑의altibase_home 디렉토리의이름을변경하여백업해둔다.
#:/user1/altibase ] mv altibase_home altibase_home_ver4
|
3. 업로드
3.1. 생성할데이터베이스객체확인
a. altibase는일반적으로/user1/altibase/altibase_home에설치한다. 만약다른경로에설치를했다면 ALL_CRT_TBS.sql 스크립트를수정하여경로를변경한다.
# vi ALL_CRT_TBS.sql
..(전략)
DATAFILE '/user1/altibase/altibase_home/dbs/test.dbf'
..(후략)
|
3.2. 데이터베이스객체생성
a. aexport 스크립트에의해생성된run_is.sh 스크립트를이용하여데이터베이스객체를생성한다.
3.3. 데이터생성
a. aexport 스크립트에의해생성된run_il_in.sh 스크립트를이용하여데이터를생성한다.
b. 백업절차시확인해두었던전체데이터건수와run_il_in.sh 스크립트로생성된데이터건수가일치하는지확인한다.
3.4. 기타작업
a. aexport 스크립트에의해생성된다음스크립트를이용하여필요한작업을한다.
run_is_fk.sh
|
외래키생성스크립트
|
run_is_index.sh
|
인덱스생성스크립트
|
run_is_repl.sh
|
이중화생성스크립트
|
4. 주의사항
4.1. 암호화테이블사용불가
a. 데이터를암호화해서넣은경우마이그레이션이불가능하다.
b. 암호화된데이터가있을경우복호화하고, 백업/업로드를수행한뒤, 다시암호화를수행해야한다.
4.2. NLS_USE 지정
a. NLS_USE 옵션을사용하지않는경우US7ASCII를사용한다.
b. UTF8을쓰는 경우 NLS_USE 옵션을지정해야한다.
우선순위
|
방법
|
1
|
-NLS_USE 옵션
|
2
|
환경변수등록
|
3
|
altibase.properties 파일수정
|
4.3. 기타
a. 기타다른주의사항은altibase에서제공하는마이그레이션가이드를참고한다.
피드 구독하기:
글 (Atom)
image